[PATCH] kexec: check if memory is reserved only when loading kdump kernel.

WANG Chao chaowang at redhat.com
Tue May 14 06:32:50 EDT 2013

When memory for crashkernel isn't reserved, it's confusing that kexec
spits error message for unloading kdump kernel as if we were loading it:

  # kexec -p -u
  Memory for crashkernel is not reserved
  Please reserve memory by passing "crashkernel=X at Y" parameter to the kernel
  Then try loading kdump kernel
  # echo $?

It's more appropriate to test if memory is reserved only when
loading kdump kernel. With this patch:

  # kexec -p -u
  # echo $?

It's also the same behavior with the case of trying to unload kernel
from unloaded state.

Signed-off-by: WANG Chao <chaowang at redhat.com>
 kexec/kexec.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/kexec/kexec.c b/kexec/kexec.c
index 911c0f6..6a13f79 100644
--- a/kexec/kexec.c
+++ b/kexec/kexec.c
@@ -1175,7 +1175,8 @@ int main(int argc, char *argv[])
-	if ((kexec_flags & KEXEC_ON_CRASH) && !is_crashkernel_mem_reserved()) {
+	if (do_load && (kexec_flags & KEXEC_ON_CRASH) &&
+	    !is_crashkernel_mem_reserved()) {
 		die("Memory for crashkernel is not reserved\n"
 		    "Please reserve memory by passing"
 		    "\"crashkernel=X at Y\" parameter to kernel\n"

More information about the kexec mailing list