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.
[mailto:firstname.lastname@example.org]On Behalf Of
Sent: Tuesday, April 04, 2000 4:16 PM
To: Jeff Garzik
Subject: Re: [OpenBIOS] sorry to ask this again
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...
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
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...?
You are validating my inherent mistrust of strangers.
To unsubscribe: send mail to majordomo(a)freiburg.linux.de
with 'unsubscribe openbios' in the body of the message