On Thu, Feb 11, 2016 at 01:16:53PM +0200, Oleksandr Natalenko wrote:
Ville,
here is another dmesg: [1]
I've reconnected HDMI cable three times.
Forgot to note, it is HDMI monitor plugged into machine's DVI with HDMI-DVI cable. I guess this should matter as well.
Shouldn't really matter. HDMI and DVI are identical at this level.
OK, so the hpd interrupt does happen, and yet the live status supposedly claims that nothing is there. Port C live status definitely works here on my IVB, so not sure what the deal is.
Can you grab intel-gpu-tools and run intel_reg read 0xc4000 0xc4004 0xc4008 0xc400c 0xc4030 a couple of times after plugging the monitor in, and also run it when nothing is plugged in.
Also you could try something like the following patch so we might observe the live status with a bit more detail. Though the fact that it doesn't seem to work for you even when the monitor was already plugged in is somewhat troubling:
--- a/drivers/gpu/drm/i915/intel_hdmi.c +++ b/drivers/gpu/drm/i915/intel_hdmi.c @@ -1392,12 +1392,17 @@ intel_hdmi_detect(struct drm_connector *connector, bool force)
intel_display_power_get(dev_priv, POWER_DOMAIN_GMBUS);
- for (try = 0; !live_status && try < 9; try++) { - if (try) - msleep(10); - live_status = intel_digital_port_connected(dev_priv, + printk("port %c live status\n ", port_name(hdmi_to_dig_port(intel_hdmi)->port)); + for (try = 0; try < 250; try++) { + bool status = intel_digital_port_connected(dev_priv, hdmi_to_dig_port(intel_hdmi)); + live_status |= status; + printk("%c", status ? '#' : '_'); + if (try % 50 == 49) + printk("\n "); + usleep_range(1000, 1000); } + printk("\n");
if (!live_status) DRM_DEBUG_KMS("Live status not up!");