[CFT] drm updates

Paul B. Mahol onemda at gmail.com
Tue Aug 26 15:51:31 UTC 2008


On 8/26/08, Paul B. Mahol <onemda at gmail.com> wrote:
> On 8/25/08, Paul B. Mahol <onemda at gmail.com> wrote:
>> On 8/25/08, Robert Noland <rnoland at freebsd.org> wrote:
>>> On Sun, 2008-08-24 at 14:16 -0400, Jimmie James wrote:
>>>> Is this the type of lockup you're seeing?
>>>>
>>>>
>>>> Error in I830WaitLpRing(), timeout for 2 seconds
>>>> pgetbl_ctl: 0x3ffc0001getbl_err: 0x0
>>>> ipeir: 0 iphdr: 7d000006
>>>> LP ring tail: 1afa0 head: 1ad64 len: 1f001 start 0
>>>> eir: 0 esr: 0 emr: ffff
>>>> instdone: fa41 instpm: 0
>>>> memmode: 108 instps: 800f00c4
>>>> hwstam: fffe ier: 2 imr: 8 iir: 80
>>>> Ring at virtual 0x2884d000 head 0x1ad64 tail 0x1afa0 count 143
>>>>
>>>>
>>>>
>>>> (WW) intel(0): PRB0_CTL (0x0001f001) indicates ring buffer enabled
>>>> (WW) intel(0): PRB0_HEAD (0x13e1ad64) and PRB0_TAIL (0x0001afa8)
>>>> indicate ring buffer not flushed
>>>> (WW) intel(0): Existing errors found in hardware state.
>>>
>>> Possibly, I haven't gotten this output though.  Can you describe how you
>>> reached this state?
>>>
>>> robert.
>>
>> I dont have last 3 "(WW)" lines.
>>
>
> Actually I have, but with UP kernel:
>
> (WW) intel(0): PRB0_CTL (0x0001f001) indicates ring buffer enabled
> (WW) intel(0): PRB0_HEAD (0x0000afdc) and PRB0_TAIL (0x0000dd98)
> indicate ring buffer not flushed
> (WW) intel(0): Existing errors found in hardware state.
>
> And on UP kernel it is posible to kill Xorg via keyboard
> (ctrl+alt+backspace)
> but it fails to start again.
>
> Error in I830WaitLpRing(), timeout for 2 seconds
> pgetbl_ctl: 0x3ffc0001 getbl_err: 0x00000000
> ipeir: 0x00000000 iphdr: 0x6db3ffff
> LP ring tail: 0x00001ee0 head: 0x0000afdc len: 0x0001f001 start 0x00000000
> eir: 0x0000 esr: 0x0000 emr: 0xffff
> instdone: 0xffc1 instpm: 0x0000
> memmode: 0x00000306 instps: 0x800f04d0
> hwstam: 0xeffe ier: 0x0002 imr: 0x0000 iir: 0x1070
>
>> It can be caused by any application that use direct rendering: 3D
>> games(OpenGL):
>> examples are zsnes, celestia, stellarium, etc.
>
> On UP kernel I tested blender.
>
>> I'm using SMP kernel.
>>
>>
>> Last fatal server error from recent Xorg.0.log.old had following last
>> lines:
>>
>> (**) intel(0): Framebuffer compression enabled
>> (**) intel(0): Tiling enabled
>> (==) intel(0): Write-combining range (0xf4400000,0x80000) was already
>> clear
>> (==) intel(0): Write-combining range (0xf4480000,0x40000) was already
>> clear
>> (==) intel(0): VideoRam: 7932 KB
>> (II) intel(0): Attempting memory allocation with tiled buffers.
>> (EE) intel(0): Failed to allocate framebuffer. Is your VideoRAM set too
>> low?
>> (II) intel(0): Tiled allocation failed.
>> (WW) intel(0): Couldn't allocate tiled memory, fb compression disabled
>> (II) intel(0): Attempting memory allocation with untiled buffers.
>> (WW) intel(0): Failed to allocate EXA offscreen memory.
>> (II) intel(0): Untiled allocation failed.
>> (II) intel(0): Couldn't allocate 3D memory, disabling DRI.
>>                                  ^^^^^^^^^^^^^^^^^^^^^^^^
>> (II) intel(0): Attempting memory allocation with untiled buffers.
>> (WW) intel(0): Failed to allocate EXA offscreen memory.
>> (II) intel(0): Untiled allocation failed.
>> (EE) intel(0): Couldn't allocate video memory
>>
>> Fatal server error:
>> AddScreen/ScreenInit failed for driver 0
>>
>>
>> Note that I'm unable to switch vty to console (atkbd0), but killing
>> Xorg from network
>> is possible.
>>
>> Note that panic/hardlock with unloading loaded modules from kernel
>> (with/out Xorg session)
>> is regression from previous drm state in CURRENT. Could backtrace somehow
>> help?
>>
>>>
>>>>
>>>> vgapci0 at pci0:0:2:0:     class=0x030000 card=0x25821043 chip=0x25828086
>>>> rev=0x04 hdr=0x00
>>>>      vendor     = 'Intel Corporation'
>>>>      device     = '82915G/GV/GL, 82910GL Integrated Graphics Device'
>>>>      class      = display
>>>>      subclass   = VGA
>>>> vgapci1 at pci0:0:2:1:     class=0x038000 card=0x25821043 chip=0x27828086
>>>> rev=0x04 hdr=0x00
>>>>      vendor     = 'Intel Corporation'
>>>>      device     = '82915G Graphics device: 82915G/GV/910GL Express
>>>> Chipset Family'
>>>>      class      = display
>>>>
>>>> >On Sun, 2008-08-24 at 12:29 +0200, Paul B. Mahol wrote:
>>>> > On 8/24/08, Robert Noland <rnoland at freebsd.org> wrote:
>>>> > > I've uploaded a final patch set to:
>>>> > >
>>>> > > http://people.freebsd.org/~rnoland
>>>> > >
>>>> > > I have committed this version to -CURRENT, but patches are available
>>>> > > fo=
>>>> r
>>>> > > RELENG_7 as well.
>>>> > >
>>>> > > This version mostly just fixes a long standing memory leak.
>>>> > >
>>>> > > All of the reports for radeon have been good.  I'm still seeing a
>>>> > > few
>>>> > > odd things with Intel though.  The most severe issue is on my 965gm.
>>>> > > After restarting X, it will hang in a way that I have never seen
>>>> > > before...  The small amount of evidence that I have been able to
>>>> > > collec=
>>>> t
>>>> > > suggests that this may be due to mesa trashing the hardware.  I've
>>>> > > spen=
>>>> t
>>>> > > a couple of days trying to figure out exactly what could be wrong.
>>>> > > Thi=
>>>> s
>>>> > > morning I rebuilt my kernel with a stock drm from src and I got
>>>> > > exactly
>>>> > > the same hang.  Since this update does help lots of people and
>>>> > > doesn't
>>>> > > seem to make things worse than they were to begin with, I went ahead
>>>> > > an=
>>>> d
>>>> > > committed it.
>>>> > >
>>>> > > I was incorrect about the patch to libdrm... It isn't needed in
>>>> > > 2.3.1
>>>> > > and it is already committed upstream.  I'll commit that update to
>>>> > > ports
>>>> > > soon also.  It, along with a recent xf86-video-* are needed to
>>>> > > enable
>>>> > > the new vblank behavior, which will disable vblank interrupts if
>>>> > > there
>>>> > > are no active consumers.
>>>> > >
>>>> > > robert.
>>>> > >
>>>> >=20
>>>> > Do I need to update some ports? because with kernel from HEAD I have
>>>> > encountered problems when drm is loaded (agp + drm + i915)
>>>> > astro/stellarium caused deadlock, only mouse pointer could move, if I
>>>> > did=
>>>>   not
>>>> > started it, system will panic anyway after some time. I did not yet
>>>> > teste=
>>>> d
>>>> > vty switching,....


