On Thu, Nov 29, 2018 at 9:52 AM Guang Bai <guang.bai@intel.com> wrote:
On some GEN9 platforms, slowly unplugging (wiggling) the HDMI cable makes
the kernel to believe the HDMI display is still connected. This is because
the HDMI DDC lines are disconnected a little bit later after the hot-plug
interrupt triggered thus an immediate edid fetch can be made. This problem
has been identified by more than one customer recently. Use digital
port live states to authorize the edid read at HDMI detection point will
ensure most of the display related software states updated and rest of them
will be renewed accordingly when the port is connected.

v2: Fix the formatting issue
v3: Use digital port states to authorize the edid read
v4: Add comments on issue histories and rationale of the fix (Chris W)

Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Chris Chiu <chiu@endlessm.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Guang Bai <guang.bai@intel.com>
---
 drivers/gpu/drm/i915/intel_hdmi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index e2c6a2b..8cf7c78 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -1929,7 +1929,7 @@ intel_hdmi_detect(struct drm_connector *connector, bool force)

        intel_display_power_get(dev_priv, POWER_DOMAIN_GMBUS);

-       if (IS_ICELAKE(dev_priv) &&
+       if ((IS_ICELAKE(dev_priv) || IS_GEN9_BC(dev_priv)) &&
            !intel_digital_port_connected(encoder))
                goto out;

--
2.7.4


I've tried on my problematic ASUS X705FD, seems no problem on my test
scenarios (100% pass). I can reproduce with very slow unplug on previous
versions but can't reproduce anymore on this one. I tried slow unplgug with
few finds of HDMI jack I have in hand, it responds as expected. 

Don't know if there's any tough test case I should try, but I think it pretty
much solve the problem. Thanks.

Chris