summaryrefslogtreecommitdiff
path: root/lib/lmb.c
diff options
context:
space:
mode:
authorIlias Apalodimas <[email protected]>2025-03-14 12:57:02 +0200
committerTom Rini <[email protected]>2025-03-24 11:12:33 -0600
commit67be24906feb6efecce70cd5bfdc2ba8f06d3d5b (patch)
treee56ec2da79f287a6568eae8a040046d6afa0be0a /lib/lmb.c
parent244e61fbb7f5045e4e187024f7ae80434c952145 (diff)
lmb: change the return code on lmb_alloc_addr()
Ben reports a failure to boot the kernel on hardware that starts its physical memory from 0x0. The reason is that lmb_alloc_addr(), which is supposed to reserve a specific address, takes the address as the first argument, but then also returns the address for success or failure and treats 0 as a failure. Since we already know the address change the prototype to return an int. Reported-by: Ben Schneider <[email protected]> Signed-off-by: Ilias Apalodimas <[email protected]> Tested-by: Ben Schneider <[email protected]> Reviewed-by: Sughosh Ganu <[email protected]>
Diffstat (limited to 'lib/lmb.c')
-rw-r--r--lib/lmb.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/lmb.c b/lib/lmb.c
index 93fc1bea07c..61bb13dc4e2 100644
--- a/lib/lmb.c
+++ b/lib/lmb.c
@@ -714,7 +714,7 @@ phys_addr_t lmb_alloc_base(phys_size_t size, ulong align, phys_addr_t max_addr,
return alloc;
}
-phys_addr_t lmb_alloc_addr(phys_addr_t base, phys_size_t size, u32 flags)
+int lmb_alloc_addr(phys_addr_t base, phys_size_t size, u32 flags)
{
long rgn;
struct lmb_region *lmb_memory = lmb.available_mem.data;
@@ -731,11 +731,11 @@ phys_addr_t lmb_alloc_addr(phys_addr_t base, phys_size_t size, u32 flags)
base + size - 1, 1)) {
/* ok, reserve the memory */
if (!lmb_reserve(base, size, flags))
- return base;
+ return 0;
}
}
- return 0;
+ return -1;
}
/* Return number of bytes from a given address that are free */