[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