Hello maintainers,
This series addresses a defect observed on certain hardware platforms using
Linux kernel 6.1.147 with the i915 driver. The issue concerns hot plug
detection (HPD) logic,
leading to unreliable or missed detection events on affected hardware. This is
happening on some specific devices.
### Background
Issue:
On Simatic IPC227E, we observed unreliable or missing hot plug detection
events, while on Simatic IPC227G (otherwise similar platform), expected hot
plug behavior was maintained.
Affected kernel:
This patch series is intended for the Linux 6.1.y stable tree only (tested
on 6.1.147)
Most of the tests were conducted on 6.1.147 (manual/standalone kernel
build, CIP/Isar context).
Root cause analysis:
I do not have access to hardware signal traces or scope data to
conclusively prove the root cause at electrical level. My understanding is
based on observed driver behavior and logs.
Therefore my assumption as to the real cause is that on IPC227G, HPD IRQ
storms are apparently not occurring, so the standard HPD IRQ-based detection
works as expected. On IPC227E,
frequent HPD interrupts trigger the i915 driver’s storm detection logic,
causing it to switch to polling mode. Therefore polling does not resume
correctly, leading to the hotplug
issue this series addresses. Device IPC227E's behavior triggers this kernel
edge case, likely due to slight variations in signal integrity, electrical
margins, or internal component timing.
Device IPC227G, functions as expected, possibly due to cleaner electrical
signaling or more optimal timing characteristics, thus avoiding the triggering
condition.
Conclusion:
This points to a hardware-software interaction where kernel code assumes
nicer signaling or margins than IPC227E is able to provide, exposing logic gaps
not visible on more robust hardware.
### Patches
Patches 1-4:
- Partial backports of upstream commits; only the relevant logic or fixes
are applied, with other code omitted due to downstream divergence.
- Applied minimal merging without exhaustive backport of all intermediate
upstream changes.
Patch 5:
- Contains cherry-picked logic plus context/compatibility amendments as
needed. Ensures that the driver builds.
- Together these fixes greatly improve reliability of hotplug detection on
both devices, with no regression detected in our setups.
Thank you for your review,
Nicusor Huhulea
This patch series contains the following changes:
Dmitry Baryshkov (2):
drm/probe_helper: extract two helper functions
drm/probe-helper: enable and disable HPD on connectors
Imre Deak (2):
drm/i915: Fix HPD polling, reenabling the output poll work as needed
drm: Add an HPD poll helper to reschedule the poll work
Nicusor Huhulea (1):
drm/i915: fixes for i915 Hot Plug Detection and build/runtime issues
drivers/gpu/drm/drm_probe_helper.c | 127 ++++++++++++++-----
drivers/gpu/drm/i915/display/intel_hotplug.c | 4 +-
include/drm/drm_modeset_helper_vtables.h | 22 ++++
include/drm/drm_probe_helper.h | 1 +
4 files changed, 122 insertions(+), 32 deletions(-)
--
2.39.2