Comment 6 for bug 460664

Revision history for this message
Jesse Barnes (jbarnes-virtuousgeek) wrote :

Well, I'm a bit confused by this one. The fix we put together for Jaunty should already be in the kernel, but based on the pictures it does look like we're programming a bad mode. The machine should still be up though, so it would be good to get logs with DRM debugging enabled (you can force this by loading the drm module with the "debug=1" option, though on recent kernels you might need to use "debug=4" or "debug=5").

I'd also like to get a copy of the vbios for this machine:
# cd /sys/devices/pci0000\:00/0000\:00\:02.0/
# echo 1 > rom
# cat rom > /tmp/rom.bin
# echo 0 > rom

If we end up using the EDID on this machine, then maybe the fix didn't make it upstream. In that case this kernel patch might help:

diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index 3c0d2b3..2c2f08b 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -647,6 +647,12 @@ static struct drm_display_mode *drm_mode_detailed(struct dr
        mode->vsync_end = mode->vsync_start + vsync_pulse_width;
        mode->vtotal = mode->vdisplay + vblank;

+ /* Some EDIDs have bogus h/vtotal values */
+ if (mode->hsync_end > mode->htotal)
+ mode->htotal = mode->hsync_end + 1;
+ if (mode->vsync_end > mode->vtotal)
+ mode->vtotal = mode->vsync_end + 1;
+
        drm_mode_set_name(mode);

        if (pt->misc & DRM_EDID_PT_INTERLACED)