Here is more kernel debug info (after updating libdrm and testing with glxgears)

pid 7176 (Xorg), uid 0: exited on signal 6
free_unr with the following non-sleepable locks held:
exclusive sleep mutex drmdev (drmdev) r = 0 (0xc4783cec) locked @
/usr/local/src/sys/modules/drm/drm/../../../dev/drm/drm_irq.c:256
KDB: stack backtrace:
db_trace_self_wrapper(c0b570bb,c43887cc,c07f0dd5,c4d79b8f,100,...) at
db_trace_self_wrapper+0x26
kdb_backtrace(c4d79b8f,100,ffffffff,c0dcf79c,c4388800,...) at kdb_backtrace+0x29
_witness_debugger(c0b5930a,c4388814,4,1,0,...) at _witness_debugger+0x25
witness_warn(5,0,c0b58e81,c4388838,c07a528c,...) at witness_warn+0x1c1
free_unr(c49776c0,1,c4d79696,a8,c4783ef4,...) at free_unr+0x2b
drm_drawable_free_all(c4783c00,c4d7bce0,c4d796d9,1ba,0,...) at
drm_drawable_free_all+0x174
drm_lastclose(c4646c80,1,c4d796d9,2e3,8,...) at drm_lastclose+0xdf
drm_close(c4b37000,3,2000,c4971230,c4388900,...) at drm_close+0x2ca
giant_close(c4b37000,3,2000,c4971230,c4971230,...) at giant_close+0x67
devfs_close(c4388948,3,c4d4d430,3,c4388968,...) at devfs_close+0x29a
VOP_CLOSE_APV(c0c26380,c4388948,c0b61a19,124,c0c63f80,...) at VOP_CLOSE_APV+0xa5
vn_close(c4d4d430,3,c4ad9700,c4971230,0,...) at vn_close+0xe4
vn_closefile(c49df1c0,c4971230,c43889ec,c0784853,c49df1c0,...) at
vn_closefile+0xe9
devfs_close_f(c49df1c0,c4971230,0,0,c49df1c0,...) at devfs_close_f+0x25
_fdrop(c49df1c0,c4971230,c4388a20,c07f0c1c,0,c49712d4,c0dcf798,c0c317b0,c0b4f841,c51c452c,6a7,c0b4f841,c4388a48,c07b9fe0,c51c452c,8,c0b4f841,6a7)
at _fdrop+0x43
closef(c49df1c0,c4971230,6a7,6a5,c4470340,...) at closef+0x290
fdfree(c4971230,0,c0b5014d,102,c49712d4,...) at fdfree+0x387
exit1(c4971230,1,c0b53f0a,aad,c0b4ed7f,...) at exit1+0x543
sigexit(c4971230,1,c0b53f0a,a3d,c556baa8,...) at sigexit+0xaaf
postsig(1,0,c0b587c6,df,c496d7d4,...) at postsig+0x1dd
ast(c4388d38) at ast+0x37f
doreti_ast() at doreti_ast+0x17
uma_zalloc_arg: zone "16" with the following non-sleepable locks held:
exclusive sleep mutex drmdev (drmdev) r = 0 (0xc4783cec) locked @
/usr/local/src/sys/modules/drm/drm/../../../dev/drm/drm_irq.c:256
KDB: stack backtrace:
db_trace_self_wrapper(c0b570bb,c438874c,c07f0dd5,c4d79b8f,100,...) at
db_trace_self_wrapper+0x26
kdb_backtrace(c4d79b8f,100,ffffffff,c0dcf79c,c4388780,...) at kdb_backtrace+0x29
_witness_debugger(c0b5930a,c4388794,4,1,0,...) at _witness_debugger+0x25
witness_warn(5,0,c0b78fa6,c0b2b3ab,c0b5930a,...) at witness_warn+0x1c1
uma_zalloc_arg(c1872960,0,102,2,1,...) at uma_zalloc_arg+0x34
malloc(10,c0c34a40,102,c4388838,c07a528c,...) at malloc+0xd2
free_unr(c49776c0,1,c4d79696,a8,c4783ef4,...) at free_unr+0x47
drm_drawable_free_all(c4783c00,c4d7bce0,c4d796d9,1ba,0,...) at
drm_drawable_free_all+0x174
drm_lastclose(c4646c80,1,c4d796d9,2e3,8,...) at drm_lastclose+0xdf
drm_close(c4b37000,3,2000,c4971230,c4388900,...) at drm_close+0x2ca
giant_close(c4b37000,3,2000,c4971230,c4971230,...) at giant_close+0x67
devfs_close(c4388948,3,c4d4d430,3,c4388968,...) at devfs_close+0x29a
VOP_CLOSE_APV(c0c26380,c4388948,c0b61a19,124,c0c63f80,...) at VOP_CLOSE_APV+0xa5
vn_close(c4d4d430,3,c4ad9700,c4971230,0,...) at vn_close+0xe4
vn_closefile(c49df1c0,c4971230,c43889ec,c0784853,c49df1c0,...) at
vn_closefile+0xe9
devfs_close_f(c49df1c0,c4971230,0,0,c49df1c0,...) at devfs_close_f+0x25
_fdrop(c49df1c0,c4971230,c4388a20,c07f0c1c,0,c49712d4,c0dcf798,c0c317b0,c0b4f841,c51c452c,6a7,c0b4f841,c4388a48,c07b9fe0,c51c452c,8,c0b4f841,6a7)
at _fdrop+0x43
closef(c49df1c0,c4971230,6a7,6a5,c4470340,...) at closef+0x290
fdfree(c4971230,0,c0b5014d,102,c49712d4,...) at fdfree+0x387
exit1(c4971230,1,c0b53f0a,aad,c0b4ed7f,...) at exit1+0x543
sigexit(c4971230,1,c0b53f0a,a3d,c556baa8,...) at sigexit+0xaaf
postsig(1,0,c0b587c6,df,c496d7d4,...) at postsig+0x1dd
ast(c4388d38) at ast+0x37f
doreti_ast() at doreti_ast+0x17
uma_zalloc_arg: zone "16" with the following non-sleepable locks held:
exclusive sleep mutex drmdev (drmdev) r = 0 (0xc4783cec) locked @
/usr/local/src/sys/modules/drm/drm/../../../dev/drm/drm_irq.c:256
KDB: stack backtrace:
db_trace_self_wrapper(c0b570bb,c438874c,c07f0dd5,c4d79b8f,100,...) at
db_trace_self_wrapper+0x26
kdb_backtrace(c4d79b8f,100,ffffffff,c0dcf79c,c4388780,...) at kdb_backtrace+0x29
_witness_debugger(c0b5930a,c4388794,4,1,0,...) at _witness_debugger+0x25
witness_warn(5,0,c0b78fa6,c0b2b3ab,c0b5930a,...) at witness_warn+0x1c1
uma_zalloc_arg(c1872960,0,102,2,1,...) at uma_zalloc_arg+0x34
malloc(10,c0c34a40,102,c4388838,c07a528c,...) at malloc+0xd2
free_unr(c49776c0,1,c4d79696,a8,c4783ef4,...) at free_unr+0x66
drm_drawable_free_all(c4783c00,c4d7bce0,c4d796d9,1ba,0,...) at
drm_drawable_free_all+0x174
drm_lastclose(c4646c80,1,c4d796d9,2e3,8,...) at drm_lastclose+0xdf
drm_close(c4b37000,3,2000,c4971230,c4388900,...) at drm_close+0x2ca
giant_close(c4b37000,3,2000,c4971230,c4971230,...) at giant_close+0x67
devfs_close(c4388948,3,c4d4d430,3,c4388968,...) at devfs_close+0x29a
VOP_CLOSE_APV(c0c26380,c4388948,c0b61a19,124,c0c63f80,...) at VOP_CLOSE_APV+0xa5
vn_close(c4d4d430,3,c4ad9700,c4971230,0,...) at vn_close+0xe4
vn_closefile(c49df1c0,c4971230,c43889ec,c0784853,c49df1c0,...) at
vn_closefile+0xe9
devfs_close_f(c49df1c0,c4971230,0,0,c49df1c0,...) at devfs_close_f+0x25
_fdrop(c49df1c0,c4971230,c4388a20,c07f0c1c,0,c49712d4,c0dcf798,c0c317b0,c0b4f841,c51c452c,6a7,c0b4f841,c4388a48,c07b9fe0,c51c452c,8,c0b4f841,6a7)
at _fdrop+0x43
closef(c49df1c0,c4971230,6a7,6a5,c4470340,...) at closef+0x290
fdfree(c4971230,0,c0b5014d,102,c49712d4,...) at fdfree+0x387
exit1(c4971230,1,c0b53f0a,aad,c0b4ed7f,...) at exit1+0x543
sigexit(c4971230,1,c0b53f0a,a3d,c556baa8,...) at sigexit+0xaaf
postsig(1,0,c0b587c6,df,c496d7d4,...) at postsig+0x1dd
ast(c4388d38) at ast+0x37f
doreti_ast() at doreti_ast+0x17
drm0: [ITHREAD]
pid 9156 (Xorg), uid 0: exited on signal 6


More information about the freebsd-x11 mailing list