All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefan Berger <stefanb@linux.ibm.com>
To: grub-devel@gnu.org
Cc: dkiper@net-space.pl, hbathini@linux.ibm.com, pavrampu@in.ibm.com,
	mpe@ellerman.id.au, cpscherr@us.ibm.com, mahesh@linux.ibm.com,
	sourabhjain@linux.ibm.com, avnish.chouhan@ibm.com,
	Stefan Berger <stefanb@linux.ibm.com>,
	Daniel Kiper <daniel.kiper@oracle.com>
Subject: [PATCH v4 04/10] kern/ieee1275/init: ppc64: Add support for alignment requirements
Date: Fri, 10 Nov 2023 11:09:47 -0500	[thread overview]
Message-ID: <20231110160953.3918186-5-stefanb@linux.ibm.com> (raw)
In-Reply-To: <20231110160953.3918186-1-stefanb@linux.ibm.com>

Add support for memory alignment requirements and adjust a candidate
address to it before checking whether the block is large enough. This
must be done in this order since the alignment adjustment can make a
block smaller than what was requested.

None of the current callers has memory alignment requirements but the
ieee1275 loader for kernel and initrd will use it to convey them.

Signed-off-by: stefan Berger <stefanb@linux.ibm.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
Cc: Hari Bathini <hbathini@linux.ibm.com>
Cc: Pavithra Prakash <pavrampu@in.ibm.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Carolyn Scherrer <cpscherr@us.ibm.com>
Cc: Mahesh Salgaonkar <mahesh@linux.ibm.com>
Cc: Sourabh Jain <sourabhjain@linux.ibm.com>
---
 grub-core/kern/ieee1275/init.c        | 14 ++++++++++++++
 include/grub/powerpc/ieee1275/alloc.h |  1 +
 2 files changed, 15 insertions(+)

diff --git a/grub-core/kern/ieee1275/init.c b/grub-core/kern/ieee1275/init.c
index 6d5fb573a..d71d4b682 100644
--- a/grub-core/kern/ieee1275/init.c
+++ b/grub-core/kern/ieee1275/init.c
@@ -502,6 +502,20 @@ regions_claim (grub_uint64_t addr, grub_uint64_t len, grub_memory_type_t type,
             }
         }
     }
+
+  /* Honor alignment restrictions on candidate addr */
+  if (rcr->align)
+    {
+      grub_uint64_t align_addr = ALIGN_UP (addr, rcr->align);
+      grub_uint64_t d = align_addr - addr;
+
+      if (d > len)
+        return 0;
+
+      len -= d;
+      addr = align_addr;
+    }
+
   if (rcr->flags & GRUB_MM_ADD_REGION_CONSECUTIVE && len < rcr->total)
     return 0;
 
diff --git a/include/grub/powerpc/ieee1275/alloc.h b/include/grub/powerpc/ieee1275/alloc.h
index 9aaea4d46..9258eded1 100644
--- a/include/grub/powerpc/ieee1275/alloc.h
+++ b/include/grub/powerpc/ieee1275/alloc.h
@@ -29,6 +29,7 @@ struct regions_claim_request {
   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 */
+  grub_size_t align;      /* alignment restrictions */
 };
 
 #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

  parent reply	other threads:[~2023-11-10 16:11 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-10 16:09 [PATCH v4 00/10] ppc64: Restrict memory allocations for kernel and initrd Stefan Berger
2023-11-10 16:09 ` [PATCH v4 01/10] kern/ieee1275/init: ppc64: Introduce a request for regions_claim Stefan Berger
2023-11-10 16:09 ` [PATCH v4 02/10] kern/ieee1275/init: ppc64: Decide by request whether to initialize region Stefan Berger
2023-11-10 16:09 ` [PATCH v4 03/10] kern/ieee1275/init: ppc64: Return allocated address using context Stefan Berger
2023-11-10 16:09 ` Stefan Berger [this message]
2023-11-10 16:09 ` [PATCH v4 05/10] kern/ieee1275/init: ppc64: Rename regions_claim to grub_regions_claim Stefan Berger
2023-11-10 16:09 ` [PATCH v4 06/10] kern/ieee1275/cmain: ppc64: Introduce flags to identify Power VM and KVM Stefan Berger
2023-11-13  5:58   ` Michael Ellerman
2023-11-13 23:26     ` Stefan Berger
2023-11-10 16:09 ` [PATCH v4 07/10] loader/powerpc/ieee1275: Use new allocation function for kernel and initrd Stefan Berger
2023-11-10 16:09 ` [PATCH v4 08/10] kern/ieee1275/ieee1275: debug: Display successful memory claims Stefan Berger
2023-11-10 16:09 ` [PATCH v4 09/10] kern/ieee1275/init: ppc64: Fix a comment Stefan Berger
2023-11-10 16:09 ` [PATCH v4 10/10] kern/ieee1275/init: ppc64: Display upper_mem_limit for debugging Stefan Berger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231110160953.3918186-5-stefanb@linux.ibm.com \
    --to=stefanb@linux.ibm.com \
    --cc=avnish.chouhan@ibm.com \
    --cc=cpscherr@us.ibm.com \
    --cc=daniel.kiper@oracle.com \
    --cc=dkiper@net-space.pl \
    --cc=grub-devel@gnu.org \
    --cc=hbathini@linux.ibm.com \
    --cc=mahesh@linux.ibm.com \
    --cc=mpe@ellerman.id.au \
    --cc=pavrampu@in.ibm.com \
    --cc=sourabhjain@linux.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.