[BISECTED] drm: random hang since 620f378 "drm: prune modes when ..."

From: Arnd Bergmann
Date: Mon Dec 07 2009 - 12:30:29 EST


After upgrading one of my machines to 2.6.32, I saw hangs after one to thirty minutes after
booting, with random data written to parts of the frame buffer. I've bisected it down
to 620f37811d "drm: prune modes when output is disconnected.", which was merged
in 2.6.32-rc1. Connecting a serial console does not reveal any output at the time of
the crash.

The machine uses an Intel G45 chipset with the i915 kernel mode setting enabled.

I have no clue what that patch does or why reverting it fixes the problem but 2.6.32
with this revert applied has not shown these hangs yet.

Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx>

---

--- a/drivers/gpu/drm/drm_crtc_helper.c
+++ b/drivers/gpu/drm/drm_crtc_helper.c
@@ -104,7 +104,8 @@ int drm_helper_probe_single_connector_modes(struct drm_connector *connector,
if (connector->status == connector_status_disconnected) {
DRM_DEBUG_KMS("%s is disconnected\n",
drm_get_connector_name(connector));
- goto prune;
+ /* TODO set EDID to NULL */
+ return 0;
}

count = (*connector_funcs->get_modes)(connector);
@@ -132,7 +133,6 @@ int drm_helper_probe_single_connector_modes(struct drm_connector *connector,
mode);
}

-prune:
drm_mode_prune_invalid(dev, &connector->modes, true);

if (list_empty(&connector->modes))
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/