From: Jiang Liu <liuj97@xxxxxxxxx> From: Jiang Liu <jiang.liu@xxxxxxxxxx> This patchset enhance pci_root driver to update MMCFG information when hot-plugging PCI root bridges. It applies to git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git pci/next-3.5 -v2: split into smaller patches and skip updating MMCFG information when MMCFG is disabled -v3: add mmconf_added to simply free path, also make pci_mmconfig_insert() to process extra exist case --- By Yinghai -v4: tune arch_acpi_pci_root_add() to handle a corner case raised by Kenji -v5: address review comments from Bjorn and Taku, also better handle corner cases in arch_acpi_pci_root_add() -v6: get rid of arch_acpi_pci_root_xxx() by using existing hooks add MCFG information for host bridges on demand more corner cases clear up correctly handle condition compilation fix section mismatch issues fix a issue reported by Taku about a BIOS bug The first 4 patches in series is the same with v5. On a test platform with four SandyBridge processors, MMCFG resources from /proc/iomem are as below. With original implementation: bf000000-cfffffff : reserved c0000000-cfffffff : PCI MMCONFIG 0000 [bus 00-ff] With patch set applied: bf000000-cfffffff : reserved c0000000-c3efffff : PCI MMCONFIG 0000 [bus 00-3e] c3f00000-c3ffffff : PCI MMCONFIG 0000 [bus 3f-3f] c4000000-c7efffff : PCI MMCONFIG 0000 [bus 40-7e] c7f00000-c7ffffff : PCI MMCONFIG 0000 [bus 7f-7f] c8000000-cbefffff : PCI MMCONFIG 0000 [bus 80-be] cbf00000-cbffffff : PCI MMCONFIG 0000 [bus bf-bf] cc000000-cfefffff : PCI MMCONFIG 0000 [bus c0-fe] cff00000-cfffffff : PCI MMCONFIG 0000 [bus ff-ff] After removing a host bridge: bf000000-cfffffff : reserved c0000000-c3efffff : PCI MMCONFIG 0000 [bus 00-3e] c3f00000-c3ffffff : PCI MMCONFIG 0000 [bus 3f-3f] c4000000-c7efffff : PCI MMCONFIG 0000 [bus 40-7e] c7f00000-c7ffffff : PCI MMCONFIG 0000 [bus 7f-7f] c8000000-cbefffff : PCI MMCONFIG 0000 [bus 80-be] cbf00000-cbffffff : PCI MMCONFIG 0000 [bus bf-bf] cc000000-cfefffff : PCI MMCONFIG 0000 [bus c0-fe] cff00000-cfffffff : PCI MMCONFIG 0000 [bus ff-ff] After adding the host bridge back bf000000-cfffffff : reserved c0000000-c3efffff : PCI MMCONFIG 0000 [bus 00-3e] c3f00000-c3ffffff : PCI MMCONFIG 0000 [bus 3f-3f] c4000000-c7efffff : PCI MMCONFIG 0000 [bus 40-7e] c7f00000-c7ffffff : PCI MMCONFIG 0000 [bus 7f-7f] c8000000-cbefffff : PCI MMCONFIG 0000 [bus 80-be] cbf00000-cbffffff : PCI MMCONFIG 0000 [bus bf-bf] cc000000-cfefffff : PCI MMCONFIG 0000 [bus c0-fe] cff00000-cfffffff : PCI MMCONFIG 0000 [bus ff-ff] Jiang Liu (9): PCI, x86: split out pci_mmcfg_check_reserved() for code reuse PCI, x86: split out pci_mmconfig_alloc() for code reuse PCI, x86: use RCU list to protect mmconfig list PCI, x86: introduce pci_mmcfg_arch_map()/pci_mmcfg_arch_unmap() PCI, x86: introduce pci_mmconfig_insert()/delete() for PCI root bridge hotplug PCI, ACPI: provide MCFG address for PCI host bridges PCI, x86: update MMCFG information when hot-plugging PCI host bridges PCI, x86: add MMCFG information on demand PCI, x86: simplify pci_mmcfg_late_insert_resources() arch/x86/include/asm/pci_x86.h | 11 ++ arch/x86/pci/acpi.c | 71 ++++++++++ arch/x86/pci/legacy.c | 1 + arch/x86/pci/mmconfig-shared.c | 280 ++++++++++++++++++++++++++++++---------- arch/x86/pci/mmconfig_32.c | 30 ++++- arch/x86/pci/mmconfig_64.c | 37 +++++- drivers/acpi/pci_root.c | 12 ++ drivers/pci/pci-acpi.c | 34 +++++ include/acpi/acnames.h | 1 + include/acpi/acpi_bus.h | 3 + include/linux/pci-acpi.h | 5 + 11 files changed, 412 insertions(+), 73 deletions(-) -- 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