Re: [radeonhd] Re: Post to radeonhd@opensuse.org denied
?ukasz Bednarczyk writes:
thanks for the heads-up about the new version. i gave it a shot but to no avail. i still get the message "cannot idle MC" followed by a crash, log included.
i'm using the snapshot version:
commit a838114e998a779ce64b894bf8cc34f93647c001 Author: Egbert Eich
Date: Mon Oct 19 17:36:16 2009 +0200
[...]
(II) RADEONHD(0): Current Engine Clock: 13823570 (II) RADEONHD(0): Current Memory Clock: 9215710 (II) RADEONHD(0): Current Chip Voltage: 0 (EE) RADEONHD(0): D1CRTCDisable: Failed to Unsync CRTC 1 (EE) RADEONHD(0): rhdAllIdle: unable to stop CRTC: cannot idle MC
Fatal server error: AddScreen/ScreenInit failed for driver 0
Please consult the The X.Org Foundation support at http://wiki.x.org for help. Please also check the log file at "/var/log/Xorg.0.log" for additional information.
ddxSigGiveUp: Closing log
Could you please try the following patch? Cheers, Egbert. diff --git a/src/rhd_crtc.c b/src/rhd_crtc.c index ea0728c..3e59026 100644 --- a/src/rhd_crtc.c +++ b/src/rhd_crtc.c @@ -1019,15 +1019,20 @@ D1CRTCDisable(struct rhdCrtc *Crtc) CARD32 Control = RHDRegRead(Crtc, D1CRTC_CONTROL); int i; - RHDRegMask(Crtc, D1CRTC_CONTROL, 0, 0x00000301); + RHDRegMask(Crtc, D1CRTC_CONTROL, 0x00000300, 0x00000301); (void)RHDRegRead(Crtc, D1CRTC_CONTROL); - for (i = 0; i < CRTC_SYNC_WAIT; i++) + for (i = 0; i < CRTC_SYNC_WAIT; i++) { + usleep (14); if (!(RHDRegRead(Crtc, D1CRTC_CONTROL) & 0x00010000)) { RHDDebug(Crtc->scrnIndex, "%s: %d loops\n", __func__, i); RHDRegMask(Crtc, D1CRTC_CONTROL, Control, 0x00000300); return TRUE; } + } + + RHDRegMask(Crtc, D1CRTC_CONTROL, 0, 0x00000300); + usleep (14); xf86DrvMsg(Crtc->scrnIndex, X_ERROR, "%s: Failed to Unsync %s\n", __func__, Crtc->Name); RHDRegMask(Crtc, D1CRTC_CONTROL, Control, 0x00000300); @@ -1046,15 +1051,20 @@ D2CRTCDisable(struct rhdCrtc *Crtc) CARD32 Control = RHDRegRead(Crtc, D2CRTC_CONTROL); int i; - RHDRegMask(Crtc, D2CRTC_CONTROL, 0, 0x00000301); + RHDRegMask(Crtc, D2CRTC_CONTROL, 0x00000300, 0x00000301); (void)RHDRegRead(Crtc, D2CRTC_CONTROL); - for (i = 0; i < CRTC_SYNC_WAIT; i++) + for (i = 0; i < CRTC_SYNC_WAIT; i++) { + usleep(14); if (!(RHDRegRead(Crtc, D2CRTC_CONTROL) & 0x00010000)) { RHDDebug(Crtc->scrnIndex, "%s: %d loops\n", __func__, i); RHDRegMask(Crtc, D2CRTC_CONTROL, Control, 0x00000300); return TRUE; } + } + + RHDRegMask(Crtc, D2CRTC_CONTROL, 0, 0x00000300); + usleep(14); xf86DrvMsg(Crtc->scrnIndex, X_ERROR, "%s: Failed to Unsync %s\n", __func__, Crtc->Name); RHDRegMask(Crtc, D2CRTC_CONTROL, Control, 0x00000300);
hi, i have done a git pull and applied the patch afterwards. this time it not only did crash the xorg but also froze the machine (some flicker and finally a blank screen). it seems the latest xorg.log (included) is somewhat truncated, since i had to power cycle the machine. i home my input will somehow help. best regards, LB Egbert Eich wrote:
?ukasz Bednarczyk writes:
thanks for the heads-up about the new version. i gave it a shot but to no avail. i still get the message "cannot idle MC" followed by a crash, log included.
i'm using the snapshot version:
commit a838114e998a779ce64b894bf8cc34f93647c001 Author: Egbert Eich
Date: Mon Oct 19 17:36:16 2009 +0200 [...]
(II) RADEONHD(0): Current Engine Clock: 13823570 (II) RADEONHD(0): Current Memory Clock: 9215710 (II) RADEONHD(0): Current Chip Voltage: 0 (EE) RADEONHD(0): D1CRTCDisable: Failed to Unsync CRTC 1 (EE) RADEONHD(0): rhdAllIdle: unable to stop CRTC: cannot idle MC
Fatal server error: AddScreen/ScreenInit failed for driver 0
Please consult the The X.Org Foundation support at http://wiki.x.org for help. Please also check the log file at "/var/log/Xorg.0.log" for additional information.
ddxSigGiveUp: Closing log
Could you please try the following patch?
Cheers, Egbert.
participants (2)
-
Egbert Eich
-
Łukasz Bednarczyk