[Intel-gfx] vesafb, intel_drv and gm45
sureshkumar.pp at gmail.com
Tue Mar 15 23:34:36 PDT 2011
[Continuing from IRC]
I have GM45 mobile chipset (PCI_CHIP_GM45_GM/0x2A42). And running Xorg
1.6.5, Intel driver 2.7.0 and kernel 2.6.29.
I need to use vesafb (bootsplash depends on it), and for some (legacy
code) reasons I can't immediately migrate the system to newer kernel
(or start using plymouth+KMS (KMS requires newer kernel?)).
The issue is, with vesafb built in and booting kernel with
"vga=0x317", X starts slow (by about 7 seconds) and then there after
every "xrandr -q" takes about 3+ seconds (without vesafb it takes
about ~ 100 ms). I notice that most of the time it spends is in
getting EDID information over I2C read/write (there are too many
I2CUDelay() calls). Starting X with "vesa_drv" works fine (presumably
it goes over VBE).
One hypothesis was "vesafb" makes some (BIOS) calls at start which
puts GM45 chipset under some condition which intel_drv is not able to
handle. To verify that I took up "intel-gpu-tools" and used it dump
registers and compare them with and without vesafb. Indeed there was
some difference (http://pastebin.com/gv9GXKAc) - VGACNTRL was enabled,
"display B" was enabled etc. Now before starting X, I used
"intel_reg_write" to restore them back to "ideal" condition (i.e., ==
register values without vesafb boot) and cross verified those values
as well. But the issue still persists. (though one strange thing I
notice is when I reset back those registers, the screen gets garbled,
especially when I manipulate VGACNTRL, Probably vesafb is still
holding onto it?)
Now that was a bummer, any other pointer to possible problematic areas
where I can look into would be nice.
More information about the Intel-gfx