pciaccess clean up
Jesse Barnes
jbarnes at virtuousgeek.org
Mon Mar 3 09:28:11 PST 2008
On Sunday, March 02, 2008 8:32 pm Tiago Vignatti wrote:
> Tiago Vignatti escreveu:
> > I'm tracing why Xorg isn't posting correctly the secondary cards and for
> > sure there's a lot of code (basically xf86pciBus.c) that will be also
> > nuked after this be fixed (btw, is there anyone being able to start a
> > secondary card under master branch today?).
>
> Hi guys,
>
> I spent some time comparing what the Xorg without pciaccess (server-1.4
> branch) does different from Xorg with pciaccess (master branch) trying
> to understand what we're missing in this problem above [0].
>
> In Xorg without pciaccess the scheme to enable the resources of a given
> card on server initialization is as follows:
>
> 1. Disable all pci accesses: the bus and pci devices
>
> 2. Enable current VGA card access:
> xf86EnableAccess() -> pciSetBusAccess()
> xf86EnableAccess() -> pciIo_MemAccessEnable()
>
> 3. PreInit() phase: if the card is not yet the one which is routing
> the informations, initialize it through int10:
> xf86ExecX86int10()
>
> 4. xf86PostScreenInit() phase:
> xf86EnterServerState() -> setAccess() -> pciMemAccessEnable()
>
>
> while in the pciaccess Xorg, only the step 2 is performed. So strange.
>
> I see that a lot of functions concerning to enable/disable the resources
> in Xorg with pciaccess are commented. In a frustrated attempt I
> uncomment it out but my machine hard frozen and then I preferred to ask
> for some guidance here.
>
> An interesting thing that motivated me to think that this way of
> enable/disable the resources is the correct to follow was because when I
> initialize one video card using 1.4 branch, exit it nicely and then try
> to initialize the *same* card using the master branch, all succeed fine.
> But when I initialize one video card using 1.4 branch and then
> initialize another one using master branch, the Xorg doesn't runs. IOW,
> Xorg 1.4 knows how to route informations to a given card even if the
> routing is disabled for that card. OTOH, Xorg master doesn't know, so we
> must hook some of that commented code to do these tasks.
>
> Am I in the right way?
I'm not sure if this is a blocker (guess that would be up to Adam) but yeah it
sounds like we really need your VGA arbitration & routing stuff to land. I
think one advantage of your work over what the old X server did is that it
can coordinate with other drivers...
Jesse
More information about the xorg
mailing list