On Fri, Feb 20, 2009 at 7:10 PM, JP Fournier
Here's the result from my testing:
- current git + this patch : - CPU usage back to normal when playing regular 640x480 mpeg2 xvideo in mythtv (say 5% Xorg CPU usage) - zooming in on the recording in mythtv still results in a runaway Xorg process (100% CPU - even kill -9 did not work (neat))
Since I never ran the zoom test for you in mythtv with the previous debug patch, I figured I'd give it a shot:
(normal video) wait_vline_range: start 0 stop 1079 wait_vline_range: start 0 stop 1079 wait_vline_range: start 0 stop 1079 wait_vline_range: start 0 stop 1079 (zoom in) wait_vline_range: start -90 stop 1169 (WW) RADEONHD(0): DRMCPIdle: DRM CP IDLE returned BUSY! (WW) RADEONHD(0): DRMCPIdle: DRM CP IDLE returned BUSY! (WW) RADEONHD(0): DRMCPIdle: DRM CP IDLE returned BUSY! (WW) RADEONHD(0): DRMCPIdle: DRM CP IDLE returned BUSY! (WW) RADEONHD(0): DRMCPIdle: DRM CP IDLE returned BUSY! (WW) RADEONHD(0): DRMCPIdle: DRM CP IDLE returned BUSY! (WW) RADEONHD(0): DRMCPIdle: DRM CP IDLE returned BUSY! (WW) RADEONHD(0): DRMCPIdle: DRM CP IDLE returned BUSY! (WW) RADEONHD(0): DRMCPIdle: DRM CP IDLE returned BUSY! (WW) RADEONHD(0): DRMCPIdle: DRM CP IDLE returned BUSY! (WW) RADEONHD(0): DRMCPIdle: DRM CP IDLE returned BUSY! (WW) RADEONHD(0): DRMCPIdle: DRM CP IDLE returned BUSY! (WW) RADEONHD(0): DRMCPIdle: DRM CP IDLE returned BUSY! (WW) RADEONHD(0): DRMCPIdle: DRM CP IDLE returned BUSY! (WW) RADEONHD(0): DRMCPIdle: DRM CP IDLE returned BUSY! (WW) RADEONHD(0): DRMCPIdle: DRM CP IDLE returned BUSY!
Seems like dmesg logs are getting flooded too:
[ 465.356686] [drm] wait idle failed status : 0xA0003030 0x00000003 [ 465.460908] [drm] wait idle failed status : 0xA0003030 0x00000003 [ 465.565086] [drm] wait idle failed status : 0xA0003030 0x00000003 [ 465.669180] [drm] wait idle failed status : 0xA0003030 0x00000003
Just in case I've applied your patch incorrectly, this is what my wait_vline_range function looks like:
void wait_vline_range(ScrnInfoPtr pScrn, drmBufPtr ib, int crtc, int start, int stop) { RHDPtr rhdPtr = RHDPTR(pScrn);
ErrorF("wait_vline_range: start %d stop %d\n", start, stop);
if ((crtc < 0) || (crtc > 1)) return;
if(!rhdPtr->Crtc[crtc]->Active) return;
start = max(start, 0); stop = min(stop, rhdPtr->Crtc[crtc]->Height);
if (stop <= start) return;
/* set the VLINE range */ if(crtc == 0) ereg(ib, D1MODE_VLINE_START_END, start | (stop << 16)); else ereg(ib, D2MODE_VLINE_START_END, start | (stop << 16));
/* tell the CP to poll the VLINE state register */ pack3 (ib, IT_WAIT_REG_MEM, 6); e32 (ib, WAIT_REG | WAIT_EQ); if(crtc == 0) e32 (ib, D1MODE_VLINE_STATUS >> 2); else e32 (ib, D2MODE_VLINE_STATUS >> 2); e32 (ib, 0); e32 (ib, 0); // Ref value e32 (ib, 0x1000); // Mask e32 (ib, 10); // Wait interval }
regards,
jp
On Friday 20 February 2009 12:16:46 Christian König wrote:
Hi,
attached is a patch that should fix the problem with the runaway process. Please do a git reset before applying this patch.
Thanks for testing, Christian.
Similar story here. I recently updated my mplayer, and now the pan/zoom doesn't crash anymore, however, it doesn't zoom evenly on the video; the video is shifted as it zooms so the left edge stays stationary. The excess video goes off the right edge with no problem. Now my X.org.0.log says the following on crashing in Mythtv when zooming: (Xorg.0.log) wait_vline_range: start 0 stop 1023 wait_vline_range: start 0 stop 1023 wait_vline_range: start 0 stop 1023 wait_vline_range: start 0 stop 1108 (WW) RADEONHD(0): DRMCPIdle: DRM CP IDLE returned BUSY! (WW) RADEONHD(0): DRMCPIdle: DRM CP IDLE returned BUSY! (WW) RADEONHD(0): DRMCPIdle: DRM CP IDLE returned BUSY! (message) Feb 20 22:05:16 killbot kernel: [drm] wait idle failed status : 0xA0003030 0x00000003 Feb 20 22:05:19 killbot last message repeated 25 times Feb 20 22:05:19 killbot kernel: [drm] wait idle failed status : 0xA00030B0 0x00000003 Feb 20 22:05:19 killbot kernel: [drm] wait idle failed status : 0xA0003030 0x00000003 Feb 20 22:05:20 killbot last message repeated 15 times Feb 20 22:05:21 killbot kernel: [drm] wait idle failed status : 0xA00030F0 0x00000003 Feb 20 22:05:21 killbot kernel: [drm] wait idle failed status : 0xA0003030 0x00000003 Feb 20 22:05:29 killbot last message repeated 83 times Feb 20 22:05:29 killbot kernel: [drm] wait idle failed status : 0xA00030B0 0x00000003 Feb 20 22:05:29 killbot kernel: [drm] wait idle failed status : 0xA0003030 0x00000003 Feb 20 22:05:32 killbot last message repeated 24 times This is on the machine with the HD 2600. I can test the HD3300 machine also if you would like. I hope this helps, Patrick -- To unsubscribe, e-mail: radeonhd+unsubscribe@opensuse.org For additional commands, e-mail: radeonhd+help@opensuse.org