On Fri, May 25, 2012 at 7:56 AM, Bjorn Helgaas <bhelgaas@xxxxxxxxxx> wrote: > 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." Great, very very clear, it is very helpful to me, maybe plus other guys, thanks a lot. > > Bjorn -- Regards, Zhi Yong Wu -- 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