diff mbox series

[v2] memblock: export memblock_free() to free reserved memory.

Message ID 20240625121652.1189095-1-lgs156412@gmail.com (mailing list archive)
State New
Headers show
Series [v2] memblock: export memblock_free() to free reserved memory. | expand

Commit Message

liangxi Liu June 25, 2024, 12:16 p.m. UTC
On architectures that support the preservation of memblock metadata
after __init, allow drivers to call memblock_free() to free a
reservation configured in dts. This is a hack to support the
freeing of bootsplash reservations passed to Linux by the bootloader.

Signed-off-by: Guanshun Liu <lgs156412@gmail.com>
---
 mm/memblock.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Christoph Hellwig June 25, 2024, 3:53 p.m. UTC | #1
On Tue, Jun 25, 2024 at 08:16:52PM +0800, Guanshun Liu wrote:
> On architectures that support the preservation of memblock metadata
> after __init, allow drivers to call memblock_free() to free a
> reservation configured in dts. This is a hack to support the
> freeing of bootsplash reservations passed to Linux by the bootloader.

What driver?
Mike Rapoport June 26, 2024, 5:02 a.m. UTC | #2
On Tue, Jun 25, 2024 at 08:16:52PM +0800, Guanshun Liu wrote:
> On architectures that support the preservation of memblock metadata
> after __init, allow drivers to call memblock_free() to free a
> reservation configured in dts. This is a hack to support the

"This is a hack" implies that it's not a proper solution, right?

And anyway, memblock_free() will not actually free the memory after __init.

