s390/kexec: fix update of os_info crash kernel size
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Tue, 31 May 2016 07:13:59 +0000 (09:13 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Mon, 13 Jun 2016 13:58:19 +0000 (15:58 +0200)
Implement an s390 version of the weak crash_free_reserved_phys_range
function. This allows us to update the size of the reserved crash
kernel memory if it will be resized.

This was previously done with a call to crash_unmap_reserved_pages
from crash_shrink_memory which was removed with ("s390/kexec:
consolidate crash_map/unmap_reserved_pages() and
arch_kexec_protect(unprotect)_crashkres()")

Fixes: 7a0058ec7860 ("s390/kexec: consolidate crash_map/unmap_reserved_pages() and arch_kexec_protect(unprotect)_crashkres()")
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/kernel/machine_kexec.c

index 0e64f08d3d694516fd7664a7c61933949222a476..078d38c054906b96e1fc7a56802de4f98c78c953 100644 (file)
@@ -150,6 +150,19 @@ static int kdump_csum_valid(struct kimage *image)
 
 #ifdef CONFIG_CRASH_DUMP
 
+void crash_free_reserved_phys_range(unsigned long begin, unsigned long end)
+{
+       unsigned long addr, size;
+
+       for (addr = begin; addr < end; addr += PAGE_SIZE)
+               free_reserved_page(pfn_to_page(addr >> PAGE_SHIFT));
+       size = begin - crashk_res.start;
+       if (size)
+               os_info_crashkernel_add(crashk_res.start, size);
+       else
+               os_info_crashkernel_add(0, 0);
+}
+
 /*
  * Map or unmap crashkernel memory
  */
@@ -161,13 +174,8 @@ static void crash_map_pages(int enable)
               size % KEXEC_CRASH_MEM_ALIGN);
        if (enable)
                vmem_add_mapping(crashk_res.start, size);
-       else {
+       else
                vmem_remove_mapping(crashk_res.start, size);
-               if (size)
-                       os_info_crashkernel_add(crashk_res.start, size);
-               else
-                       os_info_crashkernel_add(0, 0);
-       }
 }
 
 /*