Re: PCI domains

2009-07-10 Thread M. Warner Losh
In message: <20090710024528.ec36959...@thoreau.thistledown.com.au>
Simon Burge  writes:
: Christoph Egger wrote:
: 
: > Michael Lorenz wrote:
: >
: > > +/*
: > > + * NetBSD's userland has a /dev/pci* entry for each bus but userland has 
no way
: > > + * to tell if a bus is a subordinate of another one or if it's on a 
different
: > > + * host bridge.
: > 
: > I have a patch which introduces support for PCI domains. It allows the
: > userland to distinguish between them by checking if the pci bus belongs
: > to the same PCI domain.
: 
: What exactly is a "PCI domain"?  A quick google seems to suggest that
: this is a Linux concept as opposed to a PCI concept.  In a previous
: life we used NetBSD on a number of different machines of various
: architectures that had multiple PCI host bridges, although admittedly we
: didn't need to know the topology of the PCI bus layout.

PCI domains, as implemented by Linux and FreeBSD are separate host
bridges.  Each bus complex behind the host bridge has independent
numbering.  Each of these bus complexes are in a different domain.

Not all systems with multiple host bridges have separate numbering
domains, but many do.

Warner


Re: PCI domains

2009-07-10 Thread Christoph Egger

> In message: <20090710024528.ec36959...@thoreau.thistledown.com.au>
> Simon Burge  writes:
> : Christoph Egger wrote:
> : 
> : > Michael Lorenz wrote:
> : >
> : > > +/*
> : > > + * NetBSD's userland has a /dev/pci* entry for each bus but
> userland has no way
> : > > + * to tell if a bus is a subordinate of another one or if it's on a
> different
> : > > + * host bridge.
> : > 
> : > I have a patch which introduces support for PCI domains. It allows the
> : > userland to distinguish between them by checking if the pci bus
> belongs
> : > to the same PCI domain.
> : 
> : What exactly is a "PCI domain"?  A quick google seems to suggest that
> : this is a Linux concept as opposed to a PCI concept.  In a previous
> : life we used NetBSD on a number of different machines of various
> : architectures that had multiple PCI host bridges, although admittedly we
> : didn't need to know the topology of the PCI bus layout.
> 
> PCI domains, as implemented by Linux and FreeBSD are separate host
> bridges.  Each bus complex behind the host bridge has independent
> numbering.  Each of these bus complexes are in a different domain.
> 
> Not all systems with multiple host bridges have separate numbering
> domains, but many do.

PCI domains are part of the PCI host bridge specification.
It is a 16bit-wide number.

Christoph


Re: PCI domains

2009-07-10 Thread Simon Burge
"Christoph Egger" wrote:

> > In message: <20090710024528.ec36959...@thoreau.thistledown.com.au>
> > Simon Burge  writes:
> > : Christoph Egger wrote:
> > : 
> > : > Michael Lorenz wrote:
> > : >
> > : > > +/*
> > : > > + * NetBSD's userland has a /dev/pci* entry for each bus but
> > userland has no way
> > : > > + * to tell if a bus is a subordinate of another one or if it's on a
> > different
> > : > > + * host bridge.
> > : > 
> > : > I have a patch which introduces support for PCI domains. It allows the
> > : > userland to distinguish between them by checking if the pci bus
> > belongs
> > : > to the same PCI domain.
> > : 
> > : What exactly is a "PCI domain"?  A quick google seems to suggest that
> > : this is a Linux concept as opposed to a PCI concept.  In a previous
> > : life we used NetBSD on a number of different machines of various
> > : architectures that had multiple PCI host bridges, although admittedly we
> > : didn't need to know the topology of the PCI bus layout.
> > 
> > PCI domains, as implemented by Linux and FreeBSD are separate host
> > bridges.  Each bus complex behind the host bridge has independent
> > numbering.  Each of these bus complexes are in a different domain.
> > 
> > Not all systems with multiple host bridges have separate numbering
> > domains, but many do.
> 
> PCI domains are part of the PCI host bridge specification.
> It is a 16bit-wide number.

Can you please provide a reference for this?  There's nothing mentioned
in the PCI Local Bus Specification version 2.3.  I can find plenty of
references to "clock domains" and "address space domains", but when I
exclude Linux references I can't seem to find anything useful.

Everything I see so far says that a "PCI domain" is an OS abstraction
and not part of a PCI specification.  I'm also not sure exactly what
problem you're trying to solve - why exactly does it matter if two PCI
busses share a common "domain" or not?

Cheers,
Simon.


Re: PCI domains

2009-07-10 Thread Christoph Egger

> "Christoph Egger" wrote:
> 
> > > In message: <20090710024528.ec36959...@thoreau.thistledown.com.au>
> > > Simon Burge  writes:
> > > : Christoph Egger wrote:
> > > : 
> > > : > Michael Lorenz wrote:
> > > : >
> > > : > > +/*
> > > : > > + * NetBSD's userland has a /dev/pci* entry for each bus but
> > > userland has no way
> > > : > > + * to tell if a bus is a subordinate of another one or if it's
> on a
> > > different
> > > : > > + * host bridge.
> > > : > 
> > > : > I have a patch which introduces support for PCI domains. It allows
> the
> > > : > userland to distinguish between them by checking if the pci bus
> > > belongs
> > > : > to the same PCI domain.
> > > : 
> > > : What exactly is a "PCI domain"?  A quick google seems to suggest
> that
> > > : this is a Linux concept as opposed to a PCI concept.  In a previous
> > > : life we used NetBSD on a number of different machines of various
> > > : architectures that had multiple PCI host bridges, although
> admittedly we
> > > : didn't need to know the topology of the PCI bus layout.
> > > 
> > > PCI domains, as implemented by Linux and FreeBSD are separate host
> > > bridges.  Each bus complex behind the host bridge has independent
> > > numbering.  Each of these bus complexes are in a different domain.
> > > 
> > > Not all systems with multiple host bridges have separate numbering
> > > domains, but many do.
> > 
> > PCI domains are part of the PCI host bridge specification.
> > It is a 16bit-wide number.
> 
> Can you please provide a reference for this?  There's nothing mentioned
> in the PCI Local Bus Specification version 2.3.  I can find plenty of
> references to "clock domains" and "address space domains", but when I
> exclude Linux references I can't seem to find anything useful.

It's not in the PCI Local Bus Specification nor in the
PCI-to-PCI Bridge Specification. It is in the
PCI Host Bridge Specification which is a vendor specific paper.

The pci host bridges for the alpha port implements PCI domains.

 
> Everything I see so far says that a "PCI domain" is an OS abstraction
> and not part of a PCI specification.  I'm also not sure exactly what
> problem you're trying to solve - why exactly does it matter if two PCI
> busses share a common "domain" or not?

Read the C comment in my first mail. X.org wants to have some
information NetBSD currently doesn't provide to userland.
This is what I rather want to discuss.

Christoph


Re: PCI domains

2009-07-10 Thread Simon Burge
"Christoph Egger" wrote:

> > "Christoph Egger" wrote:
> > 
> > > PCI domains are part of the PCI host bridge specification.
> > > It is a 16bit-wide number.
> > 
> > Can you please provide a reference for this?  There's nothing mentioned
> > in the PCI Local Bus Specification version 2.3.  I can find plenty of
> > references to "clock domains" and "address space domains", but when I
> > exclude Linux references I can't seem to find anything useful.
> 
> It's not in the PCI Local Bus Specification nor in the
> PCI-to-PCI Bridge Specification. It is in the
> PCI Host Bridge Specification which is a vendor specific paper.

Again, can you please point to a specific reference?  I grabbed a few
different host bridge specs and have yet to find any concrete reference
to "PCI domains".

> The pci host bridges for the alpha port implements PCI domains.

Our alpha port?

thoreau 1170> grep -ir domain alpha
alpha/include/ieeefp.h: * Public domain.
alpha/include/fpu.h: * the definition prefix can easily be determined from 
public domain
alpha/pci/pci_6600.h:/* Public Domain */

