IO resources: add reserve_region_with_split()
authorYinghai Lu <yhlu.kernel@gmail.com>
Thu, 4 Sep 2008 19:02:44 +0000 (21:02 +0200)
committerIngo Molnar <mingo@elte.hu>
Thu, 4 Sep 2008 19:02:44 +0000 (21:02 +0200)
commit268364a0f48aee2f851f9d1ef8a6cda0f3039ef1
tree018d00aa42b74a80baf976258aa9b17abdfb44c6
parentd210baf53b699fc61aa891c177b71d7082d3b957
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>
include/linux/ioport.h
kernel/resource.c