diff mbox series

[04/16] event: add event to notify lmb memory map changes

Message ID 20240905082811.1585467-5-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 an event which would be used for notifying changes in the
LMB modules' memory map. This is to be used for having a
synchronous view of the memory that is currently in use, and that is
available for allocations.

Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org>
---
 common/event.c  |  2 ++
 include/event.h | 14 ++++++++++++++
 2 files changed, 16 insertions(+)

Comments

Heinrich Schuchardt Sept. 14, 2024, 3:08 p.m. UTC | #1
On 9/5/24 10:27, Sughosh Ganu wrote:
> Add an event which would be used for notifying changes in the
> LMB modules' memory map. This is to be used for having a
> synchronous view of the memory that is currently in use, and that is
> available for allocations.

The synchronous view problem only exists because we are duplicating
data. Store the EFI memory type in LMB and the problem vanishes.

The event is only needed to notify EFI_EVENT_GROUP_MEMORY_MAP_CHANGE.

Best regards

Heinrich

>
> Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org>
> ---
>   common/event.c  |  2 ++
>   include/event.h | 14 ++++++++++++++
>   2 files changed, 16 insertions(+)
>
> diff --git a/common/event.c b/common/event.c
> index dda569d447..fc8002603c 100644
> --- a/common/event.c
> +++ b/common/event.c
> @@ -48,6 +48,8 @@ const char *const type_name[] = {
>
>   	/* main loop events */
>   	"main_loop",
> +
> +	"lmb_map_update",
>   };
>
>   _Static_assert(ARRAY_SIZE(type_name) == EVT_COUNT, "event type_name size");
> diff --git a/include/event.h b/include/event.h
> index fb353ad623..fce7e96170 100644
> --- a/include/event.h
> +++ b/include/event.h
> @@ -153,6 +153,14 @@ enum event_t {
>   	 */
>   	EVT_MAIN_LOOP,
>
> +	/**
> +	 * @EVT_LMB_MAP_UPDATE:
> +	 * This event is triggered on an update to the LMB reserved memory
> +	 * region. This can be used to notify about any LMB memory allocation
> +	 * or freeing of memory having occurred.
> +	 */
> +	EVT_LMB_MAP_UPDATE,
> +
>   	/**
>   	 * @EVT_COUNT:
>   	 * This constants holds the maximum event number + 1 and is used when
> @@ -203,6 +211,12 @@ union event_data {
>   		oftree tree;
>   		struct bootm_headers *images;
>   	} ft_fixup;
> +
> +	struct event_lmb_map_update {
> +		u64 base;
> +		u64 size;
> +		u8 op;
> +	} lmb_map;
>   };
>
>   /**
Sughosh Ganu Sept. 17, 2024, 12:33 p.m. UTC | #2
On Sat, 14 Sept 2024 at 20:38, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
>
> On 9/5/24 10:27, Sughosh Ganu wrote:
> > Add an event which would be used for notifying changes in the
> > LMB modules' memory map. This is to be used for having a
> > synchronous view of the memory that is currently in use, and that is
> > available for allocations.
>
> The synchronous view problem only exists because we are duplicating
> data. Store the EFI memory type in LMB and the problem vanishes.

The LMB module only concerns itself with RAM memory. If I understand
correctly, you are proposing maintaining the EFI memory map within the
LMB module ? That would mean handling memory types other than
conventional memory in LMB.

-sughosh

>
> The event is only needed to notify EFI_EVENT_GROUP_MEMORY_MAP_CHANGE.
>
> Best regards
>
> Heinrich
>
> >
> > Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org>
> > ---
> >   common/event.c  |  2 ++
> >   include/event.h | 14 ++++++++++++++
> >   2 files changed, 16 insertions(+)
> >
> > diff --git a/common/event.c b/common/event.c
> > index dda569d447..fc8002603c 100644
> > --- a/common/event.c
> > +++ b/common/event.c
> > @@ -48,6 +48,8 @@ const char *const type_name[] = {
> >
> >       /* main loop events */
> >       "main_loop",
> > +
> > +     "lmb_map_update",
> >   };
> >
> >   _Static_assert(ARRAY_SIZE(type_name) == EVT_COUNT, "event type_name size");
> > diff --git a/include/event.h b/include/event.h
> > index fb353ad623..fce7e96170 100644
> > --- a/include/event.h
> > +++ b/include/event.h
> > @@ -153,6 +153,14 @@ enum event_t {
> >        */
> >       EVT_MAIN_LOOP,
> >
> > +     /**
> > +      * @EVT_LMB_MAP_UPDATE:
> > +      * This event is triggered on an update to the LMB reserved memory
> > +      * region. This can be used to notify about any LMB memory allocation
> > +      * or freeing of memory having occurred.
> > +      */
> > +     EVT_LMB_MAP_UPDATE,
> > +
> >       /**
> >        * @EVT_COUNT:
> >        * This constants holds the maximum event number + 1 and is used when
> > @@ -203,6 +211,12 @@ union event_data {
> >               oftree tree;
> >               struct bootm_headers *images;
> >       } ft_fixup;
> > +
> > +     struct event_lmb_map_update {
> > +             u64 base;
> > +             u64 size;
> > +             u8 op;
> > +     } lmb_map;
> >   };
> >
> >   /**
>
diff mbox series

Patch

diff --git a/common/event.c b/common/event.c
index dda569d447..fc8002603c 100644
--- a/common/event.c
+++ b/common/event.c
@@ -48,6 +48,8 @@  const char *const type_name[] = {
 
 	/* main loop events */
 	"main_loop",
+
+	"lmb_map_update",
 };
 
 _Static_assert(ARRAY_SIZE(type_name) == EVT_COUNT, "event type_name size");
diff --git a/include/event.h b/include/event.h
index fb353ad623..fce7e96170 100644
--- a/include/event.h
+++ b/include/event.h
@@ -153,6 +153,14 @@  enum event_t {
 	 */
 	EVT_MAIN_LOOP,
 
+	/**
+	 * @EVT_LMB_MAP_UPDATE:
+	 * This event is triggered on an update to the LMB reserved memory
+	 * region. This can be used to notify about any LMB memory allocation
+	 * or freeing of memory having occurred.
+	 */
+	EVT_LMB_MAP_UPDATE,
+
 	/**
 	 * @EVT_COUNT:
 	 * This constants holds the maximum event number + 1 and is used when
@@ -203,6 +211,12 @@  union event_data {
 		oftree tree;
 		struct bootm_headers *images;
 	} ft_fixup;
+
+	struct event_lmb_map_update {
+		u64 base;
+		u64 size;
+		u8 op;
+	} lmb_map;
 };
 
 /**