• Imre Deak's avatar
    drm/i915: Avoid endless HPD poll detect loop via runtime suspend/resume · cc018c26
    Imre Deak authored
    The issue fixed in
    
    commit a8ddac7c ("drm/i915: Avoid HPD poll detect triggering a new detect cycle")
    
    on VLV, CHV is still present on platforms where the display hotplug
    detection functionality is available whenever the device is in D0 state
    (hence these platforms switch to HPD polling only when the device is
    runtime suspended).
    
    The above commit avoids an endless i915_hpd_poll_init_work() ->
    connector detect loop by making sure that by the end of
    i915_hpd_poll_init_work() all display power references acquired by the
    connector detect functions which can trigger a new cycle (display core
    power domain) are dropped. However on platforms where HPD polling is
    enabled/disabled only from the runtime suspend/resume handlers, this is
    not ensured: for instance eDP VDD, TypeC port PHYs and the runtime
    autosuspend delay may still keep the device runtime resumed (via a power
    reference acquired during connector detection and hence result in an
    endless loop like the above).
    
    Solve the problem described in the above commit on all platforms, by
    making sure that a i915_hpd_poll_init_work() -> connector detect
    sequence can't take any power reference in the first place which would
    trigger a new cycle, instead of relying on these power references to be
    dropped by the end of the sequence.
    
    With the default runtime autosuspend delay (10 sec) this issue didn't
    happen in practice, since the device remained runtime resumed for the
    whole duration of the above sequence. CI/IGT tests however set the
    autosuspend delay to 0, which makes the problem visible, see References:
    below.
    
    Tested on GLK, CHV.
    
    v2: Don't warn about a requeued work, to account for disabling
        polling directly during driver loading, reset and system resume.
    
    References: https://gitlab.freedesktop.org/drm/intel/-/issues/7940#note_1997403Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
    Reviewed-by: default avatarJouni Högander <jouni.hogander@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20230809104307.1218058-1-imre.deak@intel.com
    cc018c26
intel_dp.c 166 KB