> > Everything I see so far says that a "PCI domain" is an OS abstraction
> > and not part of a PCI specification.  I'm also not sure exactly what
> > problem you're trying to solve - why exactly does it matter if two PCI
> > busses share a common "domain" or not?
> 
> Read the C comment in my first mail. X.org wants to have some
> information NetBSD currently doesn't provide to userland.
> This is what I rather want to discuss.

Is that the comment that starts "With each /dev/pci* we can map
everything on the same root"?  I'll have to re-read that again to make
sure I understand what you're saying, but in a nutshell is the reason
you want to introduce the "PCI domains" concept to keep Xorg happy?

Cheers,
Simon.


Re: PCI domains

2009-07-10 Thread Michael

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hello,

On Jul 10, 2009, at 5:26 AM, Simon Burge wrote:


Everything I see so far says that a "PCI domain" is an OS abstraction
and not part of a PCI specification.  I'm also not sure exactly what
problem you're trying to solve - why exactly does it matter if two PCI
busses share a common "domain" or not?


It matters when you want to map IO space which is per host bridge, not  
per bus. But even then all you end up with is additional mappings of  
the same IO space which is kind of a waste but not really a problem.


have fun
Michael

-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.7 (Darwin)

iQEVAwUBSleMCspnzkX8Yg2nAQKKyQf9GYrlWHf98xLq2oOK8HzPAHb68EANDfEW
cOORlnY1WewhPIbgtE2WYRoOK9VacZgMX4zjpuH9lpGqwVbHSMp1CKQLbyXctnS4
snPxpP/JXSzPDnlM0ZNnDAEvMjZAG2bjPhtdBQQUpKAvBTJQetAPYfyVV/pnLc15
+fq9uBwHuI6n595SREOdaIAS13BJzoQsJGfO8J1fWhdFIK+uXVUknFgfp17BSkZb
T5Pay/OfbCacrSzLPLpm7AlVjmVZc8AxMLsxgznoPm3UljnQRi4rwuy6xdZDCwyY
zn3YxRxHCkd3/zWBW9MHQjjL/ZQMWqmn3jZM95bEqwu6BclUuimFoQ==
=1vAp
-END PGP SIGNATURE-


