powerpc/fadump: use helper functions to reserve/release cpu notes buffer
authorHari Bathini <hbathini@linux.ibm.com>
Wed, 11 Sep 2019 14:47:56 +0000 (20:17 +0530)
committerMichael Ellerman <mpe@ellerman.id.au>
Fri, 13 Sep 2019 14:04:41 +0000 (00:04 +1000)
Use helper functions to simplify memory allocation, pinning down and
freeing the memory used for CPU notes buffer.

Signed-off-by: Hari Bathini <hbathini@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/156821323555.5656.2486038022572739622.stgit@hbathini.in.ibm.com
arch/powerpc/kernel/fadump.c

index eb0745e..994fc09 100644 (file)
@@ -786,33 +786,24 @@ void fadump_update_elfcore_header(char *bufp)
 
 static void *fadump_alloc_buffer(unsigned long size)
 {
-       void *vaddr;
+       unsigned long count, i;
        struct page *page;
-       unsigned long order, count, i;
+       void *vaddr;
 
-       order = get_order(size);
-       vaddr = (void *)__get_free_pages(GFP_KERNEL|__GFP_ZERO, order);
+       vaddr = alloc_pages_exact(size, GFP_KERNEL | __GFP_ZERO);
        if (!vaddr)
                return NULL;
 
-       count = 1 << order;
+       count = PAGE_ALIGN(size) / PAGE_SIZE;
        page = virt_to_page(vaddr);
        for (i = 0; i < count; i++)
-               SetPageReserved(page + i);
+               mark_page_reserved(page + i);
        return vaddr;
 }
 
 static void fadump_free_buffer(unsigned long vaddr, unsigned long size)
 {
-       struct page *page;
-       unsigned long order, count, i;
-
-       order = get_order(size);
-       count = 1 << order;
-       page = virt_to_page(vaddr);
-       for (i = 0; i < count; i++)
-               ClearPageReserved(page + i);
-       __free_pages(page, order);
+       free_reserved_area((void *)vaddr, (void *)(vaddr + size), -1, NULL);
 }
 
 s32 fadump_setup_cpu_notes_buf(u32 num_cpus)