[Intel-gfx] [CI 7/7] drm/i915: Report whether we have true context isolation
Chris Wilson
chris at chris-wilson.co.uk
Sat Nov 4 18:39:18 UTC 2017
Let userspace know if they can trust that new contexts are created using
HW default values; and avoid inheriting state from existing contexts.
Note: I intend to squash this into the bugfix once we agree on the uabi.
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala at linux.intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
---
drivers/gpu/drm/i915/i915_drv.c | 11 +++++++++++
include/uapi/drm/i915_drm.h | 14 ++++++++++++++
2 files changed, 25 insertions(+)
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 1b440f2b90a5..fa4839bcdd63 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -406,6 +406,17 @@ static int i915_getparam(struct drm_device *dev, void *data,
*/
value = 1;
break;
+ case I915_PARAM_HAS_CONTEXT_ISOLATION:
+ {
+ struct intel_engine_cs *engine;
+ enum intel_engine_id id;
+
+ value = 0;
+ for_each_engine(engine, dev_priv, id)
+ if (engine->default_state)
+ value |= BIT(engine->uabi_class);
+ }
+ break;
case I915_PARAM_SLICE_MASK:
value = INTEL_INFO(dev_priv)->sseu.slice_mask;
if (!value)
diff --git a/include/uapi/drm/i915_drm.h b/include/uapi/drm/i915_drm.h
index 65d06da62599..cce3c7b6a4ab 100644
--- a/include/uapi/drm/i915_drm.h
+++ b/include/uapi/drm/i915_drm.h
@@ -465,6 +465,20 @@ typedef struct drm_i915_irq_wait {
*/
#define I915_PARAM_HAS_EXEC_FENCE_ARRAY 49
+/*
+ * Query whether every context (both per-file default and user created) is
+ * isolated (insofar as HW supports). If this parameter is not true, then
+ * freshly created contexts may inherit values from an existing context,
+ * rather than default HW values. If true, it also ensures (insofar as HW
+ * supports) that all state set by this context will not leak to any other
+ * context.
+ *
+ * As not every engine support contexts, the returned value reports the
+ * support of context isolation for individual engines by returning
+ * a bitmask of each engine class set to true if that class supports isolation.
+ */
+#define I915_PARAM_HAS_CONTEXT_ISOLATION 50
+
typedef struct drm_i915_getparam {
__s32 param;
/*
--
2.15.0
More information about the Intel-gfx
mailing list