Re: multi-domain PCI and sysfs

David S. Miller
2004-09-07T23:17:14Z

On Tue, 7 Sep 2004 18:58:53 -0400
Jon Smirl <jonsmirl@gmail.com> wrote:

> > $ ls -1 /sys/devices/
> > pci0000:00
> > pci0000:80
> > pci0000:a0
> > pci0000:c0
> > platform
> > system
>
> How many active VGA devices can I have in this system 1 or 4? If the
> answer is 4, how do I independently address each VGA card? If the
> answer is one, you can see why I want a pci0000 node to hold the
> attribute for turning it off and on.

I don't know about the above but for a multi-domain system the
way it works is that the I/O ports are accessed using a different
base address for each domain.

On my box I/O space looks like:

7ffed000000-7ffedffffff : SCHIZO0 PBMA
7ffed000300-7ffed0003ff : 0000:00:04.0
7ffed000300-7ffed0003fe : qlogicfc
7ffef000000-7ffefffffff : SCHIZO0 PBMB
7ffef000300-7ffef0003ff : 0001:00:06.0
7ffef000300-7ffef0003ff : sym53c8xx
7ffef000400-7ffef0004ff : 0001:00:06.1
7ffef000400-7ffef0004ff : sym53c8xx

SCHIZO is the PCI controller name, there are two PCI segments.

davem@nuts:~$ ls /sys/devices/pci*
/sys/devices/pci0000:00:
0000:00:00.0 0000:00:01.0 0000:00:04.0 detach_state

/sys/devices/pci0001:00:
0001:00:00.0 0001:00:03.0 0001:00:05.2 0001:00:06.1
0001:00:01.0 0001:00:05.0 0001:00:05.3 detach_state
0001:00:02.0 0001:00:05.1 0001:00:06.0
davem@nuts:~$

So to access some VGA port on domain zero the
address would likely end up being:

0x7ffed000000 + VGA_FOO

This is a real touchy area btw, because if there is no
VGA card, such I/O port accesses are going to trap and
we need to have a common way to handle that somehow.