From fe5d5e85711e765199853739e7e787621804778b Mon Sep 17 00:00:00 2001 From: Stefan Berger Date: Thu, 30 Nov 2023 09:17:17 -0500 Subject: [PATCH] kern/ieee1275/init/ppc64: Return allocated address using context Return the allocated address of the memory block in the request structure if a memory allocation was actually done. Leave the address untouched otherwise. This enables a caller who wants to use the allocated memory directly, rather than adding the memory to the heap, to see where memory was allocated. None of the current callers need this but the converted ieee1275 loader will make use of it. Signed-off-by: Stefan Berger Reviewed-by: Daniel Kiper Cc: Hari Bathini Cc: Pavithra Prakash Cc: Michael Ellerman Cc: Carolyn Scherrer Cc: Mahesh Salgaonkar Cc: Sourabh Jain --- grub-core/kern/ieee1275/init.c | 2 ++ include/grub/ieee1275/alloc.h | 1 + 2 files changed, 3 insertions(+) diff --git a/grub-core/kern/ieee1275/init.c b/grub-core/kern/ieee1275/init.c index 8e69da297..4b9face59 100644 --- a/grub-core/kern/ieee1275/init.c +++ b/grub-core/kern/ieee1275/init.c @@ -518,6 +518,8 @@ regions_claim (grub_uint64_t addr, grub_uint64_t len, grub_memory_type_t type, if (rcr->init_region) grub_mm_init_region ((void *) (grub_addr_t) addr, len); rcr->total -= len; + + rcr->addr = addr; } *(grub_uint32_t *) data = rcr->total; diff --git a/include/grub/ieee1275/alloc.h b/include/grub/ieee1275/alloc.h index 523f51fc6..f3065ff31 100644 --- a/include/grub/ieee1275/alloc.h +++ b/include/grub/ieee1275/alloc.h @@ -29,6 +29,7 @@ struct regions_claim_request { unsigned int flags; /* GRUB_MM_ADD_REGION_(NONE|CONSECUTIVE) */ grub_uint32_t total; /* number of requested bytes */ bool init_region; /* whether to add memory to the heap using grub_mm_init_region() */ + grub_uint64_t addr; /* result address */ }; #endif /* GRUB_IEEE1275_ALLOC_HEADER */