[Intel-gfx] Xserver hang in DRM_I915_GEM_THROTTLE waiting for line 1080 on a display with 768 lines.

Barry Scott barry.scott at onelan.co.uk
Tue Jun 16 16:12:17 CEST 2009


I'm working on fixing problem with playing video on rotated displays.

Xorg server 1.6.1
intel driver 2.7.1
kernel 2.26.30

I set up a rotated display:

# xrandr
Screen 0: minimum 320 x 200, current 768 x 1360, maximum 4096 x 4096
VGA connected 768x1360+0+0 left (normal left inverted right x axis y 
axis) 519mm x 324mm
   NTB-vesa_cvt-1360x768   59.8*+
   1920x1200      60.0 +
   1600x1200      60.0  
   1280x1024      60.0  
   1024x768       60.0  
   800x600        60.3  
   640x480        59.9  

Then I run KeithP's xvtest program that has been modified to create
a 1920x1080 image.

The Xorg server is now hung and gdb shows:

(gdb) thread apply all bt

Thread 1 (Thread -1208948976 (LWP 3233)):
#0  0x007bc424 in __kernel_vsyscall ()
#1  0x00530c29 in ioctl () from /lib/libc.so.6
#2  0x007847c3 in drmIoctl (fd=11, request=25688, arg=0x0) at xf86drm.c:187
#3  0x00784942 in drmCommandNone (fd=11, drmCommandIndex=24) at 
xf86drm.c:2313
#4  0x005e0d6f in I830BlockHandler (i=0, blockData=0x0, 
pTimeout=0xbfb1ba88,
    pReadmask=0x81dfe60) at i830_driver.c:2659
#5  0x0816b17e in AnimCurScreenBlockHandler (screenNum=0, blockData=0x0,
    pTimeout=0xbfb1ba88, pReadmask=0x81dfe60) at animcur.c:222
#6  0x08136e75 in compBlockHandler (i=0, blockData=0x0, 
pTimeout=0xbfb1ba88,
    pReadmask=0x81dfe60) at compinit.c:158
#7  0x0808a06a in BlockHandler (pTimeout=0xbfb1ba88, pReadmask=0x81dfe60)
    at dixutils.c:384
#8  0x08124da0 in WaitForSomething (pClientsReady=0xbf1c398) at 
WaitFor.c:215
#9  0x080864cd in Dispatch () at dispatch.c:367
#10 0x0806c6bd in main (argc=14, argv=0xbfb1bbd4, envp=Cannot access 
memory at address 0x6460
) at main.c:397
#0  0x007bc424 in __kernel_vsyscall ()

 From I830BlockHandler it is doing a drmCommandNone( 
DRM_I915_GEM_THROTTLE ).

Here is the edited output from intel_gpu_dump:

batchbuffer at 0x0241b000:
0x0241b000:      0x09000000: MI_LOAD_SCAN_LINES_INCL
0x0241b004:      0x00000438:    dword 1
0x0241b008:      0x09000000: MI_LOAD_SCAN_LINES_INCL
0x0241b00c:      0x00000438:    dword 1
0x0241b010:      0x01800002: MI_WAIT_FOR_EVENT
0x0241b014: HEAD 0x0200000a: MI_FLUSH
0x0241b018:      0x00000000: MI_NOOP
0x0241b01c:      0x61040000: 3DSTATE_PIPELINE_SELECT
0x0241b020:      0x60010000: CS_URB_STATE
0x0241b024:      0x00000000:    dword 1
...

Ringbuffer: Reminder: head pointer is GPU read, tail pointer is CPU write
ringbuffer at 0x00000000:
...
0x00013a04:      0x00000000: MI_NOOP
0x00013a08:      0x10800001: MI_STORE_DATA_INDEX
0x00013a0c:      0x00000080:    dword 1
0x00013a10:      0x00004213:    dword 2
0x00013a14:      0x01000000: MI_USER_INTERRUPT
0x00013a18:      0x18800180: MI_BATCH_BUFFER_START
0x00013a1c:      0x0241b000:    dword 1
0x00013a20: HEAD 0x02000004: MI_FLUSH
0x00013a24:      0x00000000: MI_NOOP
0x00013a28:      0x10800001: MI_STORE_DATA_INDEX
0x00013a2c:      0x00000080:    dword 1
0x00013a30:      0x00004214:    dword 2
0x00013a34:      0x01000000: MI_USER_INTERRUPT
0x00013a38: TAIL 0x18800180: MI_BATCH_BUFFER_START
0x00013a3c: TAIL 0x02422000:    dword 1
0x00013a40:      0x02000004: MI_FLUSH
0x00013a44:      0x00000000: MI_NOOP
0x00013a48:      0x10800001: MI_STORE_DATA_INDEX
0x00013a4c:      0x00000080:    dword 1
0x00013a50:      0x00002fcc:    dword 2
0x00013a54:      0x01000000: MI_USER_INTERRUPT
0x00013a58:      0x02000002: MI_FLUSH
0x00013a5c:      0x00000000: MI_NOOP
...

Given that the display has 768 lines its never going to hit line 1080.

Barry




More information about the Intel-gfx mailing list