int     (*fadump_register)(struct fw_dump *fadump_conf);
        int     (*fadump_unregister)(struct fw_dump *fadump_conf);
        int     (*fadump_invalidate)(struct fw_dump *fadump_conf);
+       void    (*fadump_cleanup)(struct fw_dump *fadump_conf);
        int     (*fadump_process)(struct fw_dump *fadump_conf);
        void    (*fadump_region_show)(struct fw_dump *fadump_conf,
                                      struct seq_file *m);
 
 
 void fadump_cleanup(void)
 {
+       if (!fw_dump.fadump_supported)
+               return;
+
        /* Invalidate the registration only if dump is active. */
        if (fw_dump.dump_active) {
                pr_debug("Invalidating firmware-assisted dump registration\n");
                fw_dump.ops->fadump_unregister(&fw_dump);
                free_crash_memory_ranges();
        }
+
+       if (fw_dump.ops->fadump_cleanup)
+               fw_dump.ops->fadump_cleanup(&fw_dump);
 }
 
 static void fadump_free_reserved_memory(unsigned long start_pfn,
 
        return -EIO;
 }
 
+static void opal_fadump_cleanup(struct fw_dump *fadump_conf)
+{
+       s64 ret;
+
+       ret = opal_mpipl_register_tag(OPAL_MPIPL_TAG_KERNEL, 0);
+       if (ret != OPAL_SUCCESS)
+               pr_warn("Could not reset (%llu) kernel metadata tag!\n", ret);
+}
+
 static int __init opal_fadump_process(struct fw_dump *fadump_conf)
 {
        return -EINVAL;
        .fadump_register                = opal_fadump_register,
        .fadump_unregister              = opal_fadump_unregister,
        .fadump_invalidate              = opal_fadump_invalidate,
+       .fadump_cleanup                 = opal_fadump_cleanup,
        .fadump_process                 = opal_fadump_process,
        .fadump_region_show             = opal_fadump_region_show,
        .fadump_trigger                 = opal_fadump_trigger,