Re: One chart on pci bridge and its bus and their children

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

 



On 06/05/2012 02:02 PM, Richard Yang wrote:
> On Mon, Jun 04, 2012 at 10:18:46PM -0700, Yinghai Lu wrote:
>> On Mon, Jun 4, 2012 at 9:37 PM, Bjorn Helgaas <bhelgaas@xxxxxxxxxx> wrote:
>>> That's true, but I don't think it answers the question.  If we have:
>>>
>>>    pci_bus->bridge == pci_bus->self->dev
>>>
>>> why would we need both "self" and "bridge"?  It would be interesting
>>> to try to remove "bridge" and replace uses of it with "self->dev".
>>
>> then how about root bus?
>>
>> root bus ->self should be NULL.
>>
>> root bus ->bridge is to the hostbridge->dev.
>>
>> Yinghai
> 
> Agree, root_pci_bus->self is NULL, and root_pci_bus->bridge point to a
> solo device structure, not in hostbridge. 
> 
> BTW, if the dev is the hostbrige->dev, why not pci_host_bridge contain a
> field "dev"?
> 
> And, why root bus differs with other bus a lot?
> Both root bus and other bus use self/bridge point to the "PCI BRIDGE"
> device.
> I think we can determine whether this is a root bus by bus->parent?
Hi Richard,

There's fundamental difference between root bridge and pci bridge.  

A PCI bridge is a PCI to PCI bridge. It's presented as a PCI device
on the primary bus and hosts the secondary bus. So the secondary bus is
associated with the PCI device on the primary bus through pci_bus->self
and pci_bus->device.

A root bridge is a system bus to PCI bus bridge, which connects PCI domain
to system bus domain. The primary side is the system bus and the secondary
side is a PCI bus, so there's a PCI bus associated with a root bridge, 
but there's no PCI device for the root bridge because it's primary side
is system bus, out of the PCI domain.

pci_bus->bridge is a common abstraction of the device associated with
a PCI bus, no matter it's a host bridge or P2P bridge. So we don't need
to distinguish between host bridge and pci bridge when we want to hold
a reference to the device associated with a PCI bus.

Thanks!
Gerry
--
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