Hi all, Here's a series that contains two fixes to PCI bridge window sizing algorithm. Together, they should enable remove & rescan cycle to work for a PCI bus that has PCI devices with optional resources and/or disparity in BAR sizes. For the second fix, I chose to expose find_resource_space() from kernel/resource.c because it should increase accuracy of the cannot-fit decision (currently that function is called find_resource()). In order to do that sensibly, a few improvements seemed in order to make its interface and name of the function sane before exposing it. Thus, the few extra patches on resource side. v3: - Removed "slot" wording - Renamed find_empty_resource_slot() -> find_resource_space() - find_resource_space() returns bool instead of int - Added patch to convert literal 20 related to bridge win minimum alignment to __ffs(SZ_1M) - Fixed kerneldoc missing "struct" - Tweaked prints (one dbg -> info, added new dbg one for success case) - Changelog tweaks - Take account largest >> 1 (in alignment calc) - Adjust to minor changes made into calculate_memsize() - Take logs from more recent kernel to get rid of reg 0xXX v2: - Add "typedef" to kerneldoc to get correct formatting - Use RESOURCE_SIZE_MAX instead of literal - Remove unnecessary checks for io{port/mem}_resource - Apply a few style tweaks from Andy Ilpo Järvinen (8): PCI: Fix resource double counting on remove & rescan resource: Rename find_resource() to find_resource_space() resource: Document find_resource_space() and resource_constraint resource: Use typedef for alignf callback resource: Handle simple alignment inside __find_resource_space() resource: Export find_resource_space() PCI: Make minimum bridge window alignment reference more obvious PCI: Relax bridge window tail sizing rules drivers/pci/bus.c | 10 +---- drivers/pci/setup-bus.c | 91 +++++++++++++++++++++++++++++++++++++---- include/linux/ioport.h | 44 ++++++++++++++++++-- include/linux/pci.h | 5 +-- kernel/resource.c | 68 ++++++++++++++---------------- 5 files changed, 157 insertions(+), 61 deletions(-) -- 2.39.2