Question on xf86PciProbe(), primaryBus, and xf86IsolateDevice

Wayne Whitney whitney at post.harvard.edu
Thu Jun 11 18:15:18 PDT 2009


Hello,

I'm using xorg-x11-server-Xorg-1.6.1.901-1.fc11.x86_64 from Fedora 11 on an 
x86_64 machine and I'm having some trouble with a dual seat setup.  I believe 
I've traced my problem to the way xf86PciProbe() sets primaryBus when 
xf86IsolateDevice is set.

>From my reading of xserver/hw/xfree86/common/xf86pciBus.c, whenever 
xf86IsolateDevice is set, xf86PciProbe() will mark the isolated card as the 
primary card by setting primaryBus, even if the isolated card is not the boot 
video device.  This is because xf86IsolateDevice causes xf86PciProbe() to only 
see one card, and the code in xf86PciProbe() that decides whether to set 
primaryBus includes the logic "if there's only one card, and PCI_CMD_MEM_ENABLE 
is set, then it must be primary."

Is this the desired behavior?  Or if xf86IsolateDevice is set to a secondary 
card, should primaryBus remain unset?

This issue is causing me trouble with a dual radeon HD 2xxx/3xxx machine where 
I would like to run separate X processes for each card.  Presently radeonhd 
uses xf86IsEntityPrimary() to determine where to look for the card's BIOS.  So 
when I run X with IsolateDevice on the secondary card, because of the behavior 
of xf86PciProbe(), the radeonhd driver ends up looking at the primary card's 
BIOS instead of the secondary card's BIOS.

So it seems like either xf86PciProbe() should change its behavior in this case, 
or radeonhd needs to use something other than xf86IsEntityPrimary(). I'm just 
trying to figure out which.  Any guidance would be greatly appreciated.

Cheers,
Wayne Whitney



More information about the xorg mailing list