[Nouveau] Xvideo blitter with randr12 enabled

Bernhard Kaindl bk at suse.de
Wed Sep 5 09:11:01 PDT 2007


Arthur asked me for my status of the blitter with randr12:

The blitter works for me with the Option Randr12 (master branch) enabled as
long as I do not change the startup layout of nouveau which currently always
cloned display on the second monitor to a side-by-side layout with this

xrandr --output Digital-0 --left-of Digital-1

or this

xrandr --output Digital-1 --pos 1680x1050

command (both have visually the same effect)

After I run these commands, the blitter causes a crash, which I hope we can debug.

when I have mplayer running when I run the xrandr to move Digital-1 to the
right of Digital-0, the blitter keeps running but the montiors go into sleep
mode when I quit mplayer. X still keeps running, the last messages are:

writting vpll 00021B05
writting vpll2 00021B05
output 1 debug_0 01101191
savep->dither 00060000
1: crtc 1 output1: 0100: twocrt 0 twomon 1
output 0 debug_0 01101191
savep->dither 000B0000
1: crtc 0 output0: 0000: twocrt 0 twomon 1
output 1 debug_0 01101191
savep->dither 00060000
1: crtc 1 output1: 0100: twocrt 0 twomon 1

and attaching to X with gdb X `pidof X` gives:

(gdb) bt
#0  0x00002b6b3cde7ea3 in select () from /lib64/libc.so.6
#1  0x000000000056a99a in WaitForSomething (pClientsReady=0x7fff6f10fe80)
     at WaitFor.c:239
#2  0x0000000000450c7a in Dispatch () at dispatch.c:383
#3  0x0000000000439a15 in main (argc=6, argv=0x7fff6f110428,
     envp=<value optimized out>) at main.c:445

I emtied the dmesg buffer with dmesg -c before quitting mplayer but it
does not show new drm debug messages at this point.

I get some messages which might give a clue when starting mplayer after getting
the monitors side by side)

chvt 1 and chvt 7 (back to X) still work, but the chvt 7 does not restore
the X display properly, it seems that the LockUnlock things on console
witch are not working right yet. This reproduces without mplayer ever
started, so that's another thing which I can look at.

When I put the monitors side-by-side before starting mplayer, I get these logs:

(EE) NOUVEAU(0): Notifier (0xd8000003) timeout!
(II) NOUVEAU(0): Fifo dump (lockup 0x164c,0x164c):
(II) NOUVEAU(0): [0x1638] 0x0801d000
(II) NOUVEAU(0): [0x1639] 0x00000000
(II) NOUVEAU(0): [0x163a] 0x000482fc
(II) NOUVEAU(0): [0x163b] 0x00000003
(II) NOUVEAU(0): [0x163c] 0x00100300
(II) NOUVEAU(0): [0x163d] 0x0000000b
(II) NOUVEAU(0): [0x163e] 0x34803480
(II) NOUVEAU(0): [0x163f] 0x00008000
(II) NOUVEAU(0): [0x1640] 0x00008000
(II) NOUVEAU(0): [0x1641] 0x00048300
(II) NOUVEAU(0): [0x1642] 0x00000003
(II) NOUVEAU(0): [0x1643] 0x000483fc
(II) NOUVEAU(0): [0x1644] 0x00000000
(II) NOUVEAU(0): [0x1645] 0x00088400
(II) NOUVEAU(0): [0x1646] 0x02d102d3
(II) NOUVEAU(0): [0x1647] 0x00060003
(II) NOUVEAU(0): [0x1648] 0x00042104
(II) NOUVEAU(0): [0x1649] 0x00000000
(II) NOUVEAU(0): [0x164a] 0x00042100
(II) NOUVEAU(0): [0x164b] 0x00000000
(II) NOUVEAU(0): [0x164c] 0xd8000001
(II) NOUVEAU(0): [0x164d] 0x0020c30c
(II) NOUVEAU(0): [0x164e] 0x00001000
(II) NOUVEAU(0): [0x164f] 0x00d90d06
(II) NOUVEAU(0): [0x1650] 0x00000004
(II) NOUVEAU(0): [0x1651] 0x00000040
(II) NOUVEAU(0): [0x1652] 0x00000004
(II) NOUVEAU(0): [0x1653] 0x00000002
(II) NOUVEAU(0): [0x1654] 0x00000101
(II) NOUVEAU(0): [0x1655] 0x00000000
(II) NOUVEAU(0): End of fifo dump

