]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/xe: Move LNL scheduling WA to xe_device.h
authorNirmoy Das <nirmoy.das@intel.com>
Tue, 29 Oct 2024 12:01:15 +0000 (13:01 +0100)
committerLucas De Marchi <lucas.demarchi@intel.com>
Fri, 1 Nov 2024 13:23:26 +0000 (06:23 -0700)
Move LNL scheduling WA to xe_device.h so this can be used in other
places without needing keep the same comment about removal of this WA
in the future. The WA, which flushes work or workqueues, is now wrapped
in macros and can be reused wherever needed.

Cc: Badal Nilawar <badal.nilawar@intel.com>
Cc: Matthew Auld <matthew.auld@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
cc: stable@vger.kernel.org # v6.11+
Suggested-by: John Harrison <John.C.Harrison@Intel.com>
Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241029120117.449694-1-nirmoy.das@intel.com
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
drivers/gpu/drm/xe/xe_device.h
drivers/gpu/drm/xe/xe_guc_ct.c

index 4c3f0ebe78a90f655748fc5a6e7926e7f9ef8486..f1fbfe916867820af4aa944ad1134e420fdd4122 100644 (file)
@@ -191,4 +191,18 @@ void xe_device_declare_wedged(struct xe_device *xe);
 struct xe_file *xe_file_get(struct xe_file *xef);
 void xe_file_put(struct xe_file *xef);
 
+/*
+ * Occasionally it is seen that the G2H worker starts running after a delay of more than
+ * a second even after being queued and activated by the Linux workqueue subsystem. This
+ * leads to G2H timeout error. The root cause of issue lies with scheduling latency of
+ * Lunarlake Hybrid CPU. Issue disappears if we disable Lunarlake atom cores from BIOS
+ * and this is beyond xe kmd.
+ *
+ * TODO: Drop this change once workqueue scheduling delay issue is fixed on LNL Hybrid CPU.
+ */
+#define LNL_FLUSH_WORKQUEUE(wq__) \
+       flush_workqueue(wq__)
+#define LNL_FLUSH_WORK(wrk__) \
+       flush_work(wrk__)
+
 #endif
index 4870af1c5a9005498b697e6590776d5f76cc3012..8aeb1789805c5ee58e1ec668503b754fae0e761d 100644 (file)
@@ -1018,17 +1018,8 @@ retry_same_fence:
 
        ret = wait_event_timeout(ct->g2h_fence_wq, g2h_fence.done, HZ);
 
-       /*
-        * Occasionally it is seen that the G2H worker starts running after a delay of more than
-        * a second even after being queued and activated by the Linux workqueue subsystem. This
-        * leads to G2H timeout error. The root cause of issue lies with scheduling latency of
-        * Lunarlake Hybrid CPU. Issue dissappears if we disable Lunarlake atom cores from BIOS
-        * and this is beyond xe kmd.
-        *
-        * TODO: Drop this change once workqueue scheduling delay issue is fixed on LNL Hybrid CPU.
-        */
        if (!ret) {
-               flush_work(&ct->g2h_worker);
+               LNL_FLUSH_WORK(&ct->g2h_worker);
                if (g2h_fence.done) {
                        xe_gt_warn(gt, "G2H fence %u, action %04x, done\n",
                                   g2h_fence.seqno, action[0]);