aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/linux/ioport.h1
-rw-r--r--kernel/resource.c6
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,
123extern struct resource *insert_resource_conflict(struct resource *parent, struct resource *new); 123extern struct resource *insert_resource_conflict(struct resource *parent, struct resource *new);
124extern int insert_resource(struct resource *parent, struct resource *new); 124extern int insert_resource(struct resource *parent, struct resource *new);
125extern void insert_resource_expand_to_fit(struct resource *root, struct resource *new); 125extern void insert_resource_expand_to_fit(struct resource *root, struct resource *new);
126extern void arch_remove_reservations(struct resource *avail);
126extern int allocate_resource(struct resource *root, struct resource *new, 127extern 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
360void __weak arch_remove_reservations(struct resource *avail)
361{
362}
363
360static resource_size_t simple_align_resource(void *data, 364static 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;