[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