kexec_file_load() uses initial_boot_params in setting up the device tree
for the kernel to be loaded. Though initial_boot_params holds info about
CPUs at the time of boot, it doesn't account for hot added CPUs.
So, kexec'ing with kexec_file_load() syscall leaves the kexec'ed kernel
with inaccurate CPU info.
If kdump kernel is loaded with kexec_file_load() syscall and the system
crashes on a hot added CPU, the capture kernel hangs failing to identify
the boot CPU, with no output.
To avoid this from happening, extract current CPU info from of_root
device node and use it for setting up the fdt in kexec_file_load case.
Fixes:
|
||
|---|---|---|
| .. | ||
| core_32.c | ||
| core_64.c | ||
| core.c | ||
| crash.c | ||
| elf_64.c | ||
| file_load_64.c | ||
| file_load.c | ||
| Makefile | ||
| ranges.c | ||
| relocate_32.S | ||