diff options
Diffstat (limited to 'kernel/resource.c')
-rw-r--r-- | kernel/resource.c | 12 |
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 | ||
435 | static 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 | ||