On Mon, Feb 10, 2014 at 01:06:43PM +0100, Norman Golisz wrote:
> I just upgraded to the latest snapshot from Feb, 7. and I'm experiencing
> a regression, where X11 doesn't detect the HDMI output when available.
> 
> I've a dual-head configuration, where one VGA and one DVI monitor is
> connected to a docking station of my Thinkpad T400. The VGA works, but
> HDMI stays dark.
> 
> Just before I upgraded from a snapshot from Feb, 2. to this snapshot,
> everything worked fine.
> 
> Below you'll find the output of xrandr, /var/log/Xorg.0.log, pcidump, dmesg.
> 
> Please let me know if I can provide more information or test patches,
> etc.!

Which thinkpad dock is this?

I suspect it may be using an SDVO output in which case the following
diff that combines some fixes we don't yet have from linux 3.8.13.17
might be interesting to try:

aee389b0e2e0d99c1ac779804fc46c2921b405d6
drm/i915/sdvo: Use &intel_sdvo->ddc instead of intel_sdvo->i2c for DDC.

and
795de6db7c0397315b083c6dbf57cecd2c6ad098
drm/i915: prefer VBT modes for SVDO-LVDS over EDID

The change that introduced the problem for you is almost certaintly the
update to xf86-video-intel 2.99.909.

https://bugs.freedesktop.org/show_bug.cgi?id=66494

discusses a similiar problem involving a T400 and mentions trying
a xorg.conf with:

      Section "Device"
        Option "ReprobeOutputs" "true"
      EndSection

diff --git sys/dev/pci/drm/i915/intel_sdvo.c sys/dev/pci/drm/i915/intel_sdvo.c
index d92daa8..18a75cb 100644
--- sys/dev/pci/drm/i915/intel_sdvo.c
+++ sys/dev/pci/drm/i915/intel_sdvo.c
@@ -1771,11 +1771,14 @@ static void intel_sdvo_get_lvds_modes(struct 
drm_connector *connector)
         * Assume that the preferred modes are
         * arranged in priority order.
         */
-       intel_ddc_get_modes(connector, intel_sdvo->i2c);
-       if (list_empty(&connector->probed_modes) == false)
-               goto end;
+       intel_ddc_get_modes(connector, &intel_sdvo->ddc);
 
-       /* Fetch modes from VBT */
+       /*
+        * Fetch modes from VBT. For SDVO prefer the VBT mode since some
+        * SDVO->LVDS transcoders can't cope with the EDID mode. Since
+        * drm_mode_probed_add adds the mode at the head of the list we add it
+        * last.
+        */
        if (dev_priv->sdvo_lvds_vbt_mode != NULL) {
                newmode = drm_mode_duplicate(connector->dev,
                                             dev_priv->sdvo_lvds_vbt_mode);
@@ -1787,7 +1790,6 @@ static void intel_sdvo_get_lvds_modes(struct 
drm_connector *connector)
                }
        }
 
-end:
        list_for_each_entry(newmode, &connector->probed_modes, head) {
                if (newmode->type & DRM_MODE_TYPE_PREFERRED) {
                        intel_sdvo->sdvo_lvds_fixed_mode =

Reply via email to