Skip to content

Commit c7a9f44

Browse files
surajk8lutzbichler
authored andcommitted
drm/xe/display: Do not suspend resume dp mst during runtime
Remove intel_dp_mst_suspend/resume from runtime suspend resume sequences. It is incorrect as it depends on AUX transfers which itself depend on the device being runtime resumed. This is also why we see a lock_dep splat here. <4> [76.011119] kworker/4:2/192 is trying to acquire lock: <4> [76.011122] ffff8881120b3210 (&mgr->lock#2){+.+.}-{3:3}, at: drm_dp_mst_topology_mgr_suspend+0x33/0xd0 [drm_display_helper] <4> [76.011142] but task is already holding lock: <4> [76.011144] ffffffffa0bc3420 (xe_pm_runtime_lockdep_map){+.+.}-{0:0}, at: xe_pm_runtime_suspend+0x51/0x3f0 [xe] <4> [76.011223] which lock already depends on the new lock. <4> [76.011226] the existing dependency chain (in reverse order) is: <4> [76.011229] -> freebsd#2 (xe_pm_runtime_lockdep_map){+.+.}-{0:0}: <4> [76.011233] pm_runtime_lockdep_prime+0x2f/0x50 [xe] <4> [76.011306] xe_pm_runtime_resume_and_get+0x29/0x90 [xe] <4> [76.011377] intel_display_power_get+0x24/0x70 [xe] <4> [76.011466] intel_digital_port_connected_locked+0x4c/0xf0 [xe] <4> [76.011551] intel_dp_aux_xfer+0xb8/0x7c0 [xe] <4> [76.011633] intel_dp_aux_transfer+0x166/0x2e0 [xe] <4> [76.011715] drm_dp_dpcd_access+0x87/0x150 [drm_display_helper] <4> [76.011726] drm_dp_dpcd_probe+0x3d/0xf0 [drm_display_helper] <4> [76.011737] drm_dp_dpcd_read+0xdd/0x130 [drm_display_helper] <4> [76.011747] intel_dp_get_colorimetry_status+0x3a/0x70 [xe] <4> [76.011886] intel_dp_init_connector+0x4ff/0x1030 [xe] <4> [76.011969] intel_ddi_init+0xc5b/0x1030 [xe] <4> [76.012058] intel_bios_for_each_encoder+0x36/0x60 [xe] <4> [76.012145] intel_setup_outputs+0x201/0x460 [xe] <4> [76.012233] intel_display_driver_probe_nogem+0x155/0x1e0 [xe] <4> [76.012320] xe_display_init_noaccel+0x27/0x70 [xe] Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240912012545.702032-2-suraj.kandpal@intel.com
1 parent b08f239 commit c7a9f44

1 file changed

Lines changed: 5 additions & 2 deletions

File tree

drivers/gpu/drm/xe/display/xe_display.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,8 @@ static void __xe_display_pm_suspend(struct xe_device *xe, bool runtime)
339339

340340
xe_display_flush_cleanup_work(xe);
341341

342-
intel_dp_mst_suspend(xe);
342+
if (!runtime)
343+
intel_dp_mst_suspend(xe);
343344

344345
intel_hpd_cancel_work(xe);
345346

@@ -457,7 +458,9 @@ static void __xe_display_pm_resume(struct xe_device *xe, bool runtime)
457458
intel_display_driver_resume_access(xe);
458459

459460
/* MST sideband requires HPD interrupts enabled */
460-
intel_dp_mst_resume(xe);
461+
if (!runtime)
462+
intel_dp_mst_resume(xe);
463+
461464
if (!runtime && has_display(xe)) {
462465
intel_display_driver_resume(xe);
463466
drm_kms_helper_poll_enable(&xe->drm);

0 commit comments

Comments
 (0)