Comment 0 for bug 141063

Hello:

I've seen this thread on the mailing list http://lists.freedesktop.org/archives/xorg/2007-September/028271.html and after this I've started trying.

Indeed on my i855GM equipped Dell inspiron 510m laptop, the computer locked totally when trying to play video using Xv for the second time in a row.

I'm attaching the Xorg.log and my xorg.conf. This all is with latest git version.

This is the backtrace with key frames listing:
#0 0xffffe410 in ?? ()
#1 0xbf9cf61c in ?? ()
#2 0x00000006 in ?? ()
#3 0x00000e69 in ?? ()
#4 0xb7d577f5 in raise () from /lib/i686/cmov/libc.so.6
#5 0xb7d59181 in abort () from /lib/i686/cmov/libc.so.6
#6 0x081c60db in FatalError (f=0xb7b9b8dc "lockup\n") at ../../os/log.c:555
#7 0xb7b71592 in I830WaitLpRing (pScrn=0x8211af0, n=131064, timeout_millis=0) at ../../src/i830_accel.c:150
#8 0xb7b717e2 in I830Sync (pScrn=0x8211af0) at ../../src/i830_accel.c:201
#9 0xb7b8463b in I830StopVideo (pScrn=0x8211af0, data=0x825598c, shutdown=1) at ../../src/i830_video.c:1017
#10 0xb7b8474b in i830_crtc_dpms_video (crtc=0x82143c0, on=0) at ../../src/i830_video.c:2845
#11 0xb7b75de0 in i830_crtc_dpms (crtc=0x82143c0, mode=3) at ../../src/i830_display.c:713
#12 0xb7b7820d in RestoreHWState (pScrn=0x8211af0) at ../../src/i830_driver.c:1987
#13 0xb7b7a00b in I830LeaveVT (scrnIndex=0, flags=0) at ../../src/i830_driver.c:3018
#14 0xb7a3b467 in XAALeaveVT (index=0, flags=0) at ../../../../hw/xfree86/xaa/xaaInit.c:691
#15 0x080db6ed in xf86XVLeaveVT (index=0, flags=0) at ../../../../hw/xfree86/common/xf86xv.c:1278
#16 0xb7c1928f in glxDRILeaveVT (index=0, flags=0) at ../../../GL/glx/glxdri.c:839
#17 0x080a73cd in AbortDDX () at ../../../../hw/xfree86/common/xf86Init.c:1287
#18 0x081c5bc3 in AbortServer () at ../../os/log.c:407
#19 0x081c60c6 in FatalError (f=0x81d0dbc "Caught signal %d. Server aborting\n") at ../../os/log.c:553
#20 0x080c86a0 in xf86SigHandler (signo=11) at ../../../../hw/xfree86/common/xf86Events.c:1460
#21 0xffffe420 in ?? ()
#22 0x0000000b in ?? ()
#23 0x00000033 in ?? ()
#24 0xc0100000 in ?? ()
#25 0x0000007b in ?? ()
#26 0x0000007b in ?? ()
#27 0x08211af0 in ?? ()
#28 0x089f0fc0 in ?? ()
#29 0xbf9cfd48 in ?? ()
#30 0xbf9cfd30 in ?? ()
#31 0xb7ba6808 in ?? () from /usr/lib/xorg/modules/drivers//intel_drv.so
#32 0x087b34e0 in ?? ()
#33 0x00000000 in ?? ()

#7 0xb7b71592 in I830WaitLpRing (pScrn=0x8211af0, n=131064, timeout_millis=0) at ../../src/i830_accel.c:150
150 FatalError("lockup\n");
145 pI830->AccelInfoRec = NULL; /* Stops recursive behavior */
146 #endif
147 #ifdef I830_USE_EXA
148 pI830->EXADriverPtr = NULL;
149 #endif
150 FatalError("lockup\n");
151 }
152
153 DELAY(10);
154 }

#8 0xb7b717e2 in I830Sync (pScrn=0x8211af0) at ../../src/i830_accel.c:201
201 I830WaitLpRing(pScrn, pI830->LpRing->mem->size - 8, 0);
196 OUT_RING(MI_FLUSH | flags);
197 OUT_RING(MI_NOOP); /* pad to quadword */
198 ADVANCE_LP_RING();
199 }
200
201 I830WaitLpRing(pScrn, pI830->LpRing->mem->size - 8, 0);
202
203 pI830->LpRing->space = pI830->LpRing->mem->size - 8;
204 pI830->nextColorExpandBuf = 0;
205 }

#9 0xb7b8463b in I830StopVideo (pScrn=0x8211af0, data=0x825598c, shutdown=1) at ../../src/i830_video.c:1017
1017 I830Sync(pScrn);
1012 if (pI830->entityPrivate)
1013 pI830->entityPrivate->XvInUse = -1;
1014 }
1015 /* Sync before freeing the buffer, because the pages will be unbound.
1016 */
1017 I830Sync(pScrn);
1018 i830_free_memory(pScrn, pPriv->buf);
1019 pPriv->videoStatus = 0;
1020 } else {
1021 if (pPriv->videoStatus & CLIENT_VIDEO_ON) {

#10 0xb7b8474b in i830_crtc_dpms_video (crtc=0x82143c0, on=0) at ../../src/i830_video.c:2845
2845 I830StopVideo(pScrn, pPriv, TRUE);
2840 } else {
2841 /* We stop the video when mode switching, so we don't lock up
2842 * the engine. The overlayOK will determine whether we can re-enable
2843 * with the current video on completion of the mode switch.
2844 */
2845 I830StopVideo(pScrn, pPriv, TRUE);
2846 pPriv->overlayOK = FALSE;
2847 pPriv->oneLineMode = FALSE;
2848 }
2849 }

#11 0xb7b75de0 in i830_crtc_dpms (crtc=0x82143c0, mode=3) at ../../src/i830_display.c:713
713 i830_crtc_dpms_video(crtc, FALSE);
708 /* Shut off compression if in use */
709 if (i830_use_fb_compression(crtc))
710 i830_disable_fb_compression(crtc);
711
712 /* Give the overlay scaler a chance to disable if it's on this pipe */
713 i830_crtc_dpms_video(crtc, FALSE);
714
715 /* Disable the VGA plane that we never use */
716 OUTREG(VGACNTRL, VGA_DISP_DISABLE);
717

#12 0xb7b7820d in RestoreHWState (pScrn=0x8211af0) at ../../src/i830_driver.c:1987
1987 crtc->funcs->dpms(crtc, DPMSModeOff);
1982 i830WaitForVblank(pScrn);
1983
1984 /* Disable pipes */
1985 for (i = 0; i < xf86_config->num_crtc; i++) {
1986 xf86CrtcPtr crtc = xf86_config->crtc[i];
1987 crtc->funcs->dpms(crtc, DPMSModeOff);
1988 }
1989 i830WaitForVblank(pScrn);
1990
1991 if (IS_MOBILE(pI830) && !IS_I830(pI830))

#13 0xb7b7a00b in I830LeaveVT (scrnIndex=0, flags=0) at ../../src/i830_driver.c:3018
3018 RestoreHWState(pScrn);
3013
3014 xf86_hide_cursors (pScrn);
3015
3016 ResetState(pScrn, TRUE);
3017
3018 RestoreHWState(pScrn);
3019
3020 if (pI830->debug_modes) {
3021 i830CompareRegsToSnapshot(pScrn, "After LeaveVT");
3022 i830DumpRegs (pScrn);

I think there should be some problem when closing Xv.

Thanks.