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>