[PATCH] save-inhibit

Chris Wilson chris at chris-wilson.co.uk
Sat Jan 18 13:38:17 UTC 2020


---
 drivers/gpu/drm/i915/gt/intel_lrc.c | 22 ++++++++++------------
 1 file changed, 10 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
index 2d6b41e66b16..2fafbcbdeee0 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -234,7 +234,7 @@ static void execlists_init_reg_state(u32 *reg_state,
 				     const struct intel_context *ce,
 				     const struct intel_engine_cs *engine,
 				     const struct intel_ring *ring,
-				     bool close);
+				     unsigned int inhibit);
 static void
 __execlists_update_reg_state(const struct intel_context *ce,
 			     const struct intel_engine_cs *engine);
@@ -1154,7 +1154,7 @@ static void restore_default_state(struct intel_context *ce,
 		       engine->pinned_default_state + LRC_STATE_PN * PAGE_SIZE,
 		       engine->context_size - PAGE_SIZE);
 
-	execlists_init_reg_state(regs, ce, engine, ce->ring, false);
+	execlists_init_reg_state(regs, ce, engine, ce->ring, 0);
 }
 
 static void reset_active(struct i915_request *rq,
@@ -2886,7 +2886,9 @@ static void execlists_context_reset(struct intel_context *ce)
 
 	/* Scrub away the garbage */
 	execlists_init_reg_state(ce->lrc_reg_state,
-				 ce, ce->engine, ce->ring, true);
+				 ce, ce->engine, ce->ring,
+				 CTX_CTRL_ENGINE_CTX_RESTORE_INHIBIT |
+				 CTX_CTRL_ENGINE_CTX_SAVE_INHIBIT);
 	__execlists_update_reg_state(ce, ce->engine);
 
 	ce->lrc_desc |= CTX_DESC_FORCE_RESTORE;
@@ -4342,14 +4344,10 @@ static u32 intel_lr_indirect_ctx_offset(const struct intel_engine_cs *engine)
 static void init_common_reg_state(u32 * const regs,
 				  const struct intel_engine_cs *engine,
 				  const struct intel_ring *ring,
-				  bool inhibit)
+				  unsigned int ctl)
 {
-	u32 ctl;
-
-	ctl = _MASKED_BIT_ENABLE(CTX_CTRL_INHIBIT_SYN_CTX_SWITCH);
+	ctl |= _MASKED_BIT_ENABLE(CTX_CTRL_INHIBIT_SYN_CTX_SWITCH);
 	ctl |= _MASKED_BIT_DISABLE(CTX_CTRL_ENGINE_CTX_RESTORE_INHIBIT);
-	if (inhibit)
-		ctl |= CTX_CTRL_ENGINE_CTX_RESTORE_INHIBIT;
 	if (INTEL_GEN(engine->i915) < 11)
 		ctl |= _MASKED_BIT_DISABLE(CTX_CTRL_ENGINE_CTX_SAVE_INHIBIT |
 					   CTX_CTRL_RS_CTX_ENABLE);
@@ -4411,7 +4409,7 @@ static void execlists_init_reg_state(u32 *regs,
 				     const struct intel_context *ce,
 				     const struct intel_engine_cs *engine,
 				     const struct intel_ring *ring,
-				     bool inhibit)
+				     unsigned int inhibit)
 {
 	/*
 	 * A context is actually a big batch buffer with several
@@ -4442,7 +4440,7 @@ populate_lr_context(struct intel_context *ce,
 		    struct intel_engine_cs *engine,
 		    struct intel_ring *ring)
 {
-	bool inhibit = true;
+	unsigned int inhibit = CTX_CTRL_ENGINE_CTX_RESTORE_INHIBIT;
 	void *vaddr;
 	int ret;
 
@@ -4468,7 +4466,7 @@ populate_lr_context(struct intel_context *ce,
 		memcpy(vaddr, defaults, engine->context_size);
 		i915_gem_object_unpin_map(engine->default_state);
 		__set_bit(CONTEXT_VALID_BIT, &ce->flags);
-		inhibit = false;
+		inhibit = 0;
 	}
 
 	/* The second page of the context object contains some fields which must
-- 
2.25.0



More information about the Intel-gfx-trybot mailing list