]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
powerpc/fadump: Warn before processing partial crashdump
authorHari Bathini <hbathini@linux.ibm.com>
Wed, 11 Sep 2019 14:52:32 +0000 (20:22 +0530)
committerMichael Ellerman <mpe@ellerman.id.au>
Fri, 13 Sep 2019 14:04:44 +0000 (00:04 +1000)
If all kernel boot memory regions are not registered for MPIPL before
system crashes, try processing the partial crashdump but warn the user
before proceeding.

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

index 5ace7c4d6bc168d5d441dcc538f79cd9c1a768d0..533adae545d8a07d8bc1ca6f651245e5b9919f2c 100644 (file)
@@ -69,6 +69,30 @@ static void opal_fadump_get_config(struct fw_dump *fadump_conf,
         */
        fadump_conf->reserve_dump_area_start = fdm->rgn[0].dest;
 
+       /*
+        * Rarely, but it can so happen that system crashes before all
+        * boot memory regions are registered for MPIPL. In such
+        * cases, warn that the vmcore may not be accurate and proceed
+        * anyway as that is the best bet considering free pages, cache
+        * pages, user pages, etc are usually filtered out.
+        *
+        * Hope the memory that could not be preserved only has pages
+        * that are usually filtered out while saving the vmcore.
+        */
+       if (fdm->region_cnt > fdm->registered_regions) {
+               pr_warn("Not all memory regions were saved!!!\n");
+               pr_warn("  Unsaved memory regions:\n");
+               i = fdm->registered_regions;
+               while (i < fdm->region_cnt) {
+                       pr_warn("\t[%03d] base: 0x%llx, size: 0x%llx\n",
+                               i, fdm->rgn[i].src, fdm->rgn[i].size);
+                       i++;
+               }
+
+               pr_warn("If the unsaved regions only contain pages that are filtered out (eg. free/user pages), the vmcore should still be usable.\n");
+               pr_warn("WARNING: If the unsaved regions contain kernel pages, the vmcore will be corrupted.\n");
+       }
+
        opal_fadump_update_config(fadump_conf, fdm);
 }