[PATCH v6 22/36] powernv/fadump: handle invalidation of crashdump and re-registraion
Hari Bathini
hbathini at linux.ibm.com
Thu Sep 12 00:53:28 AEST 2019
Make OPAL call to indicate that the dump is processed and the metadata
area in OPAL can be cleared/released. Also, setup/initialize FADump
for re-registration.
Signed-off-by: Hari Bathini <hbathini at linux.ibm.com>
---
* No major changes in v6.
arch/powerpc/kernel/fadump.c | 8 +++++++-
arch/powerpc/platforms/powernv/opal-fadump.c | 12 +++++++++++-
2 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/arch/powerpc/kernel/fadump.c b/arch/powerpc/kernel/fadump.c
index aab9b4d..852ac47 100644
--- a/arch/powerpc/kernel/fadump.c
+++ b/arch/powerpc/kernel/fadump.c
@@ -1063,7 +1063,13 @@ static void fadump_invalidate_release_mem(void)
fadump_release_memory(fw_dump.boot_memory_size, memblock_end_of_DRAM());
fadump_free_cpu_notes_buf();
- /* Initialize the kernel dump memory structure for FAD registration. */
+ /*
+ * Setup kernel metadata and initialize the kernel dump
+ * memory structure for FADump re-registration.
+ */
+ if (fw_dump.ops->fadump_setup_metadata &&
+ (fw_dump.ops->fadump_setup_metadata(&fw_dump) < 0))
+ pr_warn("Failed to setup kernel metadata!\n");
fw_dump.ops->fadump_init_mem_struct(&fw_dump);
}
diff --git a/arch/powerpc/platforms/powernv/opal-fadump.c b/arch/powerpc/platforms/powernv/opal-fadump.c
index 533adae..ef6fb1f 100644
--- a/arch/powerpc/platforms/powernv/opal-fadump.c
+++ b/arch/powerpc/platforms/powernv/opal-fadump.c
@@ -254,7 +254,17 @@ static int opal_fadump_unregister(struct fw_dump *fadump_conf)
static int opal_fadump_invalidate(struct fw_dump *fadump_conf)
{
- return -EIO;
+ s64 rc;
+
+ rc = opal_mpipl_update(OPAL_MPIPL_FREE_PRESERVED_MEMORY, 0, 0, 0);
+ if (rc) {
+ pr_err("Failed to invalidate - unexpected Error(%lld).\n", rc);
+ return -EIO;
+ }
+
+ fadump_conf->dump_active = 0;
+ opal_fdm_active = NULL;
+ return 0;
}
static void opal_fadump_cleanup(struct fw_dump *fadump_conf)
More information about the Linuxppc-dev
mailing list