aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/resource.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/resource.c')
-rw-r--r--kernel/resource.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/kernel/resource.c b/kernel/resource.c
index 3f285dce9347..673061c06da1 100644
--- a/kernel/resource.c
+++ b/kernel/resource.c
@@ -432,11 +432,6 @@ static void resource_clip(struct resource *res, resource_size_t min,
432 res->end = max; 432 res->end = max;
433} 433}
434 434
435static bool resource_contains(struct resource *res1, struct resource *res2)
436{
437 return res1->start <= res2->start && res1->end >= res2->end;
438}
439
440/* 435/*
441 * Find empty slot in the resource tree with the given range and 436 * Find empty slot in the resource tree with the given range and
442 * alignment constraints 437 * alignment constraints
@@ -471,10 +466,11 @@ static int __find_resource(struct resource *root, struct resource *old,
471 arch_remove_reservations(&tmp); 466 arch_remove_reservations(&tmp);
472 467
473 /* Check for overflow after ALIGN() */ 468 /* Check for overflow after ALIGN() */
474 avail = *new;
475 avail.start = ALIGN(tmp.start, constraint->align); 469 avail.start = ALIGN(tmp.start, constraint->align);
476 avail.end = tmp.end; 470 avail.end = tmp.end;
471 avail.flags = new->flags & ~IORESOURCE_UNSET;
477 if (avail.start >= tmp.start) { 472 if (avail.start >= tmp.start) {
473 alloc.flags = avail.flags;
478 alloc.start = constraint->alignf(constraint->alignf_data, &avail, 474 alloc.start = constraint->alignf(constraint->alignf_data, &avail,
479 size, constraint->align); 475 size, constraint->align);
480 alloc.end = alloc.start + size - 1; 476 alloc.end = alloc.start + size - 1;
@@ -949,8 +945,8 @@ struct resource * __request_region(struct resource *parent,
949 res->name = name; 945 res->name = name;
950 res->start = start; 946 res->start = start;
951 res->end = start + n - 1; 947 res->end = start + n - 1;
952 res->flags = IORESOURCE_BUSY; 948 res->flags = resource_type(parent);
953 res->flags |= flags; 949 res->flags |= IORESOURCE_BUSY | flags;
954 950
955 write_lock(&resource_lock); 951 write_lock(&resource_lock);
956 952