Re: [discuss] [patch 3/5] Use extended crashkernel command line on x86_64

Previous thread: [patch 2/5] Use extended crashkernel command line on i386 by Bernhard Walle on Sunday, September 9, 2007 - 1:39 am. (1 message)

Next thread: [patch 4/5] Use extended crashkernel command line on IA64 by Bernhard Walle on Sunday, September 9, 2007 - 1:39 am. (3 messages)
From: Bernhard Walle
Date: Sunday, September 9, 2007 - 1:39 am

This patch removes the crashkernel parsing from
arch/x86_64/kernel/machine_kexec.c and calls the generic function, introduced in
the last patch, in setup_bootmem_allocator().

This is necessary because the amount of System RAM must be known in this
function now because of the new syntax.


Signed-off-by: Bernhard Walle <bwalle@suse.de>


---
 arch/x86_64/kernel/e820.c          |    3 ++-
 arch/x86_64/kernel/machine_kexec.c |   27 ---------------------------
 arch/x86_64/kernel/setup.c         |   35 ++++++++++++++++++++++++++++-------
 3 files changed, 30 insertions(+), 35 deletions(-)

--- a/arch/x86_64/kernel/e820.c
+++ b/arch/x86_64/kernel/e820.c
@@ -226,7 +226,8 @@ void __init e820_reserve_resources(void)
 			request_resource(res, &code_resource);
 			request_resource(res, &data_resource);
 #ifdef CONFIG_KEXEC
-			request_resource(res, &crashk_res);
+			if (crashk_res.start != crashk_res.end)
+				request_resource(res, &crashk_res);
 #endif
 		}
 	}
--- a/arch/x86_64/kernel/machine_kexec.c
+++ b/arch/x86_64/kernel/machine_kexec.c
@@ -231,33 +231,6 @@ NORET_TYPE void machine_kexec(struct kim
 			image->start);
 }
 
-/* crashkernel=size@addr specifies the location to reserve for
- * a crash kernel.  By reserving this memory we guarantee
- * that linux never set's it up as a DMA target.
- * Useful for holding code to do something appropriate
- * after a kernel panic.
- */
-static int __init setup_crashkernel(char *arg)
-{
-	unsigned long size, base;
-	char *p;
-	if (!arg)
-		return -EINVAL;
-	size = memparse(arg, &p);
-	if (arg == p)
-		return -EINVAL;
-	if (*p == '@') {
-		base = memparse(p+1, &p);
-		/* FIXME: Do I want a sanity check to validate the
-		 * memory range?  Yes you do, but it's too early for
-		 * e820 -AK */
-		crashk_res.start = base;
-		crashk_res.end   = base + size - 1;
-	}
-	return 0;
-}
-early_param("crashkernel", setup_crashkernel);
-
 void arch_crash_save_vmcoreinfo(void)
 {
 #ifdef CONFIG_ARCH_DISCONTIGMEM_ENABLE
--- ...
From: Yinghai Lu
Date: Sunday, September 9, 2007 - 10:27 am

...

CONFIG_KEXEC or CONFIG_CRASH_DUMP?

YH
-

From: Bernhard Walle
Date: Sunday, September 9, 2007 - 11:52 am

Good question. The crashkernel parameter was CONFIG_KEXEC before, and
I also wondered why, but I didn't change this because maybe there's
some reason I don't know.

Vivek, do you know why this was CONFIG_KEXEC?


Thanks,
   Bernhard
-

From: Eric W. Biederman
Date: Sunday, September 9, 2007 - 2:06 pm

Probably because you use it in the primary kernel you use it.
The option reserves an area of memory for the kernel we switch
to on panic or another kernel crash.

Generally CONFIG_CRASH_DUMP seems to be about the options needed
to read out the crash dump after the fact.

Eric
-

From: Vivek Goyal
Date: Monday, September 10, 2007 - 10:14 pm

Bernhard,

As Eric mentioned, CONFIG_CRASH_DUMP has been used for all dump capturing
infrastructure and rest of the kexec and kexec on panic functionality
has been put under CONFIG_KEXEC. 

Keeping memory reservation under CONFIG_KEXEC helps in a sense when
somebody is not using a relocatable kernel and uses a custom kernel for dump
capture. In that case he does not have to enable CONFIG_CRASH_DUMP in the
first kernel.

Thanks
Vivek
-

From: Bernhard Walle
Date: Tuesday, September 11, 2007 - 3:01 am

Yes, you all are right ... sorry for the noise ;)


Thanks,
   Bernhard
-

Previous thread: [patch 2/5] Use extended crashkernel command line on i386 by Bernhard Walle on Sunday, September 9, 2007 - 1:39 am. (1 message)

Next thread: [patch 4/5] Use extended crashkernel command line on IA64 by Bernhard Walle on Sunday, September 9, 2007 - 1:39 am. (3 messages)