We don't have a log with 5949965ec934 ("x86/PCI: Preserve host bridge windows completely covered by E820") applied, but I think it would show this: acpi PNP0A08:00: resource [mem 0x000a0000-0x000bffff window] fully covered by e820 entry [mem 0x000a0000-0x000fffff] acpi PNP0A08:00: resource [mem 0x7b800000-0x7fffffff window] fully covered by e820 entry [mem 0x7b000000-0x7fffffff] instead of clipping those windows. But none of the devices we enumerate appears to be using either of those windows. We do have this: pci 0000:00:18.2: reg 0x10: [mem 0xde000000-0xde000fff 64bit] pci 0000:00:18.2: reg 0x18: [mem 0xc2b31000-0xc2b31fff 64bit] pci 0000:00:18.2: can't claim BAR 0 [mem 0xde000000-0xde000fff 64bit]: no compatible bridge window pci 0000:00:18.2: BAR 0: assigned [mem 0x80000000-0x80000fff 64bit] Where the original [mem 0xde000000-0xde000fff 64bit] assignment was perfectly legal, but we clipped [mem 0x80000000-0xe0000000 window] to [mem 0x80000000-0xcfffffff window] instead of just punching a hole for the 00:0d.0 carve-out. Maybe 5949965ec934 puts 00:18.2 BAR 0 somewhere that doesn't work, or maybe the clipping to [mem 0x00100000-0x000bffff window] or [mem 0x80000000-0x7fffffff window] doesn't work as expected? They are supposed to be interpreted as "empty", but certainly resource_size([0x00100000-0x000bffff]) is != 0. > + e820_start <= avail->start && avail->end <= e820_end) { > dev_info(dev, "resource %pR fully covered by e820 entry [mem %#010Lx-%#010Lx]\n", > avail, e820_start, e820_end); > continue; > -- > 2.35.1 >