Fatal server error:
DMA queue hang: dmaPut=164c, current=164c, status=4041

As Arthur told me that those do not tell anything, here are the drm debug messages:

I should also mention that the two montors go black immedately, then
I hear the sound of the video, and then the sound stops and the X
displays return to text mode with the crash.

That's the printks which I capture with dmesg from start of mplayer
until X starting to crash:

[drm:drm_unlocked_ioctl] pid=17689, cmd=0xc0206448, nr=0x48, dev 0xe200, auth=1
[drm:drm_addmap_core] offset = 0xc801d000, size = 0x00066000, type = 0
[drm:nouveau_mem_alloc] allocated 0x801d000 type=0x00000101
[drm:drm_mmap_locked] start = 0x2b6b5e459000, end = 0x2b6b5e4bf000, page offset = 0xc801d
[drm:drm_mmap_locked]    Type = 0; start = 0x2b6b5e459000, end = 0x2b6b5e4bf000, offset = 0xc801d000
[drm:drm_vm_open_locked] 0x2b6b5e459000,0x00066000
[drm:drm_unlocked_ioctl] pid=17689, cmd=0xc0206448, nr=0x48, dev 0xe200, auth=1
[drm:drm_addmap_core] offset = 0x003ca000, size = 0x00066000, type = 4
[drm:nouveau_mem_alloc] allocated 0x3ca000 type=0x00000110
[drm:drm_mmap_locked] start = 0x2b6b5e4bf000, end = 0x2b6b5e525000, page offset = 0x1f001
[drm:drm_vm_open_locked] 0x2b6b5e4bf000,0x00066000
[drm:drm_unlocked_ioctl] pid=17689, cmd=0xc0206448, nr=0x48, dev 0xe200, auth=1
[drm:drm_addmap_core] offset = 0x00430000, size = 0x00066000, type = 4
[drm:nouveau_mem_alloc] allocated 0x430000 type=0x00000110
[drm:drm_mmap_locked] start = 0x2b6b5e525000, end = 0x2b6b5e58b000, page offset = 0x1f002
[drm:drm_vm_open_locked] 0x2b6b5e525000,0x00066000
[drm:drm_unlocked_ioctl] pid=17689, cmd=0xc0106446, nr=0x46, dev 0xe200, auth=1
[drm:nouveau_gpuobj_dma_new] ch1 class=0x003d offset=0x3c9020 size=0x20
[drm:nouveau_gpuobj_dma_new] access=0 target=8
[drm:nouveau_gpuobj_new] ch1 size=16 align=16 flags=0x00000006
[drm:nouveau_gpuobj_new] gpuobj ffff810064bb3a40
[drm:nouveau_gpuobj_new] global heap fallback
[drm:nouveau_gpuobj_dma_new] Creating PCI DMA object using virtual zone starting at 0x3c9020, size 32
[drm:nouveau_gpuobj_ref_add] ch1 h=0xe8000000 gpuobj=ffff810064bb3a40
[drm:nouveau_ramht_hash_handle] ch1 handle=0xe8000000
[drm:nouveau_ramht_hash_handle] hash=0x000001e8
[drm:nouveau_ramht_insert] insert ch1 0x000001e8: h=0xe8000000, c=0x00807d8f
[drm:drm_do_vm_sg_nopage]
(this last line is repeated 101 times)

Here is a second try:

