On Mon, Jun 4, 2012 at 11:35 PM, Ram Pai <linuxram@xxxxxxxxxx> wrote: > On Mon, Jun 04, 2012 at 10:20:51PM -0700, Yinghai Lu wrote: >> On Mon, Jun 4, 2012 at 10:18 PM, Yinghai Lu <yinghai@xxxxxxxxxx> 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, > > is there a reason why this can't be fixed in > pci_create_root_bus() by having > bus->self = bridge; /* 'bridge' is the pci_device of the corresponding host bridge */ > get_device(&bridge->dev); self is pointer to pci_dev bridge. and for root bus, it is NULL. that mean no pci bridge device related. bridge is device, and have that assigned from host bridge dev, or pci bridge dev. also for virtfn of iov, new bus from there will not have self assigned too. for it even bridge is not assigned. so bridge is just generic way to save bridge (pci, host) device ... -- 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