Re: PCI: cardbus bridge

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, May 24, 2012 at 3:24 AM, Zhi Yong Wu <zwu.kernel@xxxxxxxxx> wrote:
> On Thu, May 24, 2012 at 5:21 PM, Stefan Hajnoczi <stefanha@xxxxxxxxx> wrote:
>> On Thu, May 24, 2012 at 9:56 AM, Zhi Yong Wu <zwu.kernel@xxxxxxxxx> wrote:
>>> On Thu, May 24, 2012 at 4:37 PM, Stefan Hajnoczi <stefanha@xxxxxxxxx> wrote:
>>>> On Thu, May 24, 2012 at 9:26 AM, Zhi Yong Wu <zwu.kernel@xxxxxxxxx> wrote:

>>>>> By the way, someone usually mentioned pci host bridge, pci root
>>>>> bridge. What the differences among them are?
>>>>
>>>> I'm not sure what the exact difference is.  PCI "root" bridge refers
>>>> to the hierarchical nature of PCI, while PCI "host" bridge refers to
>>> You mean that PCI "root" bridge is one alias of another some bridge?
>>
>> The root bridge is the root of a tree of PCI busses.  It's the bus
>> that the host interacts with - there may be PCI bridges that attach
>> additional busses.

"Root bridge" and "host bridge" mean the same thing in Linux: a bridge
that connects host CPUs to a PCI fabric.  This bridge is not
architected.  The upstream interface and the programming interface are
implementation specific.  The downstream interface is PCI, so that
part is standard, but since the programming interface is not defined,
you can't *do* anything useful to it without an
implementation-specific driver.

On x86 and ia64, that driver is an ACPI driver, and the BIOS supplies
ACPI methods that hide the implementation details from the OS.

The PCI and ACPI specs use the term "host bridge," so that's what I
prefer.  The ACPI driver is "pci_root.c" and it calls it "PCI Root
Bridge."

A PCI bus immediately below a host bridge is commonly called a "root
bus."  This may be bus 0, but it need not be.  Most modern systems
have multiple host bridges, each of which has a root bus.

A PCI-to-PCI bridge is different: it has PCI interfaces on both
upstream ("primary") and downstream ("secondary") sides.  It is
defined by the spec.

>> BTW I don't know the terminology, maybe it's PCI "domains" not
>> "busses".  Again, you'd have to look at the PCI specification to get
>> the exact definition.

Linux uses "domain" to refer to what the PCI and ACPI specs call a
"segment group."  Here's the definition (from the PCI Firmware Spec):

"A number in the range 0…65535 that uniquely selects a PCI Segment Group.

PCI Segment Group is purely a software concept managed by system
firmware and used by the operation
system. It is a logical collection of PCI buses (or bus segments).
There is no tie to any physical entities. It is a
way to logically group the PCI bus segments and PCI Express Hierarchies.

PCI Segment Group concept enables support for more than 256 buses in a
system by allowing the reuse of the PCI bus numbers. Within each PCI
Segment Group, the bus numbers for the PCI buses must be unique. PCI
buses in different PCI Segment Group are permitted to have the same
bus number.

A PCI Segment Group contains one or more PCI host bridges."

Bjorn
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux