Mahesh J Salgaonkar [off-list ref] writes:
From: Mahesh Salgaonkar <redacted>
There are chances that multiple CPUs can call crash_fadump() simultaneously
and would start duplicating same info to vmcoreinfo ELF note section. This
causes makedumpfile to fail during kdump capture. One example is,
triggering dumprestart from HMC which sends system reset to all the CPUs at
once.
...
quoted hunk ↗ jump to hunk
diff --git a/arch/powerpc/kernel/fadump.c b/arch/powerpc/kernel/fadump.c
index b3a6633..2ed9d1c 100644
--- a/arch/powerpc/kernel/fadump.c
+++ b/arch/powerpc/kernel/fadump.c
@@ -402,8 +402,14 @@ void crash_fadump(struct pt_regs *regs, const char *str)
{
struct fadump_crash_info_header *fdh = NULL;
- if (!fw_dump.dump_registered || !fw_dump.fadumphdr_addr)
+ mutex_lock(&fadump_mutex);
What happens when a crashing CPU can't get the mutex and goes to sleep?
cheers