PCI/BIOS/int10 handling in X.org

Thomas Winischhofer thomas at winischhofer.net
Fri Jul 15 09:08:19 PDT 2005


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


Since adding XGI support not only to the X driver but also to the Linux
kernel framebuffer driver, I experimented a little with having two video
cards in one box.

The Linux kernel framebuffer driver is capable of POSTing all XGI cards,
should that be needed (which is judged by D[1:0] of PCI_COMMAND, ie if
its memory and io resources are enabled or not).

As soon as two cards have their mem/io enabled, X.org fails to determine
which of the cards is "primary". All cards are "secondary". This is
basically understandable... how should it.

However, this leads to unpleasant side effects:

1) Drivers that POST "secondary" cards via int10 during their preinit
phase, now POST all video cards in the system. That is undesireable for
the "primary" card as it makes mode restoring impossible.

2) On SiS machines, the integrated VGA has no BIOS ROM. The BIOS is
compressed in the system BIOS and only available as a shadow copy.

The int10 code, when trying to read the BIOS image, handles cards
differently depending on whether they are "primary" or "secondary".

If a card is "primary", the BIOS is assumed at c0000. When secondary,
the int10 code calls mapPciRom - which fails for such hardware without a
real ROM; leaving the driver without int10 and, as a consequence,
without VBE.

While I have no idea what to do about issue 1), I think the BIOS reading
code could try a little harder for secondary cards. Especially if the
entity is PCI, it could check the "PCIR" BIOS data block of apparent
BIOS images in the c0000-f0000 area and compare the PCI IDs to the ones
stored in the BIOS... or not?

What do the experts say?



- --
Thomas Winischhofer
Vienna/Austria
thomas AT winischhofer DOT net	       *** http://www.winischhofer.net

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFC199zzydIRAktyUcRAouEAJ9F08GWoiyMx4D4eSdwGqghgVZPVACcClgY
vjXXz/rEK4g1FUcYxVsrp5Y=
=Ll4N
-----END PGP SIGNATURE-----



More information about the xorg mailing list