Re: PCI domains

2009-07-10 Thread Takayoshi Kochi
ia64 also needs multiple PCI domain support.
Actually HP Itanium servers use PCI domains.

IIRC in Alpha terms, it's called "PCI hose".

2009/7/10 Simon Burge 

> "Christoph Egger" wrote:
>
> > > "Christoph Egger" wrote:
> > >
> > > > PCI domains are part of the PCI host bridge specification.
> > > > It is a 16bit-wide number.
> > >
> > > Can you please provide a reference for this?  There's nothing mentioned
> > > in the PCI Local Bus Specification version 2.3.  I can find plenty of
> > > references to "clock domains" and "address space domains", but when I
> > > exclude Linux references I can't seem to find anything useful.
> >
> > It's not in the PCI Local Bus Specification nor in the
> > PCI-to-PCI Bridge Specification. It is in the
> > PCI Host Bridge Specification which is a vendor specific paper.
>
> Again, can you please point to a specific reference?  I grabbed a few
> different host bridge specs and have yet to find any concrete reference
> to "PCI domains".
>
> > The pci host bridges for the alpha port implements PCI domains.
>
> Our alpha port?
>
> thoreau 1170> grep -ir domain alpha
> alpha/include/ieeefp.h: * Public domain.
> alpha/include/fpu.h: * the definition prefix can easily be determined from
> public domain
> alpha/pci/pci_6600.h:/* Public Domain */
>
> > > Everything I see so far says that a "PCI domain" is an OS abstraction
> > > and not part of a PCI specification.  I'm also not sure exactly what
> > > problem you're trying to solve - why exactly does it matter if two PCI
> > > busses share a common "domain" or not?
> >
> > Read the C comment in my first mail. X.org wants to have some
> > information NetBSD currently doesn't provide to userland.
> > This is what I rather want to discuss.
>
> Is that the comment that starts "With each /dev/pci* we can map
> everything on the same root"?  I'll have to re-read that again to make
> sure I understand what you're saying, but in a nutshell is the reason
> you want to introduce the "PCI domains" concept to keep Xorg happy?
>
> Cheers,
> Simon.
>



-- 
Takayoshi Kochi



Re: PCI domains [Was: CVS commit: xsrc/external/mit/libpciaccess/dist/src]

2009-07-10 Thread Michael

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hello,

On Jul 9, 2009, at 10:45 PM, Simon Burge wrote:


Christoph Egger wrote:


Michael Lorenz wrote:


+/*
+ * NetBSD's userland has a /dev/pci* entry for each bus but  
userland has no way
+ * to tell if a bus is a subordinate of another one or if it's on  
a different

+ * host bridge.


I have a patch which introduces support for PCI domains. It allows  
the
userland to distinguish between them by checking if the pci bus  
belongs

to the same PCI domain.


What exactly is a "PCI domain"?  A quick google seems to suggest that
this is a Linux concept as opposed to a PCI concept.  In a previous
life we used NetBSD on a number of different machines of various
architectures that had multiple PCI host bridges, although  
admittedly we

didn't need to know the topology of the PCI bus layout.


If you want to map PCI IO space you do that once per host bridge, not  
once per bus which would be a waste. That's all the X code cares about.


have fun
Michael

-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.7 (Darwin)

iQEVAwUBSld1S8pnzkX8Yg2nAQJadgf9Ex3bCTZqboPBh97ltOqzXKH4Kn2LJ4au
Nru/PCHnK+31zNvOqvU3c3r3VUMmA/RMnWwP9JsDFpFThD2H3QVoIzk95rExibqF
30123zYNuKLVwHHBFp0ydPPdDwuaEf/weinMCT0fz6W9pDXYeuD6mLPriMIZfEJN
pKTUWw3Qew7Wqcw1tCqB89Tm3fYnWuukc8B30bi8y1cf6niIX1kPCnABVIWFH3/4
QVngUUMmVpGY3CQedjjb+6f25Rh1iIwPR+s89MOBL4latLwMHSS6zikwul7jYuUl
/NOR+QnjZ6a6iJRLtdTJxhF1Vspt3L1b85ugFrxfkgdzGbH+woEkww==
=HCtk
-END PGP SIGNATURE-