Stable version 2.6.32.2 broke my KMS Radeon setup

From: Ruud Linders
Date: Sun Dec 20 2009 - 07:10:49 EST



Hello,

After upgrading from 2.6.32.1 to 2.6.32.2 my radeon KMS broke. Broke
meaning after kernel boot at the moment radeon module is loaded, I get a
blank screen, monitor goes in powersave mode and machine stops booting
(ping-able but can't login via ssh and nothing in the logs after
Sysrq-S-U-B reboot).

Upgraded userspace (drm/mesa/xf86-video-ati) to git version from
19-december but no change.

Note this happens on 2 different systems, both connected via DVI-D to an
LCD monitor:
Chipset: "ATI RV730XT [Radeon HD 4670]" (ChipID = 0x9490)
and
Chipset: "ATI Radeon HD 3200 Graphics" (ChipID = 0x9610)

So I started looking at the diff between 2.6.32.1 & 2.6.32.2, backing
out attached change makes everything work again. Anything else I can
provide to debug/fix this, let me know.

Ruud

--- atombios_crtc.c 2009-12-20 12:28:42.921933107 +0100
+++ atombios_crtc.c.NEW 2009-12-20 12:28:36.223818764 +0100
@@ -241,6 +241,7 @@
{
struct drm_device *dev = crtc->dev;
struct radeon_device *rdev = dev->dev_private;
+ struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc);

switch (mode) {
case DRM_MODE_DPMS_ON:
@@ -248,20 +249,19 @@
if (ASIC_IS_DCE3(rdev))
atombios_enable_crtc_memreq(crtc, 1);
atombios_blank_crtc(crtc, 0);
+ drm_vblank_post_modeset(dev, radeon_crtc->crtc_id);
+ radeon_crtc_load_lut(crtc);
break;
case DRM_MODE_DPMS_STANDBY:
case DRM_MODE_DPMS_SUSPEND:
case DRM_MODE_DPMS_OFF:
+ drm_vblank_pre_modeset(dev, radeon_crtc->crtc_id);
atombios_blank_crtc(crtc, 1);
if (ASIC_IS_DCE3(rdev))
atombios_enable_crtc_memreq(crtc, 0);
atombios_enable_crtc(crtc, 0);
break;
}
-
- if (mode != DRM_MODE_DPMS_OFF) {
- radeon_crtc_load_lut(crtc);
- }
}

static void