This patch series redesigns and adds new features to pciinit.c code.
[Patches 1-4] There are no more arrays of bases and counts in new implementation. The new implementation is based on dynamic allocation of pci_region_entry structures which are grouped into lists. Each pci_region_entry structure could be a PCI bar or a downstream PCI region (bridge). Each entry has a set of attributes: type (IO, MEM,PREFMEM), is64bit, size.
[Patch 5] Bridge regions are no longer rounded up to the next highest size - instead track alignment explicitly. This should improve the memory layout for bridge regions. Also, unused bridge regions will no longer be allocated any space.
[Patch 6] Patch takes into account PCI bar and ROM regions of PCI bridges
[Patches 7-12] Make pciinit.c 64bit aware. Support discovery and configuration of 64bit bars, with non-zero upper32 bits. Code allocates the 64bit PCI bars in high address range if they don't fir in 32bit range.
Kevin O'Konor (6): 0001-pciinit-Introduction-of-pci_region_entry-structure.patch 0002-pciinit-Move-bus-bar-asignment.patch 0004-pciinit-Use-sorted-order-allocation.patch 0005-pciinit-Track-region-alignment-explicitly.patch 0006-pciinit-bridges-can-have-two-regions-too.patch 0007-pciinit-Switch-to-64bit-variable-types.patch
Alexey Korolev (6): 0003-pciinit-Remove-size-element-from-pci_bus-r-structure.patch 0008-pciinit-Add-pci_region-structure.patch 0009-pciinit-64bit-capability-discovery-for-pci-bridges.patch 0010-Do-not-store-pci-region-stats-instead-calulate-the-s.patch 0011-Migrate-64bit-entries-to-64bit-pci-regions.patch 0012-Fix-64bit-PCI-issues-on-Windows.patch
src/acpi-dsdt.dsl | 7 + src/acpi-dsdt.hex | 64 +++++++- src/config.h | 2 + src/pci.h | 6 +- src/pciinit.c | 464 ++++++++++++++++++++++++++++++----------------------- 5 files changed, 325 insertions(+), 218 deletions(-)