Re: multi-domain PCI and sysfs

Matthew Wilcox
2004-09-06T01:41:29Z

On Sun, Sep 05, 2004 at 07:50:04PM -0400, Jon Smirl wrote:
> So how do multiple root buses work? Since they are all in the same
> domain it seems like a single IO operation would go to all of the root
> bridges simultaneously. Then each root bridge matches to the address
> and decides to send the IO operation on if there is a match.

Not exactly -- each rope (the line that connects the memory & I/O
controller to the I/O adapter) has a limited bandwidth, so the memory
& I/O controller makes the decision which rope each transaction is
destined for.

> When implementing the VGA control I'm running into the problem that
> there is no root node in sysfs for the top of a domain. I need a
> domain node to attach an attribute disabling all VGA devices in the
> domain. In the zx1 diagram I could have vga devices on any of the
> PCI-X or AGP buses.

Why would it be a problem if the attribute is per-bus, as it is right now?
see bus->bridge_ctl (PCI_BRIDGE_CTL_VGA)

> With the xz1 sysfs would look like this:
> /sys/devices/pci0000:00
> /sys/devices/pci0000:01
> /sys/devices/pci0000:02
> /sys/devices/pci0000:03
> /sys/devices/pci0000:04
> /sys/devices/pci0000:05

Actually, they're sparsely numbered to allow for people plugging in pci-pci
bridges on cards, so:

$ ls -1 /sys/devices/
pci0000:00
pci0000:80
pci0000:a0
pci0000:c0
platform
system

--
"Next the statesmen will invent cheap lies, putting the blame upon
the nation that is attacked, and every man will be glad of those
conscience-soothing falsities, and will diligently study them, and refuse
to examine any refutations of them; and thus he will by and by convince
himself that the war is just, and will thank God for the better sleep
he enjoys after this process of grotesque self-deception." -- Mark Twain