> freeing of bootsplash reservations passed to Linux by the bootloader.
> 
> Signed-off-by: Guanshun Liu <lgs156412@gmail.com>
> ---
>  mm/memblock.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/mm/memblock.c b/mm/memblock.c
> index 6d18485571b4..20e7f81fc076 100644
> --- a/mm/memblock.c
> +++ b/mm/memblock.c
> @@ -848,6 +848,9 @@ void __init_memblock memblock_free(void *ptr, size_t size)
>  	if (ptr)
>  		memblock_phys_free(__pa(ptr), size);
>  }
> +#ifdef CONFIG_ARCH_KEEP_MEMBLOCK
> +EXPORT_SYMBOL_GPL(memblock_free);
> +#endif
>  
>  /**
>   * memblock_phys_free - free boot memory block
> -- 
> 2.25.1
>
liangxi Liu July 1, 2024, 8:31 a.m. UTC | #3
Yes. we have a reserved memory used for display the image, which needs to
be deleted from memblock.reserved list(memblock_free
()) after display and then released into the buddy system(free_reserved_page
()). Should I use memblock_free() or another API?

On Wed, Jun 26, 2024 at 1:05 PM Mike Rapoport <rppt@kernel.org> wrote:

> On Tue, Jun 25, 2024 at 08:16:52PM +0800, Guanshun Liu wrote:
> > On architectures that support the preservation of memblock metadata
> > after __init, allow drivers to call memblock_free() to free a
> > reservation configured in dts. This is a hack to support the
>
> "This is a hack" implies that it's not a proper solution, right?
>
> And anyway, memblock_free() will not actually free the memory after __init.
>
> > freeing of bootsplash reservations passed to Linux by the bootloader.
> >
> > Signed-off-by: Guanshun Liu <lgs156412@gmail.com>
> > ---
> >  mm/memblock.c | 3 +++
> >  1 file changed, 3 insertions(+)
> >
> > diff --git a/mm/memblock.c b/mm/memblock.c
> > index 6d18485571b4..20e7f81fc076 100644
> > --- a/mm/memblock.c
> > +++ b/mm/memblock.c
> > @@ -848,6 +848,9 @@ void __init_memblock memblock_free(void *ptr, size_t
> size)
> >       if (ptr)
> >               memblock_phys_free(__pa(ptr), size);
> >  }
> > +#ifdef CONFIG_ARCH_KEEP_MEMBLOCK
> > +EXPORT_SYMBOL_GPL(memblock_free);
> > +#endif
> >
> >  /**
> >   * memblock_phys_free - free boot memory block
> > --
> > 2.25.1
> >
>
> --
> Sincerely yours,
> Mike.
>
liangxi Liu July 1, 2024, 8:46 a.m. UTC | #4
Yes. we have a reserved memory used for display the image, which needs
to be deleted from memblock.reserved list(memblock_free
()) after display and then released into the buddy system(free_reserved_page
()). Should I use memblock_free() or another API?


Mike Rapoport <rppt@kernel.org> 于2024年6月26日周三 13:05写道:
>
> On Tue, Jun 25, 2024 at 08:16:52PM +0800, Guanshun Liu wrote:
> > On architectures that support the preservation of memblock metadata
> > after __init, allow drivers to call memblock_free() to free a
> > reservation configured in dts. This is a hack to support the
>
> "This is a hack" implies that it's not a proper solution, right?
>
> And anyway, memblock_free() will not actually free the memory after __init.
>
> > freeing of bootsplash reservations passed to Linux by the bootloader.
> >
> > Signed-off-by: Guanshun Liu <lgs156412@gmail.com>
> > ---
> >  mm/memblock.c | 3 +++
> >  1 file changed, 3 insertions(+)
> >
> > diff --git a/mm/memblock.c b/mm/memblock.c
> > index 6d18485571b4..20e7f81fc076 100644
> > --- a/mm/memblock.c
> > +++ b/mm/memblock.c
> > @@ -848,6 +848,9 @@ void __init_memblock memblock_free(void *ptr, size_t size)
> >       if (ptr)
> >               memblock_phys_free(__pa(ptr), size);
> >  }
> > +#ifdef CONFIG_ARCH_KEEP_MEMBLOCK
> > +EXPORT_SYMBOL_GPL(memblock_free);
> > +#endif
> >
> >  /**
> >   * memblock_phys_free - free boot memory block
> > --
> > 2.25.1
> >
>
> --
> Sincerely yours,
> Mike.
liangxi Liu July 12, 2024, 8:04 a.m. UTC | #5
Yes. we have a reserved memory used for display the image, which needs
to be deleted from memblock.reserved list(memblock_free
()) after display and then released into the buddy system(free_reserved_page
()). Should I use memblock_free() or another API?

Mike Rapoport <rppt@kernel.org> 于2024年6月26日周三 13:05写道:
>
> On Tue, Jun 25, 2024 at 08:16:52PM +0800, Guanshun Liu wrote:
> > On architectures that support the preservation of memblock metadata
> > after __init, allow drivers to call memblock_free() to free a
> > reservation configured in dts. This is a hack to support the
>
> "This is a hack" implies that it's not a proper solution, right?
>
> And anyway, memblock_free() will not actually free the memory after __init.
>
> > freeing of bootsplash reservations passed to Linux by the bootloader.
> >
> > Signed-off-by: Guanshun Liu <lgs156412@gmail.com>
> > ---
> >  mm/memblock.c | 3 +++
> >  1 file changed, 3 insertions(+)
> >
> > diff --git a/mm/memblock.c b/mm/memblock.c
> > index 6d18485571b4..20e7f81fc076 100644
> > --- a/mm/memblock.c
> > +++ b/mm/memblock.c
> > @@ -848,6 +848,9 @@ void __init_memblock memblock_free(void *ptr, size_t size)
> >       if (ptr)
> >               memblock_phys_free(__pa(ptr), size);
> >  }
> > +#ifdef CONFIG_ARCH_KEEP_MEMBLOCK
> > +EXPORT_SYMBOL_GPL(memblock_free);
> > +#endif
> >
> >  /**
> >   * memblock_phys_free - free boot memory block
> > --
> > 2.25.1
> >
>
> --
> Sincerely yours,
> Mike.
diff mbox series

Patch

diff --git a/mm/memblock.c b/mm/memblock.c
index 6d18485571b4..20e7f81fc076 100644
--- a/mm/memblock.c
+++ b/mm/memblock.c
@@ -848,6 +848,9 @@  void __init_memblock memblock_free(void *ptr, size_t size)
 	if (ptr)
 		memblock_phys_free(__pa(ptr), size);
 }
+#ifdef CONFIG_ARCH_KEEP_MEMBLOCK
+EXPORT_SYMBOL_GPL(memblock_free);
+#endif
 
 /**
  * memblock_phys_free - free boot memory block