summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/i915/i915_driver.c
diff options
context:
space:
mode:
authorImre Deak <imre.deak@intel.com>2024-01-04 10:30:00 +0200
committerImre Deak <imre.deak@intel.com>2024-01-08 18:51:31 +0200
commit24b412b1bfebb29ffca93bec215d26fd3a85a405 (patch)
treeddf206c5beab46254b00e0a9e17cc6831642e25b /drivers/gpu/drm/i915/i915_driver.c
parenta1a0e8630711e404952e8d6485715183676b99f9 (diff)
drm/i915: Disable intel HPD poll after DRM poll init/enable
The only purpose of intel_hpd_poll_disable() during driver loading and system resume - at which point polling should be disabled anyway, except for connectors in an IRQ storm, for which the polling will stay enabled - is to force-detect all the connectors. However this detection in i915_hpd_poll_init_work() depends on drm.mode_config.poll_enabled, which will get set in drm_kms_helper_poll_init(), possibly after i915_hpd_poll_init_work() is scheduled. Hence the initial detection of connectors during driver loading may not happen. Fix the above by moving intel_hpd_poll_disable() after i915_hpd_poll_init_work(), the proper place anyway for doing the above detection after all the HW initialization steps are complete. Change the order the same way during system resume as well. The above race condition shouldn't matter here - as drm.mode_config.poll_enabled will be set - but the detection should happen here as well after the HW init steps are done. Link: https://patchwork.freedesktop.org/patch/msgid/20240104083008.2715733-5-imre.deak@intel.com Reviewed-by: Jouni Högander <jouni.hogander@intel.com> Signed-off-by: Imre Deak <imre.deak@intel.com>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_driver.c')
-rw-r--r--drivers/gpu/drm/i915/i915_driver.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c
index 8dead878e51a..55badc20a10f 100644
--- a/drivers/gpu/drm/i915/i915_driver.c
+++ b/drivers/gpu/drm/i915/i915_driver.c
@@ -1248,9 +1248,9 @@ static int i915_drm_resume(struct drm_device *dev)
intel_dp_mst_resume(dev_priv);
intel_display_driver_resume(dev_priv);
- intel_hpd_poll_disable(dev_priv);
if (HAS_DISPLAY(dev_priv))
drm_kms_helper_poll_enable(dev);
+ intel_hpd_poll_disable(dev_priv);
intel_opregion_resume(dev_priv);