ACPI hotplug code now uses the PCI core to allocate and manage
resources for hot-plug devices. To work correctly, this requires
all bridges to report resources they are decoding in their
pci_bus structure. We already do this for PCI-PCI bridges, but
not for host bridges. This patchset reads and stores host bridge
resources reported by ACPI BIOS for i386 and x86_64 systems.
Without this, we currently assume that all host bridges decode
all unused resources in iomem_resource and ioport_resource.
This patchset also adds a boot parameter (acpi=root_resources),
and the code to collect resources does not trigger unless it
is enabled via this boot option. This fixes hotplug failures
on some IBM (xseries) systems, and has been previously discussed
on the pci hotplug mailing list.
The current pci_bus structure can only store 4 resource
descriptors for a bus, but many host bridges decode more than 4
ranges. Storing incomplete host bridges resource ranges could
lead to resource-not-available errors for devices that were
otherwise properly configured by BIOS. Hence, this code triggers
only when it is explicitly enabled using the acpi=root_resources
boot option. For now, I expect that only systems that have PCI
hotplug slots directly under a host bridge will enable this option.
Rajesh
--