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"?
With latest code from Yinghai, the host bridge is defined as:
struct pci_host_bridge {        
        struct device dev;
        struct pci_bus *bus;            /* root bus */
        struct list_head windows;       /* pci_host_bridge_windows */
        void (*release_fn)(struct pci_host_bridge *);
        void *release_data;
};

So I think it's already working in the way suggested by you.

> 
> 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?
> 

--
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