Jeff,
The order that video cards get initialized is based on the bus they are operating on (PCI or ISA), the PCI bus scanning order (lowest to highest device or highest to lowest device) and BIOS setup options (AGP over PCI or PCI over AGP). An ISA video should be initialized first. If no ISA then generally the PCI device closest to the host-PCI bridge and with the lowest device number (swapping two VGA cards between two slots should give an indication of which PCI slot is the lower device number). Some BIOS have settings to allow an AGP device to be initialized first (AGP is usually on PCI bus 1, many PCI VGA cards will be located on PCI bus 0, though some systems may also have a PCI-PCI bridge and this wouldn't be true). Of course, vendors are free to make exceptions to this and may have other criteria of making the decision (a VGA card with the OPROM disabled like some Matrox cards probably won't be initialized as the boot video device).
The VGA card is identified by its class code in PCI configuration space.
Dave
-----Original Message----- From: owner-openbios@elvis.informatik.uni-freiburg.de [mailto:owner-openbios@elvis.informatik.uni-freiburg.de]On Behalf Of Matthew Sullivan Sent: Tuesday, April 04, 2000 4:16 PM To: Jeff Garzik Cc: OpenBIOS Subject: Re: [OpenBIOS] sorry to ask this again
Hi,
Actually you answered the problem....
Jeff Garzik wrote:
Can you turn on word wrap in your mailer, Matthew?
I have but it's set to a high figure to stop it screwing with my mails... Doh! :-)
Matthew Sullivan wrote:
The only thing I haven't worked out is if you have a card not located in
the usual position most BIOS's will still boot it... but none of the BIOS's seem to want to init any second card.... (That includes the second VGA port on a couple of twin TVGA 9000 series cards I had to work on a while ago...)
By virtue of the fact that two cards cannot share a single VGA region, you can only init a single card. So that makes perfect sense. The standard BIOS reaction to multiple video cards is to -not- execute the BIOS init sequence for secondary/tertiary cards, but to instead disable their MMIO and PIO decoding altogether.
Which answers it...
This is why XFree86 must map and execute the video BIOS for a secondary card, before it can be used as a secondary head.
My conclusion to this is there must be a global identifier to indicate
the card is a display card... and the current BIOS's look for this so that they can determine, 1/ There is a display card in the system, and 2/ where it is ... I say this because last time I put 2 PCI VGA cards in a machine (not the same type) no matter what addresses I set them to and which slot they physically located, the same card booted each time...!?! This may be worth investigating further....
Now -that- is strange. If there is no video BIOS in the standard location, it would seem logical to initialize the first PCI_CLASS_DISPLAY card found... or maybe PCI_CLASS_DISPLAY_VGA.
However cards/the bus seem to have 'priority' between cards (I do _not_ know PCI bus operation) two different cards would work in different ways and have a different priority as to what memory areas they get.... As the card is not in the 'default video' location it's getting picked up on and by the PCI bus/PCI controller/PCI software and then being initallized...
First one started on the bus reset gets initiallized...? ...The answer...?
-- Yours
Matthew
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- You are validating my inherent mistrust of strangers.
- To unsubscribe: send mail to majordomo@freiburg.linux.de with 'unsubscribe openbios' in the body of the message