Proper way to enable port access tracing with current xserver
Alex Villacís Lasso
a_villacis at palosanto.com
Wed Jan 21 08:54:56 PST 2009
Tiago Vignatti escribió:
> Hi,
>
> Alex Villacís Lasso escreveu:
>> Another question I have is this: as far as I understand, PCI video
>> cards have to run the POST (or do an equivalent operation) in order
>> to execute the chipset-specific hocus-pocus that enables legacy vga
>> port access (0x3c0 through 0x3df). So only one chipset can be mapped
>> into that I/O address range at a time (right?).
>
> right. Note that some modern video cards can entirely scape from this
> legacy VGA crappy.
>
In my particular setup, the ProSavageDDR internal chipset can, and
already does in xf86-video-savage. The Oak Spitfire cannot stop using
the legacy registers and probably won't ever be able to, even with a
dedicated driver. I have been testing a boot with the Spitfire as
primary and initializing the savage as secondary, and it works for a
while, but then the chipset hangs the entire machine. I am currently
investigating why, but I suspect something about the FIFO settings. But
that is a separate issue.
>
>> When initializing a secondary card via POST, the real-mode code of
>> the secondary card will also attempt to map its own registers into
>> that range (I would assume). So what steps are taken in the xserver
>> to move the primary card out of the way (if at all) so that the
>> second card initializes properly? What happens if the drivers for
>> both chipsets require some access to the legacy I/O ports in order to
>> perform normal operations?
>
> this is currently addressed by the RAC module inside the Xorg server.
> But this module is selfish and only provides informations to its X
> server. If you have two or more applications (e.g. X servers) trying
> to use the VGA registers then the machine will probably hang (maybe
> not hang, but you will see a lot of crazy things on screen... like the
> lights of a rave party, or a screen that remembers an Atari game...
> well, it will depends in the kind of things you'll be smoking).
>
>
> Cheers,
>
In my case, it just plain hangs. No Atari screens or anything :-)
--
perl -e '$x=2.4;print sprintf("%.0f + %.0f = %.0f\n",$x,$x,$x+$x);'
More information about the xorg
mailing list