the two regressions from the reporters:
BIOS put 0xa0000-0xb0000, 0xc0000- 0xd0000 with E820_RESERVED.
BIOS ACPI _CRS keep 0xa0000-0xb0000, 0xc0000-0xd0000 as part resources
for peer root bus: BUS 0.
kernel insert 0xa0000-0xb0000 into resource tree with _BUSY in
e820_reserve_resources() at first.
last pci bus scan code, will insert 0xa0000-0xb0000, and it is under
previous reserved entry.
later pci_assign_unassign code, will use bus 0 resources directly, and
don't care if the parent's have _BUSY bit.
solutions:
1. mark _BUSY under bus 0 resource: ==> -v3
2. split e820 reserve entries to small pieces to fit into bus 0
resources, so will have holder under bus0 resources. it will prevent
those range to be used.
-v4
3. reject any dynamically allocation under 1M. ==> Bjorn's new patch.
till now, driver can reserve resource under 1M, only when those range is
not in e820.
case A:
bus 0: --- bus X --- device Y
if the BIOS only assign range to to BUS X bridge with 0xB0000, and
device Y is not assigned. then with Bojorn's patch, device Y can not
get right resource allocated on first try.
my -v4 can handle that case.
YH
--