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 |
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?
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 >
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. >
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.
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 --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
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(+)