I have read about the kexec/kdump facilities, we know that crashed/panic'ed kernel is made available via /proc/vmcore.

I have heard people use kexec based booting to bypass EFI/BIOS/FW initialization stages to speed up their OS patching activities on production machines. This implies that those machines continue using the capture kernels for the rest of their processing/uptime.

I could not find a clear mention of capture kernel's ability to reclaim the old memory areas that have been preserved for taking a kdump. Can the capture kernel discard those preserved memory contents after the dump has been saved?

It's true that the capture kernel would be running from a "non-standard" memory location due to it being a "relocatable" kernel, but can it utilize/free up all other memory and continue to be used as the main kernel for production uses?


There is a big difference between a standard kexec kernel and the panic kernel.

A "normal" kexec kernel will receive the complete physical memory map from the old kernel (e.g. E820 map on x86 machines, or device tree on IBM POWER), so it initializes all its memory management structures for the whole RAM.

On the other hand, the panic kernel will get a modified map, which only includes the area reserved with crashkernel= parameter in the first kernel. The original kernel's RAM map is passed separately in ELF core headers (cf. elfcorehdr= kernel parameter), and the panic kernel can access it only via the /proc/vmcore special file.

Theoretically, the remaining RAM could be hot-plugged at some point, but this is not implemented and AFAIK nobody is even working on making it happen.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.