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