Because the timestamp.lock is called from the perf lock,
it has to be converted to a raw spinlock too.

This fixes another splat with a similar trace
to the previous commit in perf_pmu.

Signed-off-by: Maarten Lankhorst <[email protected]>
---
 drivers/gpu/drm/i915/gt/uc/intel_guc.h        |  2 +-
 .../gpu/drm/i915/gt/uc/intel_guc_submission.c | 26 +++++++++----------
 2 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc.h 
b/drivers/gpu/drm/i915/gt/uc/intel_guc.h
index b25fa8f4dc4bd..7f8feb0a9b97f 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_guc.h
+++ b/drivers/gpu/drm/i915/gt/uc/intel_guc.h
@@ -252,7 +252,7 @@ struct intel_guc {
                 * @timestamp.lock: Lock protecting the below fields and
                 * the engine stats.
                 */
-               spinlock_t lock;
+               raw_spinlock_t lock;
 
                /**
                 * @timestamp.gt_stamp: 64-bit extended value of the GT
diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c 
b/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c
index 788e59cdfac9b..a3aee2daade7d 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c
+++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c
@@ -1330,7 +1330,7 @@ static ktime_t guc_engine_busyness(struct intel_engine_cs 
*engine, ktime_t *now)
        bool in_reset;
        intel_wakeref_t wakeref;
 
-       spin_lock_irqsave(&guc->timestamp.lock, flags);
+       raw_spin_lock_irqsave(&guc->timestamp.lock, flags);
 
        /*
         * If a reset happened, we risk reading partially updated engine
@@ -1378,7 +1378,7 @@ static ktime_t guc_engine_busyness(struct intel_engine_cs 
*engine, ktime_t *now)
        if (total > stats->total)
                stats->total = total;
 
-       spin_unlock_irqrestore(&guc->timestamp.lock, flags);
+       raw_spin_unlock_irqrestore(&guc->timestamp.lock, flags);
 
        return ns_to_ktime(stats->total);
 }
@@ -1442,7 +1442,7 @@ static void __reset_guc_busyness_stats(struct intel_guc 
*guc)
        unsigned long flags;
        ktime_t unused;
 
-       spin_lock_irqsave(&guc->timestamp.lock, flags);
+       raw_spin_lock_irqsave(&guc->timestamp.lock, flags);
 
        guc_update_pm_timestamp(guc, &unused);
        for_each_engine(engine, gt, id) {
@@ -1463,7 +1463,7 @@ static void __reset_guc_busyness_stats(struct intel_guc 
*guc)
                stats->running = 0;
        }
 
-       spin_unlock_irqrestore(&guc->timestamp.lock, flags);
+       raw_spin_unlock_irqrestore(&guc->timestamp.lock, flags);
 }
 
 static void __update_guc_busyness_running_state(struct intel_guc *guc)
@@ -1473,10 +1473,10 @@ static void __update_guc_busyness_running_state(struct 
intel_guc *guc)
        enum intel_engine_id id;
        unsigned long flags;
 
-       spin_lock_irqsave(&guc->timestamp.lock, flags);
+       raw_spin_lock_irqsave(&guc->timestamp.lock, flags);
        for_each_engine(engine, gt, id)
                engine->stats.guc.running = false;
-       spin_unlock_irqrestore(&guc->timestamp.lock, flags);
+       raw_spin_unlock_irqrestore(&guc->timestamp.lock, flags);
 }
 
 static void __update_guc_busyness_stats(struct intel_guc *guc)
@@ -1489,13 +1489,13 @@ static void __update_guc_busyness_stats(struct 
intel_guc *guc)
 
        guc->timestamp.last_stat_jiffies = jiffies;
 
-       spin_lock_irqsave(&guc->timestamp.lock, flags);
+       raw_spin_lock_irqsave(&guc->timestamp.lock, flags);
 
        guc_update_pm_timestamp(guc, &unused);
        for_each_engine(engine, gt, id)
                guc_update_engine_gt_clks(engine);
 
-       spin_unlock_irqrestore(&guc->timestamp.lock, flags);
+       raw_spin_unlock_irqrestore(&guc->timestamp.lock, flags);
 }
 
 static void __guc_context_update_stats(struct intel_context *ce)
@@ -1503,9 +1503,9 @@ static void __guc_context_update_stats(struct 
intel_context *ce)
        struct intel_guc *guc = ce_to_guc(ce);
        unsigned long flags;
 
-       spin_lock_irqsave(&guc->timestamp.lock, flags);
+       raw_spin_lock_irqsave(&guc->timestamp.lock, flags);
        lrc_update_runtime(ce);
-       spin_unlock_irqrestore(&guc->timestamp.lock, flags);
+       raw_spin_unlock_irqrestore(&guc->timestamp.lock, flags);
 }
 
 static void guc_context_update_stats(struct intel_context *ce)
@@ -1661,9 +1661,9 @@ void intel_guc_busyness_unpark(struct intel_gt *gt)
        if (!guc_submission_initialized(guc))
                return;
 
-       spin_lock_irqsave(&guc->timestamp.lock, flags);
+       raw_spin_lock_irqsave(&guc->timestamp.lock, flags);
        guc_update_pm_timestamp(guc, &unused);
-       spin_unlock_irqrestore(&guc->timestamp.lock, flags);
+       raw_spin_unlock_irqrestore(&guc->timestamp.lock, flags);
        guc_enable_busyness_worker(guc);
 }
 
@@ -4865,7 +4865,7 @@ void intel_guc_submission_init_early(struct intel_guc 
*guc)
        INIT_WORK(&guc->submission_state.reset_fail_worker,
                  reset_fail_worker_func);
 
-       spin_lock_init(&guc->timestamp.lock);
+       raw_spin_lock_init(&guc->timestamp.lock);
        INIT_DELAYED_WORK(&guc->timestamp.work, guc_timestamp_ping);
 
        guc->submission_state.sched_disable_delay_ms = SCHED_DISABLE_DELAY_MS;
-- 
2.53.0

Reply via email to