|
| 1 | +drm/i915: Fix HPD polling, reenabling the output poll work as needed |
| 2 | + |
| 3 | +jira LE-2183 |
| 4 | +Rebuild_History Non-Buildable kernel-4.18.0-553.33.1.el8_10 |
| 5 | +commit-author Imre Deak < [email protected]> |
| 6 | +commit 50452f2f76852322620b63e62922b85e955abe94 |
| 7 | +Empty-Commit: Cherry-Pick Conflicts during history rebuild. |
| 8 | +Will be included in final tarball splat. Ref for failed cherry-pick at: |
| 9 | +ciq/ciq_backports/kernel-4.18.0-553.33.1.el8_10/50452f2f.failed |
| 10 | + |
| 11 | +After the commit in the Fixes: line below, HPD polling stopped working |
| 12 | +on i915, since after that change calling drm_kms_helper_poll_enable() |
| 13 | +doesn't restart drm_mode_config::output_poll_work if the work was |
| 14 | +stopped (no connectors needing polling) and enabling polling for a |
| 15 | +connector (during runtime suspend or detecting an HPD IRQ storm). |
| 16 | + |
| 17 | +After the above change calling drm_kms_helper_poll_enable() is a nop |
| 18 | +after it's been called already and polling for some connectors was |
| 19 | +disabled/re-enabled. |
| 20 | + |
| 21 | +Fix this by calling drm_kms_helper_poll_reschedule() added in the |
| 22 | +previous patch instead, which reschedules the work whenever expected. |
| 23 | + |
| 24 | +Fixes: d33a54e3991d ("drm/probe_helper: sort out poll_running vs poll_enabled") |
| 25 | + |
| 26 | + Cc: Dmitry Baryshkov < [email protected]> |
| 27 | + |
| 28 | + Reviewed-by: Jouni Högander < [email protected]> |
| 29 | + Signed-off-by: Imre Deak < [email protected]> |
| 30 | +Link: https://patchwork.freedesktop.org/patch/msgid/ [email protected] |
| 31 | +(cherry picked from commit 50452f2f76852322620b63e62922b85e955abe94) |
| 32 | + Signed-off-by: Jonathan Maple < [email protected]> |
| 33 | + |
| 34 | +# Conflicts: |
| 35 | +# drivers/gpu/drm/i915/display/intel_hotplug.c |
| 36 | +diff --cc drivers/gpu/drm/i915/display/intel_hotplug.c |
| 37 | +index 907ab7526cb4,e8562f6f8bb4..000000000000 |
| 38 | +--- a/drivers/gpu/drm/i915/display/intel_hotplug.c |
| 39 | ++++ b/drivers/gpu/drm/i915/display/intel_hotplug.c |
| 40 | +@@@ -210,8 -212,9 +210,14 @@@ intel_hpd_irq_storm_switch_to_polling(s |
| 41 | + |
| 42 | + /* Enable polling and queue hotplug re-enabling. */ |
| 43 | + if (hpd_disabled) { |
| 44 | +++<<<<<<< HEAD |
| 45 | + + drm_kms_helper_poll_enable(&dev_priv->drm); |
| 46 | + + mod_delayed_work(system_wq, &dev_priv->display.hotplug.reenable_work, |
| 47 | +++======= |
| 48 | ++ drm_kms_helper_poll_reschedule(&dev_priv->drm); |
| 49 | ++ mod_delayed_work(dev_priv->unordered_wq, |
| 50 | ++ &dev_priv->display.hotplug.reenable_work, |
| 51 | +++>>>>>>> 50452f2f7685 (drm/i915: Fix HPD polling, reenabling the output poll work as needed) |
| 52 | + msecs_to_jiffies(HPD_STORM_REENABLE_DELAY)); |
| 53 | + } |
| 54 | + } |
| 55 | +* Unmerged path drivers/gpu/drm/i915/display/intel_hotplug.c |
0 commit comments