Created attachment 287619
Skip clipping e820 regions
It looks like the Yoga BIOS-e820 memory map includes some of the memory space reserved for root bridge and the devices below it:
4bc50000-cfffffff BIOS-e820 reserved area
65400000-bfffffff Root bridge
66000000-721fffff PCIe root port 07.1
There is code in arch/x86/kernel/resource.c (arch_remove_reservations()) that clips the resource so that it avoids these regions. This is why we can't find memory space for the upstream port.
I wonder if you can try the attached hack patch that skips the clipping?
The changelog in 4dc2287c1805 ("x86: avoid E820 regions when allocating address space") says that Windows seems to ignore these reserved regions which might explain why this works in Windows.
Created attachment 287619
Skip clipping e820 regions
It looks like the Yoga BIOS-e820 memory map includes some of the memory space reserved for root bridge and the devices below it:
4bc50000-cfffffff BIOS-e820 reserved area 721fffff PCIe root port 07.1
65400000-bfffffff Root bridge
66000000-
There is code in arch/x86/ kernel/ resource. c (arch_remove_ reservations( )) that clips the resource so that it avoids these regions. This is why we can't find memory space for the upstream port.
I wonder if you can try the attached hack patch that skips the clipping?
The changelog in 4dc2287c1805 ("x86: avoid E820 regions when allocating address space") says that Windows seems to ignore these reserved regions which might explain why this works in Windows.