Message ID | 1455680668-23298-33-git-send-email-gwshan@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Bjorn Helgaas |
Headers | show |
On 02/17/2016 02:44 PM, Gavin Shan wrote: > On the PCI plugging event, PCI slot's subordinate devices are > scanned and their (IO and MMIO) resources are assigned. Platform > dependent resources (PE#, IO/MMIO/DMA windows) are allocated or > created on updating windows of the slot's upstream bridge. > > This updates the windows of the hot plugged slot's upstream bridge > in pcibios_finish_adding_to_bus() so that the platform resources > (PE#, IO/MMIO/DMA segments) are allocated or created accordingly. > > Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com> To my very limited knowledge of the common PCI code, looks good. Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru> > --- > arch/powerpc/kernel/pci-common.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c > index 40df3a5..be9e515 100644 > --- a/arch/powerpc/kernel/pci-common.c > +++ b/arch/powerpc/kernel/pci-common.c > @@ -1444,8 +1444,12 @@ void pcibios_finish_adding_to_bus(struct pci_bus *bus) > /* Allocate bus and devices resources */ > pcibios_allocate_bus_resources(bus); > pcibios_claim_one_bus(bus); > - if (!pci_has_flag(PCI_PROBE_ONLY)) > - pci_assign_unassigned_bus_resources(bus); > + if (!pci_has_flag(PCI_PROBE_ONLY)) { > + if (bus->self) > + pci_assign_unassigned_bridge_resources(bus->self); > + else > + pci_assign_unassigned_bus_resources(bus); > + } > > /* Fixup EEH */ > eeh_add_device_tree_late(bus); >
diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c index 40df3a5..be9e515 100644 --- a/arch/powerpc/kernel/pci-common.c +++ b/arch/powerpc/kernel/pci-common.c @@ -1444,8 +1444,12 @@ void pcibios_finish_adding_to_bus(struct pci_bus *bus) /* Allocate bus and devices resources */ pcibios_allocate_bus_resources(bus); pcibios_claim_one_bus(bus); - if (!pci_has_flag(PCI_PROBE_ONLY)) - pci_assign_unassigned_bus_resources(bus); + if (!pci_has_flag(PCI_PROBE_ONLY)) { + if (bus->self) + pci_assign_unassigned_bridge_resources(bus->self); + else + pci_assign_unassigned_bus_resources(bus); + } /* Fixup EEH */ eeh_add_device_tree_late(bus);
On the PCI plugging event, PCI slot's subordinate devices are scanned and their (IO and MMIO) resources are assigned. Platform dependent resources (PE#, IO/MMIO/DMA windows) are allocated or created on updating windows of the slot's upstream bridge. This updates the windows of the hot plugged slot's upstream bridge in pcibios_finish_adding_to_bus() so that the platform resources (PE#, IO/MMIO/DMA segments) are allocated or created accordingly. Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com> --- arch/powerpc/kernel/pci-common.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)