a) How do plain VGA registers (lots of documentation talks about
things like address 3B4h) get 'mapped' to the correct PCI device? Is
address 3B4h in C/BE#'s 'I/O Space', 'Memory Space', or some added
fields to the configuration space?

3B4h is in I/O space.  And it's not in a BAR-mapped space.  When our
PCI controller sees that address (and we've enabled VGA), it decodes a
limited range of "legacy" I/O space addresses.  These are the only I/O
space addresses we support.  All others are memory space.

Since these legacy addresses are not allocated to a particular device,
there are certainly concerns in a PC system about more than one device
attempting to accept them.  I think the correct thing to do is have
the first VGA device figure out that it was initialized first (there's
a certain order in which a PC BIOS initializes devices, with the
console gfx card being very early) and be the only one to enable the
decode.  (Enabling the decode would be device-dependent, I would
imagine.)

The MB's BIOS initializes only one of the graphic cards. As far as I remember, the secondary card's boot message appeared only at the time when X was started in dualhead mode.

Which one is being initialized at boot depends on bios settings, usually you have a choice to init PCIe or PCI card first.

Result: we don't need to handle sharing of cards in any way. Reset = turn off everything and if the bios is run, then initialize the card. Question is how to detect which card's bios is being executed in case you have 2 cards on same bus :)
_______________________________________________
Open-graphics mailing list
[email protected]
http://lists.duskglow.com/mailman/listinfo/open-graphics
List service provided by Duskglow Consulting, LLC (www.duskglow.com)

Reply via email to