Merge drm/drm-next into drm-xe-next
authorThomas Hellström <thomas.hellstrom@linux.intel.com>
Mon, 4 Nov 2024 08:21:20 +0000 (09:21 +0100)
committerThomas Hellström <thomas.hellstrom@linux.intel.com>
Mon, 4 Nov 2024 08:21:20 +0000 (09:21 +0100)
Backmerging to get up-to-date and to bring in a fix that was
merged through drm-misc-fixes.

Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
1  2 
drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
drivers/gpu/drm/xe/xe_bo.c
drivers/gpu/drm/xe/xe_device.c
drivers/gpu/drm/xe/xe_guc_ct.c
drivers/gpu/drm/xe/xe_guc_submit.c

Simple merge
Simple merge
@@@ -1018,15 -1018,24 +1018,33 @@@ retry_same_fence
  
        ret = wait_event_timeout(ct->g2h_fence_wq, g2h_fence.done, HZ);
  
 +      if (!ret) {
 +              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]);
 +                      ret = 1;
 +              }
 +      }
 +
+       /*
+        * 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);
+               if (g2h_fence.done) {
+                       xe_gt_warn(gt, "G2H fence %u, action %04x, done\n",
+                                  g2h_fence.seqno, action[0]);
+                       ret = 1;
+               }
+       }
        /*
         * Ensure we serialize with completion side to prevent UAF with fence going out of scope on
         * the stack, since we have no clue if it will fire after the timeout before we can erase
Simple merge