[drm:drm_unlocked_ioctl] pid=17904, cmd=0xc0206448, nr=0x48, dev 0xe200, auth=1
[drm:drm_addmap_core] offset = 0xc801d000, size = 0x00066000, type = 0
[drm:nouveau_mem_alloc] allocated 0x801d000 type=0x00000101
[drm:drm_mmap_locked] start = 0x2b5053a30000, end = 0x2b5053a96000, page offset = 0xc801d
[drm:drm_mmap_locked]    Type = 0; start = 0x2b5053a30000, end = 0x2b5053a96000, offset = 0xc801d000
[drm:drm_vm_open_locked] 0x2b5053a30000,0x00066000
[drm:drm_unlocked_ioctl] pid=17904, cmd=0xc0206448, nr=0x48, dev 0xe200, auth=1
[drm:drm_addmap_core] offset = 0x003ca000, size = 0x00066000, type = 4
[drm:nouveau_mem_alloc] allocated 0x3ca000 type=0x00000110
[drm:drm_mmap_locked] start = 0x2b5053a96000, end = 0x2b5053afc000, page offset = 0x1f001
[drm:drm_vm_open_locked] 0x2b5053a96000,0x00066000
[drm:drm_unlocked_ioctl] pid=17904, cmd=0xc0206448, nr=0x48, dev 0xe200, auth=1
[drm:drm_addmap_core] offset = 0x00430000, size = 0x00066000, type = 4
[drm:nouveau_mem_alloc] allocated 0x430000 type=0x00000110
[drm:drm_mmap_locked] start = 0x2b5053afc000, end = 0x2b5053b62000, page offset = 0x1f002
[drm:drm_vm_open_locked] 0x2b5053afc000,0x00066000
[drm:drm_do_vm_sg_nopage]
(also repeated 101 times)

I pressesd dmesg -c >outfile at the time about 2-3 seconds after I started
mplayer, at the same time I pressed return, sound ended and the text mode
restoration was done. I attached the remaining final messages after these 2-3
seconds.

Bernhard

