IO resources: add reserve_region_with_split()
add reserve_region_with_split() to not lose e820 reserved entries if
they overlap with existing IO regions:
with test case by extend 0xe0000000 - 0xeffffff to 0xdd800000 -
we get:
e0000000-
efffffff : PCI MMCONFIG 0
e0000000-
efffffff : reserved
and in /proc/iomem we get:
found conflict for reserved [
dd800000,
efffffff], try to reserve with split
__reserve_region_with_split: (PCI Bus #80) [
dd000000,
ddffffff], res: (reserved) [
dd800000,
efffffff]
__reserve_region_with_split: (PCI Bus #00) [
de000000,
dfffffff], res: (reserved) [
de000000,
efffffff]
initcall pci_subsys_init+0x0/0x121 returned 0 after 381 msecs
in dmesg
various fixes and improvements suggested by Linus.
Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>