summaryrefslogtreecommitdiffstats
path: root/include/linux/ioport.h
diff options
context:
space:
mode:
authorYinghai Lu <yhlu.kernel@gmail.com>2008-09-04 21:02:44 +0200
committerIngo Molnar <mingo@elte.hu>2008-09-04 21:02:44 +0200
commit268364a0f48aee2f851f9d1ef8a6cda0f3039ef1 (patch)
tree018d00aa42b74a80baf976258aa9b17abdfb44c6 /include/linux/ioport.h
parentd210baf53b699fc61aa891c177b71d7082d3b957 (diff)
downloadlinux-268364a0f48aee2f851f9d1ef8a6cda0f3039ef1.tar.gz
linux-268364a0f48aee2f851f9d1ef8a6cda0f3039ef1.tar.bz2
linux-268364a0f48aee2f851f9d1ef8a6cda0f3039ef1.zip
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>
Diffstat (limited to 'include/linux/ioport.h')
-rw-r--r--include/linux/ioport.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/ioport.h b/include/linux/ioport.h
index 8d3b7a9afd17..fded376b94e3 100644
--- a/include/linux/ioport.h
+++ b/include/linux/ioport.h
@@ -108,6 +108,9 @@ extern struct resource iomem_resource;
extern int request_resource(struct resource *root, struct resource *new);
extern int release_resource(struct resource *new);
+extern void reserve_region_with_split(struct resource *root,
+ resource_size_t start, resource_size_t end,
+ const char *name);
extern int insert_resource(struct resource *parent, struct resource *new);
extern void insert_resource_expand_to_fit(struct resource *root, struct resource *new);
extern int allocate_resource(struct resource *root, struct resource *new,