PS: DPMS also does not bring the display back when I after I have put
the mointors side by side with xrandr. For me this DPMS issue could
be easyer to debug, I hope, but first I would like to get the console
switch working as it should and as I had it with my patch to the randr
branch.
-------------- next part --------------
[drm:drm_vm_shm_close] 0x2b50478fd000,0x00002000
[drm:drm_vm_close] 0x2b50494c4000,0x08000000
[drm:drm_vm_close] 0x2b50514c4000,0x003c0000
[drm:drm_vm_close] 0x2b5051884000,0x00010000
[drm:drm_vm_close] 0x2b5051894000,0x00004000
[drm:drm_vm_close] 0x2b5051898000,0x00008000
[drm:drm_vm_close] 0x2b50518a0000,0x00010000
[drm:drm_vm_close] 0x2b50518b0000,0x00001000
[drm:drm_vm_close] 0x2b5051f0a000,0x00001000
[drm:drm_vm_close] 0x2b5053a30000,0x00066000
[drm:drm_vm_close] 0x2b5053a96000,0x00066000
[drm:drm_vm_close] 0x2b5053afc000,0x00066000
[drm:drm_release] open_count = 1
[drm:nouveau_fifo_cleanup] clearing FIFO enables from file_priv
[drm] nouveau_fifo_free: freeing fifo 1
[drm:nouveau_gpuobj_ref_del] ref ffff8100492172c0
[drm:nouveau_gpuobj_del] gpuobj ffff8100750c83c0
[drm:nouveau_gpuobj_ref_del] ref ffff81006e3cf280
[drm:nouveau_gpuobj_del] gpuobj ffff81007245dec0
[drm:nouveau_gpuobj_ref_del] ref ffff81006720c9c0
[drm:nouveau_gpuobj_del] gpuobj ffff8100750c88c0
[drm:nouveau_mem_free] freeing 0x3c1000 type=0x00000110
[drm:nouveau_gpuobj_channel_takedown] ch1
[drm:nouveau_gpuobj_ref_del] ref ffff81005467e840
[drm:nouveau_ramht_hash_handle] ch1 handle=0xd8000001
[drm:nouveau_ramht_hash_handle] hash=0x000001d0
[drm:nouveau_ramht_remove] remove ch1 0x000001d0: h=0xd8000001, c=0x00000000
[drm:nouveau_gpuobj_del] gpuobj ffff81007245d1c0
[drm:nouveau_gpuobj_ref_del] ref ffff81003b9097c0
[drm:nouveau_ramht_hash_handle] ch1 handle=0xd8000002
[drm:nouveau_ramht_hash_handle] hash=0x000001c8
[drm:nouveau_ramht_remove] remove ch1 0x000001c8: h=0xd8000002, c=0x00000000
[drm:nouveau_gpuobj_del] gpuobj ffff8100750c8440
[drm:nouveau_gpuobj_ref_del] ref ffff8100320cbc80
[drm:nouveau_ramht_hash_handle] ch1 handle=0x00000000
[drm:nouveau_ramht_hash_handle] hash=0x00000100
[drm:nouveau_ramht_remove] remove ch1 0x00000100: h=0x00000000, c=0x00000000
[drm:nouveau_gpuobj_del] gpuobj ffff8100750c8140
[drm:nouveau_gpuobj_ref_del] ref ffff81003b909f40
[drm:nouveau_ramht_hash_handle] ch1 handle=0xd8000003
[drm:nouveau_ramht_hash_handle] hash=0x000001c0
[drm:nouveau_ramht_remove] remove ch1 0x000001c0: h=0xd8000003, c=0x00000000
[drm:nouveau_gpuobj_del] gpuobj ffff810037fb6240
[drm:nouveau_notifier_gpuobj_dtor] 
[drm:nouveau_gpuobj_ref_del] ref ffff81003efa35c0
[drm:nouveau_ramht_hash_handle] ch1 handle=0x80000010
[drm:nouveau_ramht_hash_handle] hash=0x00000100
[drm:nouveau_ramht_remove] remove ch1 0x00000108: h=0x80000010, c=0x00000000
[drm:nouveau_gpuobj_del] gpuobj ffff81007245dcc0
[drm:nouveau_gpuobj_ref_del] ref ffff81004bc839c0
[drm:nouveau_ramht_hash_handle] ch1 handle=0x8000001b
[drm:nouveau_ramht_hash_handle] hash=0x00000158
[drm:nouveau_ramht_remove] remove ch1 0x00000158: h=0x8000001b, c=0x00000000
[drm:nouveau_gpuobj_del] gpuobj ffff81007245d940
[drm:nouveau_gpuobj_ref_del] ref ffff81004bc83e40
[drm:nouveau_ramht_hash_handle] ch1 handle=0x8000001c
[drm:nouveau_ramht_hash_handle] hash=0x00000160
[drm:nouveau_ramht_remove] remove ch1 0x00000160: h=0x8000001c, c=0x00000000
[drm:nouveau_gpuobj_del] gpuobj ffff81007245d8c0
[drm:nouveau_gpuobj_ref_del] ref ffff810064530840
[drm:nouveau_ramht_hash_handle] ch1 handle=0x80000012
[drm:nouveau_ramht_hash_handle] hash=0x00000110
[drm:nouveau_ramht_remove] remove ch1 0x00000110: h=0x80000012, c=0x00000000
[drm:nouveau_gpuobj_del] gpuobj ffff8100750c8940
[drm:nouveau_gpuobj_ref_del] ref ffff8100429bf180
[drm:nouveau_ramht_hash_handle] ch1 handle=0x80000011
[drm:nouveau_ramht_hash_handle] hash=0x00000108
[drm:nouveau_ramht_remove] remove ch1 0x00000118: h=0x80000011, c=0x00000000
[drm:nouveau_gpuobj_del] gpuobj ffff8100750c8ac0
[drm:nouveau_gpuobj_ref_del] ref ffff81003b9098c0
[drm:nouveau_ramht_hash_handle] ch1 handle=0x80000016
[drm:nouveau_ramht_hash_handle] hash=0x00000130
[drm:nouveau_ramht_remove] remove ch1 0x00000130: h=0x80000016, c=0x00000000
[drm:nouveau_gpuobj_del] gpuobj ffff8100750c8a40
[drm:nouveau_gpuobj_ref_del] ref ffff810075d8e680
[drm:nouveau_ramht_hash_handle] ch1 handle=0x80000015
[drm:nouveau_ramht_hash_handle] hash=0x00000128
[drm:nouveau_ramht_remove] remove ch1 0x00000128: h=0x80000015, c=0x00000000
[drm:nouveau_gpuobj_del] gpuobj ffff8100750c8840
[drm:nouveau_gpuobj_ref_del] ref ffff8100791a8900
[drm:nouveau_ramht_hash_handle] ch1 handle=0x80000017
[drm:nouveau_ramht_hash_handle] hash=0x00000138
[drm:nouveau_ramht_remove] remove ch1 0x00000138: h=0x80000017, c=0x00000000
[drm:nouveau_gpuobj_del] gpuobj ffff8100750c81c0
[drm:nouveau_gpuobj_ref_del] ref ffff81007aa7e740
[drm:nouveau_ramht_hash_handle] ch1 handle=0x80000013
[drm:nouveau_ramht_hash_handle] hash=0x00000118
[drm:nouveau_ramht_remove] remove ch1 0x00000120: h=0x80000013, c=0x00000000
[drm:nouveau_gpuobj_del] gpuobj ffff81007b8e8740
[drm:nouveau_gpuobj_ref_del] ref ffff8100320cb6c0
[drm:nouveau_ramht_hash_handle] ch1 handle=0x80000014
[drm:nouveau_ramht_hash_handle] hash=0x00000120
[drm:nouveau_ramht_remove] remove ch1 0x00000140: h=0x80000014, c=0x00000000
[drm:nouveau_gpuobj_del] gpuobj ffff810077648140
[drm:nouveau_gpuobj_ref_del] ref ffff81003b909b80
[drm:nouveau_ramht_hash_handle] ch1 handle=0x8000001a
[drm:nouveau_ramht_hash_handle] hash=0x00000150
[drm:nouveau_ramht_remove] remove ch1 0x00000150: h=0x8000001a, c=0x00000000
[drm:nouveau_gpuobj_del] gpuobj ffff8100776488c0
[drm:nouveau_gpuobj_ref_del] ref ffff810054ec8f40
[drm:nouveau_ramht_hash_handle] ch1 handle=0x80000018
[drm:nouveau_ramht_hash_handle] hash=0x00000140
[drm:nouveau_ramht_remove] remove ch1 0x00000148: h=0x80000018, c=0x00000000
[drm:nouveau_gpuobj_del] gpuobj ffff8100776481c0
[drm:nouveau_gpuobj_ref_del] ref ffff81003b909e80
[drm:nouveau_ramht_hash_handle] ch1 handle=0x80000019
[drm:nouveau_ramht_hash_handle] hash=0x00000148
[drm:nouveau_ramht_remove] remove ch1 0x00000168: h=0x80000019, c=0x00000000
[drm:nouveau_gpuobj_del] gpuobj ffff810077648e40
[drm:nouveau_gpuobj_ref_del] ref ffff81004bc83800
[drm:nouveau_ramht_hash_handle] ch1 handle=0xe8000000
[drm:nouveau_ramht_hash_handle] hash=0x000001e8
[drm:nouveau_ramht_remove] remove ch1 0x000001e8: h=0xe8000000, c=0x00000000
[drm:nouveau_gpuobj_del] gpuobj ffff81005977c440
[drm:nouveau_notifier_gpuobj_dtor] 
[drm:nouveau_gpuobj_ref_del] ref ffff81004bc83d00
[drm:nouveau_ramht_hash_handle] ch1 handle=0xe8000001
[drm:nouveau_ramht_hash_handle] hash=0x000001e0
[drm:nouveau_ramht_remove] remove ch1 0x000001e0: h=0xe8000001, c=0x00000000
[drm:nouveau_gpuobj_del] gpuobj ffff81005977ccc0
[drm:nouveau_notifier_gpuobj_dtor] 
[drm:nouveau_gpuobj_ref_del] ref ffff81004a288c00
[drm:nouveau_gpuobj_del] gpuobj 0000000000000000
[drm:nouveau_gpuobj_ref_del] ref 0000000000000000
[drm:nouveau_mem_free] freeing 0x3c9000 type=0x00000110
[drm:drm_release] pid = 17904, device = 0xe200, open_count = 1
[drm:drm_release] File ffff81005d04f4c0 released, freeing lock for context 1
[drm:drm_fasync] fd = -1, device = 0xe200
[drm:drm_lastclose] 
[drm:nouveau_card_takedown] prev state = 1
[drm:nouveau_dma_channel_takedown] 
[drm] nouveau_fifo_free: freeing fifo 0
[drm:nouveau_gpuobj_ref_del] ref ffff81003efa32c0
[drm:nouveau_gpuobj_del] gpuobj ffff8100750c8540
[drm:nouveau_gpuobj_ref_del] ref ffff81005b99b2c0
[drm:nouveau_gpuobj_del] gpuobj ffff8100750c8340
[drm:nouveau_gpuobj_ref_del] ref ffff8100743f5c40
[drm:nouveau_gpuobj_del] gpuobj ffff8100750c8ec0
[drm:nouveau_mem_free] freeing 0x0 type=0x00000101
[drm:nouveau_gpuobj_channel_takedown] ch0
[drm:nouveau_gpuobj_ref_del] ref ffff81006afd3680
[drm:nouveau_ramht_hash_handle] ch0 handle=0x8003d001
[drm:nouveau_ramht_hash_handle] hash=0x00000fc8
[drm:nouveau_ramht_remove] remove ch0 0x00000fc8: h=0x8003d001, c=0x00000000
[drm:nouveau_gpuobj_del] gpuobj ffff81007245d740
[drm:nouveau_gpuobj_ref_del] ref ffff8100708fbc80
[drm:nouveau_ramht_hash_handle] ch0 handle=0x8003d002
[drm:nouveau_ramht_hash_handle] hash=0x00000fd0
[drm:nouveau_ramht_remove] remove ch0 0x00000fd0: h=0x8003d002, c=0x00000000
[drm:nouveau_gpuobj_del] gpuobj ffff81007245d840
[drm:nouveau_gpuobj_ref_del] ref ffff81004a288780
[drm:nouveau_ramht_hash_handle] ch0 handle=0x8003d003
[drm:nouveau_ramht_hash_handle] hash=0x00000fd8
[drm:nouveau_ramht_remove] remove ch0 0x00000fd8: h=0x8003d003, c=0x00000000
[drm:nouveau_gpuobj_del] gpuobj ffff81007245d7c0
[drm:nouveau_notifier_gpuobj_dtor] 
[drm:nouveau_gpuobj_ref_del] ref ffff81005457c280
[drm:nouveau_ramht_hash_handle] ch0 handle=0x80039001
[drm:nouveau_ramht_hash_handle] hash=0x00000ec8
[drm:nouveau_ramht_remove] remove ch0 0x00000ec8: h=0x80039001, c=0x00000000
[drm:nouveau_gpuobj_del] gpuobj ffff81007245d540
[drm:nouveau_gpuobj_ref_del] ref ffff81003b909c40
[drm:nouveau_gpuobj_del] gpuobj 0000000000000000
[drm:nouveau_gpuobj_ref_del] ref 0000000000000000
[drm:nouveau_mem_free] freeing 0x0 type=0x00000110
[drm:nouveau_gpuobj_del] gpuobj 0000000000000000
[drm:nouveau_gpuobj_takedown] 
[drm:nouveau_gpuobj_del] gpuobj ffff81007245da40
[drm:drm_irq_uninstall] drm_irq_uninstall: irq=16
[drm:nouveau_gpuobj_late_takedown] 
[drm:drm_lastclose] driver lastclose completed
[drm:drm_lastclose] lastclose completed


More information about the Nouveau mailing list