[ Sasha's backport helper bot ]
Hi,
Summary of potential issues: ⚠️ Found matching upstream commit but patch is missing proper reference to it
Found matching upstream commit: 03552d8ac0afcc080c339faa0b726e2c0e9361cb
Status in newer kernel trees: 6.14.y | Not found
Note: The patch differs from the upstream commit: --- 1: 03552d8ac0afc ! 1: 29475b71fb1d0 drm/xe/gsc: do not flush the GSC worker from the reset path @@ Commit message Link: https://lore.kernel.org/r/20250502155104.2201469-1-daniele.ceraolospurio@int... (cherry picked from commit 12370bfcc4f0bdf70279ec5b570eb298963422b5) Signed-off-by: Lucas De Marchi lucas.demarchi@intel.com + (cherry picked from commit 03552d8ac0afcc080c339faa0b726e2c0e9361cb)
## drivers/gpu/drm/xe/xe_gsc.c ## -@@ drivers/gpu/drm/xe/xe_gsc.c: void xe_gsc_wait_for_worker_completion(struct xe_gsc *gsc) - flush_work(&gsc->work); +@@ drivers/gpu/drm/xe/xe_gsc.c: void xe_gsc_remove(struct xe_gsc *gsc) + xe_gsc_proxy_remove(gsc); }
+void xe_gsc_stop_prepare(struct xe_gsc *gsc) @@ drivers/gpu/drm/xe/xe_gsc.h: struct xe_hw_engine; void xe_gsc_wait_for_worker_completion(struct xe_gsc *gsc); +void xe_gsc_stop_prepare(struct xe_gsc *gsc); void xe_gsc_load_start(struct xe_gsc *gsc); + void xe_gsc_remove(struct xe_gsc *gsc); void xe_gsc_hwe_irq_handler(struct xe_hw_engine *hwe, u16 intr_vec); -
## drivers/gpu/drm/xe/xe_gsc_proxy.c ## @@ drivers/gpu/drm/xe/xe_gsc_proxy.c: bool xe_gsc_proxy_init_done(struct xe_gsc *gsc) @@ drivers/gpu/drm/xe/xe_gsc_proxy.c: bool xe_gsc_proxy_init_done(struct xe_gsc *gs + struct xe_gt *gt = gsc_to_gt(gsc); + + /* Proxy init can take up to 500ms, so wait double that for safety */ -+ return xe_mmio_wait32(>->mmio, HECI_FWSTS1(MTL_GSC_HECI1_BASE), ++ return xe_mmio_wait32(gt, HECI_FWSTS1(MTL_GSC_HECI1_BASE), + HECI1_FWSTS1_CURRENT_STATE, + HECI1_FWSTS1_PROXY_STATE_NORMAL, + USEC_PER_SEC, NULL, false); @@ drivers/gpu/drm/xe/xe_gsc_proxy.c: bool xe_gsc_proxy_init_done(struct xe_gsc *gs
## drivers/gpu/drm/xe/xe_gsc_proxy.h ## @@ drivers/gpu/drm/xe/xe_gsc_proxy.h: struct xe_gsc; - int xe_gsc_proxy_init(struct xe_gsc *gsc); bool xe_gsc_proxy_init_done(struct xe_gsc *gsc); + void xe_gsc_proxy_remove(struct xe_gsc *gsc); +int xe_gsc_wait_for_proxy_init_done(struct xe_gsc *gsc); int xe_gsc_proxy_start(struct xe_gsc *gsc);
@@ drivers/gpu/drm/xe/xe_gsc_proxy.h: struct xe_gsc;
## drivers/gpu/drm/xe/xe_gt.c ## @@ drivers/gpu/drm/xe/xe_gt.c: void xe_gt_suspend_prepare(struct xe_gt *gt) - - fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL); + { + XE_WARN_ON(xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL));
- xe_uc_stop_prepare(>->uc); + xe_uc_suspend_prepare(>->uc);
- xe_force_wake_put(gt_to_fw(gt), fw_ref); + XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL)); }
## drivers/gpu/drm/xe/xe_uc.c ## @@ drivers/gpu/drm/xe/xe_uc.h: int xe_uc_reset_prepare(struct xe_uc *uc); +void xe_uc_suspend_prepare(struct xe_uc *uc); int xe_uc_suspend(struct xe_uc *uc); int xe_uc_sanitize_reset(struct xe_uc *uc); - void xe_uc_declare_wedged(struct xe_uc *uc); + void xe_uc_remove(struct xe_uc *uc); ---
Results of testing on various branches:
| Branch | Patch Apply | Build Test | |---------------------------|-------------|------------| | stable/linux-6.12.y | Success | Success |