diff options
-rw-r--r-- | include/linux/ioport.h | 1 | ||||
-rw-r--r-- | kernel/resource.c | 6 |
2 files changed, 7 insertions, 0 deletions
diff --git a/include/linux/ioport.h b/include/linux/ioport.h index b22790268b64..e9bb22cba764 100644 --- a/include/linux/ioport.h +++ b/include/linux/ioport.h | |||
@@ -123,6 +123,7 @@ extern void reserve_region_with_split(struct resource *root, | |||
123 | extern struct resource *insert_resource_conflict(struct resource *parent, struct resource *new); | 123 | extern struct resource *insert_resource_conflict(struct resource *parent, struct resource *new); |
124 | extern int insert_resource(struct resource *parent, struct resource *new); | 124 | extern int insert_resource(struct resource *parent, struct resource *new); |
125 | extern void insert_resource_expand_to_fit(struct resource *root, struct resource *new); | 125 | extern void insert_resource_expand_to_fit(struct resource *root, struct resource *new); |
126 | extern void arch_remove_reservations(struct resource *avail); | ||
126 | extern int allocate_resource(struct resource *root, struct resource *new, | 127 | extern int allocate_resource(struct resource *root, struct resource *new, |
127 | resource_size_t size, resource_size_t min, | 128 | resource_size_t size, resource_size_t min, |
128 | resource_size_t max, resource_size_t align, | 129 | resource_size_t max, resource_size_t align, |
diff --git a/kernel/resource.c b/kernel/resource.c index 560659f7baef..798e2fae2a06 100644 --- a/kernel/resource.c +++ b/kernel/resource.c | |||
@@ -357,6 +357,10 @@ int __weak page_is_ram(unsigned long pfn) | |||
357 | return walk_system_ram_range(pfn, 1, NULL, __is_ram) == 1; | 357 | return walk_system_ram_range(pfn, 1, NULL, __is_ram) == 1; |
358 | } | 358 | } |
359 | 359 | ||
360 | void __weak arch_remove_reservations(struct resource *avail) | ||
361 | { | ||
362 | } | ||
363 | |||
360 | static resource_size_t simple_align_resource(void *data, | 364 | static resource_size_t simple_align_resource(void *data, |
361 | const struct resource *avail, | 365 | const struct resource *avail, |
362 | resource_size_t size, | 366 | resource_size_t size, |
@@ -394,6 +398,7 @@ static int find_resource(struct resource *root, struct resource *new, | |||
394 | struct resource *this = root->child; | 398 | struct resource *this = root->child; |
395 | struct resource tmp = *new, avail, alloc; | 399 | struct resource tmp = *new, avail, alloc; |
396 | 400 | ||
401 | tmp.flags = new->flags; | ||
397 | tmp.start = root->start; | 402 | tmp.start = root->start; |
398 | /* | 403 | /* |
399 | * Skip past an allocated resource that starts at 0, since the assignment | 404 | * Skip past an allocated resource that starts at 0, since the assignment |
@@ -410,6 +415,7 @@ static int find_resource(struct resource *root, struct resource *new, | |||
410 | tmp.end = root->end; | 415 | tmp.end = root->end; |
411 | 416 | ||
412 | resource_clip(&tmp, min, max); | 417 | resource_clip(&tmp, min, max); |
418 | arch_remove_reservations(&tmp); | ||
413 | 419 | ||
414 | /* Check for overflow after ALIGN() */ | 420 | /* Check for overflow after ALIGN() */ |
415 | avail = *new; | 421 | avail = *new; |