diff mbox series

[02/16] lmb: add a flag to allow suppressing memory map change notification

Message ID 20240905082811.1585467-3-sughosh.ganu@linaro.org
State New
Headers show
Series Make EFI memory allocations synchronous with LMB | expand

Commit Message

Sughosh Ganu Sept. 5, 2024, 8:27 a.m. UTC
Add a flag LMB_NONOTIFY that can be passed to the LMB API's for
reserving memory. This will then result in no notification being sent
from the LMB module for the changes to the LMB's memory map.

Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org>
---
 include/lmb.h | 1 +
 lib/lmb.c     | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

Comments

Heinrich Schuchardt Sept. 14, 2024, 2:44 p.m. UTC | #1
On 9/5/24 10:27, Sughosh Ganu wrote:
> Add a flag LMB_NONOTIFY that can be passed to the LMB API's for
> reserving memory. This will then result in no notification being sent
> from the LMB module for the changes to the LMB's memory map.

You seem to be using this in patch 3 and 7.

Please, describe in this patch why you want to be able to suppress
notification.

In the EFI context we should use LMB notification to notify the
EFI_EVENT_GROUP_MEMORY_MAP_CHANGE event.

See chapter 7.1.2 EFI_BOOT_SERVICES.CreateEventEx() in the UEFI
specification.

Best regards

Heinrich

>
> Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org>
> ---
>   include/lmb.h | 1 +
>   lib/lmb.c     | 2 +-
>   2 files changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/include/lmb.h b/include/lmb.h
> index 45a06c3b99..ffba7e2889 100644
> --- a/include/lmb.h
> +++ b/include/lmb.h
> @@ -23,6 +23,7 @@ enum lmb_flags {
>   	LMB_NONE		= 0,
>   	LMB_NOMAP		= BIT(1),
>   	LMB_NOOVERWRITE		= BIT(2),
> +	LMB_NONOTIFY		= BIT(3),
>   };
>
>   /**
> diff --git a/lib/lmb.c b/lib/lmb.c
> index da6a1595cc..419b31a651 100644
> --- a/lib/lmb.c
> +++ b/lib/lmb.c
> @@ -30,7 +30,7 @@ static struct lmb lmb;
>   static void lmb_print_region_flags(enum lmb_flags flags)
>   {
>   	u64 bitpos;
> -	const char *flag_str[] = { "none", "no-map", "no-overwrite" };
> +	const char *flag_str[] = { "none", "no-map", "no-overwrite", "no-notify" };
>
>   	do {
>   		bitpos = flags ? fls(flags) - 1 : 0;
Sughosh Ganu Sept. 17, 2024, 11:54 a.m. UTC | #2
On Sat, 14 Sept 2024 at 20:14, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
>
> On 9/5/24 10:27, Sughosh Ganu wrote:
> > Add a flag LMB_NONOTIFY that can be passed to the LMB API's for
> > reserving memory. This will then result in no notification being sent
> > from the LMB module for the changes to the LMB's memory map.
>
> You seem to be using this in patch 3 and 7.
>
> Please, describe in this patch why you want to be able to suppress
> notification.

Will add the reasoning behind this flag in the commit message.

>
> In the EFI context we should use LMB notification to notify the
> EFI_EVENT_GROUP_MEMORY_MAP_CHANGE event.
>
> See chapter 7.1.2 EFI_BOOT_SERVICES.CreateEventEx() in the UEFI
> specification.

So, do you want me to use the EFI event signaling mechanism for this
purpose ? Is my understanding correct ? If so, this will mean that we
have an event notification specifically for EFI, and there might be
one needed for any other consumers of this event. Currently there
aren't any other consumers of the LMB memory map change event other
than EFI, but using the U-Boot's event notification mechanism means
that the same notification mechanism can be used if there were any
additional consumers of this event in the future. In that case, we
would have two separate event notifications, one for EFI, and one for
non-EFI consumers.

-sughosh

>
> Best regards
>
> Heinrich
>
> >
> > Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org>
> > ---
> >   include/lmb.h | 1 +
> >   lib/lmb.c     | 2 +-
> >   2 files changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/include/lmb.h b/include/lmb.h
> > index 45a06c3b99..ffba7e2889 100644
> > --- a/include/lmb.h
> > +++ b/include/lmb.h
> > @@ -23,6 +23,7 @@ enum lmb_flags {
> >       LMB_NONE                = 0,
> >       LMB_NOMAP               = BIT(1),
> >       LMB_NOOVERWRITE         = BIT(2),
> > +     LMB_NONOTIFY            = BIT(3),
> >   };
> >
> >   /**
> > diff --git a/lib/lmb.c b/lib/lmb.c
> > index da6a1595cc..419b31a651 100644
> > --- a/lib/lmb.c
> > +++ b/lib/lmb.c
> > @@ -30,7 +30,7 @@ static struct lmb lmb;
> >   static void lmb_print_region_flags(enum lmb_flags flags)
> >   {
> >       u64 bitpos;
> > -     const char *flag_str[] = { "none", "no-map", "no-overwrite" };
> > +     const char *flag_str[] = { "none", "no-map", "no-overwrite", "no-notify" };
> >
> >       do {
> >               bitpos = flags ? fls(flags) - 1 : 0;
>
diff mbox series

Patch

diff --git a/include/lmb.h b/include/lmb.h
index 45a06c3b99..ffba7e2889 100644
--- a/include/lmb.h
+++ b/include/lmb.h
@@ -23,6 +23,7 @@  enum lmb_flags {
 	LMB_NONE		= 0,
 	LMB_NOMAP		= BIT(1),
 	LMB_NOOVERWRITE		= BIT(2),
+	LMB_NONOTIFY		= BIT(3),
 };
 
 /**
diff --git a/lib/lmb.c b/lib/lmb.c
index da6a1595cc..419b31a651 100644
--- a/lib/lmb.c
+++ b/lib/lmb.c
@@ -30,7 +30,7 @@  static struct lmb lmb;
 static void lmb_print_region_flags(enum lmb_flags flags)
 {
 	u64 bitpos;
-	const char *flag_str[] = { "none", "no-map", "no-overwrite" };
+	const char *flag_str[] = { "none", "no-map", "no-overwrite", "no-notify" };
 
 	do {
 		bitpos = flags ? fls(flags) - 1 : 0;