[PATCH 1/2] drm/xe/guc: Prepare fast-path to be called outside of IRQ handler

Michal Wajdeczko michal.wajdeczko at intel.com
Wed Jun 5 20:19:46 UTC 2024


G2H fast-path processing is done today only from the IRQ handler,
but in upcoming patch we want to use it also from the work.
Update spin lock to the _irq variant like rest of the code.

Signed-off-by: Michal Wajdeczko <michal.wajdeczko at intel.com>
Cc: Matthew Brost <matthew.brost at intel.com>
---
 drivers/gpu/drm/xe/xe_guc_ct.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_guc_ct.c b/drivers/gpu/drm/xe/xe_guc_ct.c
index c1f258348f5c..17f0e5019bb8 100644
--- a/drivers/gpu/drm/xe/xe_guc_ct.c
+++ b/drivers/gpu/drm/xe/xe_guc_ct.c
@@ -1216,6 +1216,7 @@ static void g2h_fast_path(struct xe_guc_ct *ct, u32 *msg, u32 len)
 void xe_guc_ct_fast_path(struct xe_guc_ct *ct)
 {
 	struct xe_device *xe = ct_to_xe(ct);
+	unsigned long flags;
 	bool ongoing;
 	int len;
 
@@ -1223,13 +1224,13 @@ void xe_guc_ct_fast_path(struct xe_guc_ct *ct)
 	if (!ongoing && xe_pm_read_callback_task(ct_to_xe(ct)) == NULL)
 		return;
 
-	spin_lock(&ct->fast_lock);
+	spin_lock_irqsave(&ct->fast_lock, flags);
 	do {
 		len = g2h_read(ct, ct->fast_msg, true);
 		if (len > 0)
 			g2h_fast_path(ct, ct->fast_msg, len);
 	} while (len > 0);
-	spin_unlock(&ct->fast_lock);
+	spin_unlock_irqrestore(&ct->fast_lock, flags);
 
 	if (ongoing)
 		xe_pm_runtime_put(xe);
-- 
2.43.0



More information about the Intel-xe mailing list