Let the regions_claim() request structure's init_region determine whether
to call grub_mm_init_region() on it. This allows for adding memory to
GRUB's memory heap if init_region is set to true, or direct usage of the
memory otherwise. Set all current callers' init_region to true since they
want to add memory regions to GRUB's heap.

Signed-off-by: Stefan Berger <stef...@linux.ibm.com>
Reviewed-by: Daniel Kiper <daniel.ki...@oracle.com>
Cc: Hari Bathini <hbath...@linux.ibm.com>
Cc: Pavithra Prakash <pavra...@in.ibm.com>
Cc: Michael Ellerman <m...@ellerman.id.au>
Cc: Carolyn Scherrer <cpsch...@us.ibm.com>
Cc: Mahesh Salgaonkar <mah...@linux.ibm.com>
Cc: Sourabh Jain <sourabhj...@linux.ibm.com>
---
 grub-core/kern/ieee1275/init.c        | 5 ++++-
 include/grub/powerpc/ieee1275/alloc.h | 3 +++
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/grub-core/kern/ieee1275/init.c b/grub-core/kern/ieee1275/init.c
index 061c28c98..217f25fae 100644
--- a/grub-core/kern/ieee1275/init.c
+++ b/grub-core/kern/ieee1275/init.c
@@ -515,7 +515,8 @@ regions_claim (grub_uint64_t addr, grub_uint64_t len, 
grub_memory_type_t type,
       err = grub_claimmap (addr, len);
       if (err)
        return err;
-      grub_mm_init_region ((void *) (grub_addr_t) addr, len);
+      if (rcr->init_region)
+          grub_mm_init_region ((void *) (grub_addr_t) addr, len);
       rcr->total -= len;
     }
 
@@ -534,6 +535,7 @@ heap_init (grub_uint64_t addr, grub_uint64_t len, 
grub_memory_type_t type,
   struct regions_claim_request rcr = {
     .flags = GRUB_MM_ADD_REGION_NONE,
     .total = *(grub_uint32_t *) data,
+    .init_region = true,
   };
   int ret;
 
@@ -551,6 +553,7 @@ region_claim (grub_uint64_t addr, grub_uint64_t len, 
grub_memory_type_t type,
   struct regions_claim_request rcr = {
     .flags = GRUB_MM_ADD_REGION_CONSECUTIVE,
     .total = *(grub_uint32_t *) data,
+    .init_region = true,
   };
   int ret;
 
diff --git a/include/grub/powerpc/ieee1275/alloc.h 
b/include/grub/powerpc/ieee1275/alloc.h
index fc45a51b2..dd7a847a5 100644
--- a/include/grub/powerpc/ieee1275/alloc.h
+++ b/include/grub/powerpc/ieee1275/alloc.h
@@ -20,11 +20,14 @@
 #ifndef GRUB_POWERPC_IEEE1275_ALLOC_HEADER
 #define GRUB_POWERPC_IEEE1275_ALLOC_HEADER     1
 
+#include <stdbool.h>
+
 #include <grub/memory.h>
 
 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() */
 };
 
 #endif /* GRUB_POWERPC_IEEE1275_ALLOC_HEADER */
-- 
2.25.1


_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to