On Jan 2, 2008 5:03 PM, Luc Verhaegen libv@skynet.be wrote:
pci_dev_init is the default pci device initialisation routine.
It is a dumb pci device initialisation routine, lacking all device specific knowledge.
Right. By design.
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.
OK. Where precisely are we making that claim? What is the path by which we will claim to initialise something when we did not. Sorry, I am looking at the code and not seeing it.
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?
Because that was what the user community asked for. The VGA ROM stuff came first. Later, people wanted all option roms to be run. Then, it turned out there is a need for some platforms to run VGA option ROMS only. Finally, there can be a need for ALL option roms to be run but NO VGA consoles to be set up. The logic in this function is twisted because it grew by accretion. I make no claims that it is clean -- it is not.
But I have not yet seen the case that it is wrong.
So why bother setting vga_inited outside of PCI_ROM_RUN?
Because, once you reach that line, you've run the vga bios. I don't understand the question.
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.
That's a prolem. Which symbols? Which mainboards? This is an error but it has been a long enough time since I did this that I can easily believe it will happen.
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.
That's great to hear. Be aware that SiS also did native vga text mode in 2000, by Ollie Lo. So, we know that it is possible to have this work. We have done a fair amount of native and emulated VGA bringup over the years.
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.
Ah. Now I see what you are trying to do. I misunderstood from your first message. No argument. We've been doing this for years. And if you can't do it, then something is broken for sure. So I'm happy to see it fixed.
At the same time, let's suppose for the sake of argument that you set BOTH CONFIG_CONSOLE_VGA and CONFIG_PCI_ROM_RUN AND you have the native hardware bringup. How does that hurt your native device? There's no option rom for it --> it won't be run. I'd like to understand this. We have had cases where people had native bringup and installed a vga card, and both were needed. In that case we would want roms to run.
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.
OK. It's fine to set it there I suppose.
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.
It was considered. I think there is a bigger picture than you might have realised. Torsten also pointed out a secondary issue.
I read your patch. I am still unsure of the case where there are vga class devices but we don't want a vga console (hint: GPU computing). It seems there is no way in your code to allow us to run the option ROMs for a "vga" device and not enable a vga console.
This is a cooperative project and some patience from all sides is important. So please bear with us as we try to make sure we understand your needs and what you are doing. Very trivial changes can turn into problems in ways we do not expect, and VGA and ROM issues have been a headache.
thanks
ron