Now that my desktop 7500 is working smoothly, my laptop Mobility M6 LY is
wedging when the X server trys to synchronize with the engine.

It's easy to reproduce without using any GL applications:

        # XFree86 &
        # X=$!
        # chvt 1
        # chvt 7
        # kill $X

This same sequence wedges this chip with the XFree86 4.2 radeon DRM.  
Disable DRI and things are fine.

I enabled plenty of debugging in the radeon DRM. When switching to the 
console and back to X, I see:

 [drm:radeon_ioctl] pid=1406, cmd=0x4008642a, nr=0x2a, dev 0xe200, auth=1
 [drm:radeon_lock] 1 (pid 1406) requests lock (0x00000001), flags = 0x0000000a
 [drm:radeon_lock] 1 has lock
 [drm:radeon_ioctl] pid=1406, cmd=0x6444, nr=0x44, dev 0xe200, auth=1
 [drm:radeon_cp_idle] radeon_cp_idle
 [drm:radeon_do_cp_idle] radeon_do_cp_idle
 [drm:radeon_ioctl] pid=1406, cmd=0x40086442, nr=0x42, dev 0xe200, auth=1
 [drm:radeon_cp_stop] radeon_cp_stop
 [drm:radeon_do_cp_flush] radeon_do_cp_flush
 [drm:radeon_do_cp_idle] radeon_do_cp_idle
 [drm:radeon_do_cp_stop] radeon_do_cp_stop
 [drm:radeon_do_engine_reset] radeon_do_engine_reset
 [drm:radeon_do_cp_reset] radeon_do_cp_reset
 [drm:radeon_ioctl] pid=1406, cmd=0x6441, nr=0x41, dev 0xe200, auth=1
 [drm:radeon_cp_start] radeon_cp_start
 [drm:radeon_do_cp_start] radeon_do_cp_start
 [drm:radeon_ioctl] pid=1406, cmd=0x4008642a, nr=0x2a, dev 0xe200, auth=1
 [drm:radeon_lock] 1 (pid 1406) requests lock (0x00000001), flags = 0x0000000a
 [drm:radeon_lock] 1 has lock
 [drm:radeon_ioctl] pid=1406, cmd=0x6444, nr=0x44, dev 0xe200, auth=1
 [drm:radeon_cp_idle] radeon_cp_idle
 [drm:radeon_do_cp_idle] radeon_do_cp_idle
 [drm:radeon_ioctl] pid=1406, cmd=0xc0286429, nr=0x29, dev 0xe200, auth=1
 [drm:radeon_freelist_get]     skipping buf=0 pid=1406
 [drm:radeon_freelist_get]   ret buf=1 last=0 pid=0

(and then lots of radeon_cp_indirect calls as the root is repainted)

When the X server tries to shut down, I get:

 [drm:radeon_cp_stop] radeon_cp_stop
 [drm:radeon_do_cp_flush] radeon_do_cp_flush
 [drm:radeon_do_cp_idle] radeon_do_cp_idle
 [drm:radeon_do_wait_for_idle] *ERROR* failed!
 radeon_status:
 RBBM_STATUS = 0x80010140
 CP_RB_RTPR = 0x00000030
 CP_RB_WTPR = 0x00000055
 AIC_CNTL = 0x00000002
 AIC_STAT = 0x00000004
 AIC_PT_BASE = 0x00000000
 TLB_ADDR = 0x00000000
 TLB_DATA = 0x00000000

At this point, the server loops and I see the same sequence over and over 
until I kill the X server.  Further attempts to start the server fail in 
the same loop until the machine is rebooted.

A similar failure mode is:

        # XFree86 &
        # X=$!
        # glxgears -display :0 &
        # kill $!

This hangs the machine immediately, I do get one diagnostic out of the X 
server:

        (EE) RADEON(0): RADEONDRICloseScreen: CP stop -1022

But, the kernel diagnostics don't get written before the machine locks.
The number -1022 is supposed to be an errno from drmRadeonStopCP but
I can't see how it would get this value.

Keith Packard        XFree86 Core Team        Compaq Cambridge Research Lab



_______________________________________________
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to