From: Thomas Hellström Date: Mon, 4 Nov 2024 08:21:20 +0000 (+0100) Subject: Merge drm/drm-next into drm-xe-next X-Git-Tag: microblaze-v6.16~14^2~22^2~105 X-Git-Url: http://git.monstr.eu/?a=commitdiff_plain;h=c787c2901e2c03008e536b86cb0103ce6fd05e2d;p=linux-2.6-microblaze.git Merge drm/drm-next into drm-xe-next 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 --- c787c2901e2c03008e536b86cb0103ce6fd05e2d diff --cc drivers/gpu/drm/xe/xe_guc_ct.c index 8aeb1789805c,c260d8840990..a405b9218ad2 --- a/drivers/gpu/drm/xe/xe_guc_ct.c +++ b/drivers/gpu/drm/xe/xe_guc_ct.c @@@ -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