lmb: Add lmb_free()

We can free memory allocated with lmb_alloc() by removing it from the
list of reserved LMBs. Rework lmb_remove() to allow that possibility
and add lmb_free() which exploits it.

BenH: Removed some useless parenthesis

Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
Michael Ellerman
2010-01-12 21:25:24 +00:00
committed by Benjamin Herrenschmidt
parent 859aefc5af
commit 24551f64d4
2 changed files with 12 additions and 2 deletions

View File

@@ -205,9 +205,8 @@ long lmb_add(u64 base, u64 size)
}
long lmb_remove(u64 base, u64 size)
static long __lmb_remove(struct lmb_region *rgn, u64 base, u64 size)
{
struct lmb_region *rgn = &(lmb.memory);
u64 rgnbegin, rgnend;
u64 end = base + size;
int i;
@@ -254,6 +253,16 @@ long lmb_remove(u64 base, u64 size)
return lmb_add_region(rgn, end, rgnend - end);
}
long lmb_remove(u64 base, u64 size)
{
return __lmb_remove(&lmb.memory, base, size);
}
long __init lmb_free(u64 base, u64 size)
{
return __lmb_remove(&lmb.reserved, base, size);
}
long __init lmb_reserve(u64 base, u64 size)
{
struct lmb_region *_rgn = &lmb.reserved;