> -----Original Message----- > From: Jiang Liu [mailto:jiang.liu@xxxxxxxxxxxxxxx] > Sent: Wednesday, January 08, 2014 10:33 AM > To: Wang Dongsheng-B40534; Yijing Wang; bhelgaas@xxxxxxxxxx; rjw@xxxxxxxxxxxxx > Cc: Wood Scott-B07421; galak@xxxxxxxxxxxxxx; Zang Roy-R61911; linux- > pci@xxxxxxxxxxxxxxx; linuxppc-dev@xxxxxxxxxxxxxxxx > Subject: Re: [PATCH 1/2] pci: Fix root port bus->self is NULL > > > > On 2014/1/7 17:51, Dongsheng.Wang@xxxxxxxxxxxxx wrote: > >>>> diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index > >>>> 38e403d..7f2d1ab 100644 > >>>> --- a/drivers/pci/probe.c > >>>> +++ b/drivers/pci/probe.c > >>>> @@ -1472,6 +1472,9 @@ int pci_scan_slot(struct pci_bus *bus, int devfn) > >>>> if (!dev->is_added) > >>>> nr++; > >>>> > >>>> + if (pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT) > >>>> + bus->self = dev; > >>> > >>> In this case, bus is the pci root bus I think, so why set bus->self > >>> = root > >> port ? > >>> "bus->self" should pointer to the pci device that bridge out this bus. > >> Yes, this patch seems wrong. If dev is root port, bus should be root > >> bus, so we shouldn't set root_bus->self = pci_dev_of_root_port. > >> > > Why the root bus->self pointer to the bridge? > > If child bus create from root bus, the child->self will get the bridge(root > port) pci device. > > > >> Actually PCI core has correctly setup pci_bus->self for secondary bus > >> of PCIe root port. > > Yes, right. But the root-bus->self is NULL. I think the root bus > > should get root port pci device for itself. If there is no bridge at board how > to get the root port device? > Hi Dongsheng, > PCI root bus represents PCI host bridge, which has no corresponding PCI > device. > Yes, agree. If more than one bridge on the root bus, this patch is wrong. Thanks for your review. :) -Dongsheng > > > > -Dongsheng > > > >> > >> Thanks! > >> Gerry > >> > > > ��.n��������+%������w��{.n�����{���"�)��jg��������ݢj����G�������j:+v���w�m������w�������h�����٥