[PATCH 2/2] drm/i915/guc: Use correct lock when processing G2H message

Michal Wajdeczko michal.wajdeczko at intel.com
Sat Feb 1 13:45:16 UTC 2020


During processing of G2H message we check msg_enabled_mask that
we protect with guc->irq_lock. Use that lock consitently for all
G2H message processing.

Signed-off-by: Michal Wajdeczko <michal.wajdeczko at intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
Cc: Chris Wilson <chris at chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/gt/uc/intel_guc.c    | 2 ++
 drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c | 2 ++
 drivers/gpu/drm/i915/gt/uc/intel_uc.c     | 6 ++----
 3 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc.c b/drivers/gpu/drm/i915/gt/uc/intel_guc.c
index c4c1523da7a6..d01db4435116 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_guc.c
+++ b/drivers/gpu/drm/i915/gt/uc/intel_guc.c
@@ -476,6 +476,8 @@ int intel_guc_to_host_process_recv_msg(struct intel_guc *guc,
 {
 	u32 msg;
 
+	lockdep_assert_held(&guc->irq_lock);
+
 	if (unlikely(!len))
 		return -EPROTO;
 
diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c
index 6b0768800fee..c4079cfb5d4e 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c
+++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c
@@ -739,7 +739,9 @@ static void ct_process_request(struct intel_guc_ct *ct,
 
 	switch (action) {
 	case INTEL_GUC_ACTION_DEFAULT:
+		spin_lock(&guc->irq_lock);
 		ret = intel_guc_to_host_process_recv_msg(guc, payload, len);
+		spin_unlock(&guc->irq_lock);
 		if (unlikely(ret))
 			goto fail_unexpected;
 		break;
diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc.c b/drivers/gpu/drm/i915/gt/uc/intel_uc.c
index 375ff7347800..b2d9dd69110d 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_uc.c
+++ b/drivers/gpu/drm/i915/gt/uc/intel_uc.c
@@ -168,17 +168,15 @@ static void guc_get_mmio_msg(struct intel_guc *guc)
 
 static void guc_handle_mmio_msg(struct intel_guc *guc)
 {
-	struct drm_i915_private *i915 = guc_to_gt(guc)->i915;
-
 	/* we need communication to be enabled to reply to GuC */
 	GEM_BUG_ON(!guc_communication_enabled(guc));
 
 	if (!guc->mmio_msg)
 		return;
 
-	spin_lock_irq(&i915->irq_lock);
+	spin_lock_irq(&guc->irq_lock);
 	intel_guc_to_host_process_recv_msg(guc, &guc->mmio_msg, 1);
-	spin_unlock_irq(&i915->irq_lock);
+	spin_unlock_irq(&guc->irq_lock);
 
 	guc->mmio_msg = 0;
 }
-- 
2.19.2



More information about the Intel-gfx-trybot mailing list