Re: [PATCH v1] csky: use free_initmem_default() in free_initmem()

From: Mike Rapoport
Date: Tue Jan 26 2021 - 20:35:07 EST


On Tue, Jan 26, 2021 at 07:14:20PM +0100, David Hildenbrand wrote:
> The existing code is essentially
> free_initmem_default()->free_reserved_area() without poisoning.
>
> Note that existing code missed to update the managed page count of the
> zone.
>
> Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
> Cc: Guo Ren <guoren@xxxxxxxxxx>
> Cc: Mike Rapoport <rppt@xxxxxxxxxx>
> Cc: Oscar Salvador <osalvador@xxxxxxx>
> Cc: Michal Hocko <mhocko@xxxxxxxxxx>
> Cc: Wei Yang <richard.weiyang@xxxxxxxxxxxxxxxxx>
> Signed-off-by: David Hildenbrand <david@xxxxxxxxxx>
> ---
>
> Not compile tested as documentation on how to get
> https://gitlab.com/c-sky/buildroot
> running, especially with a custom kernel, is a bit sparse.

You can pick a cross-compiler from here:

https://mirrors.edge.kernel.org/pub/tools/crosstool/

> ---
> arch/csky/mm/init.c | 17 +----------------
> 1 file changed, 1 insertion(+), 16 deletions(-)
>
> diff --git a/arch/csky/mm/init.c b/arch/csky/mm/init.c
> index 81e4e5e78f38..894050a8ce09 100644
> --- a/arch/csky/mm/init.c
> +++ b/arch/csky/mm/init.c
> @@ -110,24 +110,9 @@ void __init mem_init(void)
> mem_init_print_info(NULL);
> }
>
> -extern char __init_begin[], __init_end[];
> -
> void free_initmem(void)
> {
> - unsigned long addr;
> -
> - addr = (unsigned long) &__init_begin;
> -
> - while (addr < (unsigned long) &__init_end) {
> - ClearPageReserved(virt_to_page(addr));
> - init_page_count(virt_to_page(addr));
> - free_page(addr);
> - totalram_pages_inc();
> - addr += PAGE_SIZE;
> - }
> -
> - pr_info("Freeing unused kernel memory: %dk freed\n",
> - ((unsigned int)&__init_end - (unsigned int)&__init_begin) >> 10);
> + free_initmem_default(-1);
> }
>
> void pgd_init(unsigned long *p)
> --
> 2.29.2
>

--
Sincerely yours,
Mike.