Custom resolutions on i855GME with modesetting
Matthew Hodgson
matthew at arasphere.net
Fri Mar 2 04:45:12 PST 2007
On Thu, 1 Mar 2007, Matthew Hodgson wrote:
> Hi,
>
> I've just built a modular xorg from git head in order to play with the
> modesetting branch of the intel drivers on an i855GME based motherboard
> (http://www.ibase-i.com.tw/mb890.htm). I want to use the motherboard as a TV
> playout box, and as such I'm trying to feed it a modeline for displaying
> widescreen progressive PAL (1024x576 at 50Hz) on a projector via DVI. Nothing's
> plugged into the HD15, LVDS or composite/s-video outputs on the board.
>
> My problem is twofold:
>
> a) The modesetting driver appears to ignore the modeline i've specified in my
> xorg.conf, and instead generates only a 1024x768 at 60Hz picture.
This appears to be due to the VBIOS having a panel mode in it, which seems
to clobber any other modes specified elsewhere in the config - at least
for the pipe connected to the DVI output:
(II) intel(0): Found panel mode in BIOS VBT tables:
(II) intel(0): Modeline "1024x768"x0.0 65.00 1024 1048 1184 1344 768 771 777 806 (48.4 kHz)
This is obviously not ideal if you're hooking up to a DVI monitor rather
than an LVDS panel.
The only way I've got it to pick up the custom resolution is to force
i830_bios.c:i830_bios_get_panel_mode() to immediately return, as well as
add a "monitor-TMDS" option to my screen section.
I've raised a bug at https://bugs.freedesktop.org/show_bug.cgi?id=10155
for this.
> b) On killing Xorg, the box hangs solid.
After persuading xorg to pick up the custom modeline, X no longer hangs on
exit. Instead, there are a plethora of other problems:
1) Every time an X client app quits, the screen gets reinitialised. Every
time this happens, the hardware accelerated cursor gets progressively
corrupt (whilst looking initially fine when the xserver first starts).
In practice, I830ScreenInit() seems to be called every time a client
quits, causing an explosion of:
(WW) Open ACPI failed (/var/run/acpid.socket) (No such file or directory)
(II) No APM support in BIOS or kernel
(II) intel(0): Kernel reported 104704 total, 1 used
(II) intel(0): I830CheckAvailableMemory: 418812 kB available
(**) intel(0): VideoRam: 131072 KB
(II) intel(0): Attempting memory allocation with tiled buffers and
large DRI memory manager reservation:
(II) intel(0): Allocating 3768 scanlines for pixmap cache
(II) intel(0): Success.
(II) intel(0): Memory allocation layout:
...
in the log. The monitor loses sync as its CRTCs are reprogrammed. Errors
concerning swapinterval and blanking also appear during the
reinitialisation:
(EE) DoSwapInterval: cx = 0x83692a0, GLX screen = 0x825aed0
...
(EE) intel(0): I830 Vblank Pipe Setup Failed 0
2) XV fails to work, and then causes X to lockup when the client app
quits.
When running mplayer -vo xv, the log fills up with:
loops (1) maxed out for buffer 1
loops (1) maxed out for buffer 1
loops (1) maxed out for buffer 1
...and on hitting mplayer with SIGKILL...
loops (1) maxed out for buffer 1
(II) intel(0): [drm] removed 1 reserved context for kernel
(II) intel(0): [drm] unmapping 8192 bytes of SAREA 0xdfbb8000 at 0xb7b42000
Error in I830WaitLpRing(), now is 280912022, start is 280910021
pgetbl_ctl: 0x1ffe0001 pgetbl_err: 0x0
ipeir: 0 iphdr: 1810000
LP ring tail: 870 head: 2ec len: 1f001 start 0
eir: 0 esr: 0 emr: ffff
instdone: ffc0 instpm: 0
memmode: 108 instps: 0
hwstam: ffff ier: 0 imr: ffff iir: 0
space: 129652 wanted 131064
Fatal server error:
lockup
Backtrace:
0: X(xf86SigHandler+0x80) [0x80c0dd0]
1: [0xffffe420]
2: X(AbortDDX+0x87) [0x80a2777]
3: X(AbortServer+0x28) [0x81b8208]
4: X(FatalError+0x67) [0x81b8727]
5: /usr/local/src/xorg-modular/lib/xorg/modules//drivers/intel_drv.so(I830WaitLpRing+0x117) [0xb7b7e717]
6: /usr/local/src/xorg-modular/lib/xorg/modules//drivers/intel_drv.so(I830Sync+0xf9) [0xb7b7e949]
7: /usr/local/src/xorg-modular/lib/xorg/modules//drivers/intel_drv.so [0xb7b85d5c]
8: /usr/local/src/xorg-modular/lib/xorg/modules//drivers/intel_drv.so [0xb7b85e90]
9: /usr/local/src/xorg-modular/lib/xorg/modules//drivers/intel_drv.so [0xb7b86231]
10: /usr/local/src/xorg-modular/lib/xorg/modules//libshadow.so [0xb7b4546e]
11: X [0x815ab1e]
12: X [0x80c556f]
13: X [0x8134396]
14: X [0x8158365]
15: X(main+0x514) [0x806fe84]
16: /lib/tls/libc.so.6(__libc_start_main+0xc8) [0xb7d27ea8]
17: X(FontFileCompleteXLFD+0xad) [0x806f131]
FatalError re-entered, aborting
Caught signal 11. Server aborting
3) Finally, glxgears is excitingly corrupt (using mesa git with the I915
DRI). The window only displays the top right of the red cog, whose
polys appear to be missing vertices - and the bottom right of the
window flickers an alarming green. I'm more interested in getting XV
working for now, though :)
An xorg.conf and Xorg.0.log which demonstrates both the
screen-reinitialisation problem and lockup under XV can be found at
http://arasphere.net/xorg/modesetting-20070302 - they're too big to
attach, i'm afraid.
Any suggestions more than welcome!
thanks,
Matthew.
More information about the xorg
mailing list