On Wed, Jan 02, 2008 at 01:26:10PM -0800, ron minnich wrote:
On Jan 2, 2008 1:16 AM, Luc Verhaegen libv@skynet.be wrote:
The CONFIG_CONSOLE_VGA and CONFIG_PCI_ROM_RUN logic in src/devices/pci_device.c:pci_dev_init is messed up.
It may be hard to read, but I am pretty sure it is doing the right thing. Can you provide an instance in which it does the wrong thing?
pci_dev_init is the default pci device initialisation routine.
It is a dumb pci device initialisation routine, lacking all device specific knowledge.
It can only try to achieve anything when there is a pci rom present which can do the initialisation for us.
When we choose to not run pci roms, we do not initialise anything, and we certainly shouldn't go claiming we did either.
When we choose to not run pci roms, why do we still run pci roms of devices if they just happen to be VGA devices?
So why bother setting vga_inited outside of PCI_ROM_RUN?
If you still do not believe logic, then please set CONFIG_CONSOLE_VGA without setting CONFIG_PCI_ROM_RUN and then build your rom. The build will fail due to missing symbols.
This is how i came across this issue in the first place.
What i am trying to do is implement native VGA bring-up for unichrome. I have had userspace code doing this on top of a clean linuxbios for more than 8 months. This is not just my X driver, i can also set up standard vga text mode, so it is not a pipe dream.
In that light it is perfectly valid to claim CONFIG_CONSOLE_VGA without setting CONFIG_PCI_ROM_RUN, because: * i have no need for a vga rom, as i provide the necessary code for a full vga text mode bringup myself. * i have no need to run any other rom either. * i do want vga console logging.
So when i initialise the unichrome, i set vga_inited myself, like any device driver should when it initialises a vga compatible device to a vga compatible state and expects the console code to make use of it as a vga compatible console.
Since the lunacy that is the northbridge/via/vt8623/vgabios code never bothered to set up vga_inited, i am not breaking this either. Because how does one break what is already broken, and why should i bother fixing what isn't worth fixing? It will eventually be tossed anyway, as it will be done properly.
Since I am trailblazing native vga bringup, it is perfectly understandable that some bumps are encountered along the way. What i do not understand is how something so perfectly logical is rejected without proper consideration, tossed aside as if it were a mindless cleanup.
I do not do mindless cleanups.
Feel free to read over my tiny and trivial patch again.
Thank you for making my day, and a happy 2008 to you too.
Luc Verhaegen. A now very agitated SUSE/Novell X Driver Developer.