On Fri, Jul 11, 2008 at 10:37 PM, Joe Korty <[EMAIL PROTECTED]> wrote:
> On Fri, Jul 11, 2008 at 02:16:45AM -0400, jidong xiao wrote:
>> As I understand kexec/kdump code is arch dependent, but from your
>> patch there is no arch specific piece of code, please can you explain
>> this?
>>
>> Thanks
>> Jason Xiao
>
> Hi Jason,
> Well, kdump has a generic component as well a per-arch
> support components, so I guess if one is on an arch where
> the per-arch component is not present the the call to
> crash_kexec() will (hopefully) NOP.  However, I am not a
> user of kdump, and we are (so far) an x86-only shop, so the
> behavour of crash_kexec() on other arches is unknown to me.
>
> I've forwarded your letter to the author of the patch,
> perhaps he will be able to provide additional illumination.
>
> Regards,
> Joe

If I understand correctly, you are trying to add kexec/kdump
functionality into kdb. say, input "kdump" after the kdb prompt, then
kdump will begin to dump.

This is actually already implemented by Dan some time back, you can
refer to following link,
http://www.mail-archive.com/[email protected]/msg01358.html

With this patch you can drop into kdb and enter "kdump", below is the demo:

Jason login:

Entering kdb (task 0xffffffff802fcae0 pid 0) on cpu 0 due to Keyboard Entry

[0]kdb> kdump

Linux version 2.6.18-53.el5 ([EMAIL PROTECTED]) (gcc version 4.1.2 20070626
(Red Hat 4.1.2-14)) #1 SMP Sat Jan 19 21:31:58 EST 2008

Command line: root=/dev/sda12 console=ttyS0,9600 console=tty0  irqpoll
maxcpus=1 reset_devices=1 memmap=exactmap [EMAIL PROTECTED]
[EMAIL PROTECTED] [EMAIL PROTECTED] elfcorehdr=147440K
memmap=63K#340752K

BIOS-provided physical RAM map:

 BIOS-e820: 0000000000000100 - 00000000000a0000 (usable)

 BIOS-e820: 0000000000100000 - 00000000cffa8000 (usable)

 BIOS-e820: 00000000cffa8000 - 00000000cffb7c00 (ACPI data)

 BIOS-e820: 00000000cffb7c00 - 00000000d0000000 (reserved)

 BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved)

 BIOS-e820: 00000000fe000000 - 0000000100000000 (reserved)

 BIOS-e820: 0000000100000000 - 0000000230000000 (usable)
...
...


Though his patch is against x86_64, it's not difficult to port to
i386. I once tried this. But porting to ia64 is a little bit
complicated.

So I don't quite understand why you are modify the source code under
modules/ subdirectory.

Regards
Jason

>
>> On Fri, Jul 11, 2008 at 4:57 AM,  <[EMAIL PROTECTED]> wrote:
>> > Add kdump command to KDB.  This command triggers
>> > a dump of the kernel via the kexec/kdump mechanism.
>> >
>> > Author: Jim Houston <[EMAIL PROTECTED]>
>> > Signed-off-by: Joe Korty <[EMAIL PROTECTED]>
>> >
>> > Index: 2.6.26-rc9/kdb/modules/Makefile
>> > ===================================================================
>> > --- 2.6.26-rc9.orig/kdb/modules/Makefile        2008-07-10 
>> > 12:14:15.000000000 -0400
>> > +++ 2.6.26-rc9/kdb/modules/Makefile     2008-07-10 13:41:59.000000000 -0400
>> > @@ -6,7 +6,7 @@
>> >  # Copyright (c) 1999-2006 Silicon Graphics, Inc.  All Rights Reserved.
>> >  #
>> >
>> > -obj-$(CONFIG_KDB_MODULES) += kdbm_pg.o kdbm_task.o kdbm_vm.o kdbm_sched.o
>> > +obj-$(CONFIG_KDB_MODULES) += kdbm_pg.o kdbm_task.o kdbm_vm.o kdbm_sched.o 
>> > kdbm_kdump.o
>> >  obj-m += kdbm_debugtypes.o
>> >  ifdef CONFIG_X86
>> >  obj-$(CONFIG_KDB_MODULES) += kdbm_x86.o
>> > Index: 2.6.26-rc9/kdb/modules/kdbm_kdump.c
>> > ===================================================================
>> > --- /dev/null   1970-01-01 00:00:00.000000000 +0000
>> > +++ 2.6.26-rc9/kdb/modules/kdbm_kdump.c 2008-07-10 13:40:59.000000000 -0400
>> > @@ -0,0 +1,43 @@
>> > +/*
>> > + * This file is subject to the terms and conditions of the GNU General 
>> > Public
>> > + * License.  See the file "COPYING" in the main directory of this archive
>> > + * for more details.
>> > + *
>> > + * Copyright (c) 2006 Concurrent Computer Corp
>> > + */
>> > +
>> > +#include <linux/kdb.h>
>> > +#include <linux/kdbprivate.h>
>> > +#include <linux/module.h>
>> > +#include <linux/init.h>
>> > +#include <linux/irq.h>
>> > +#include <linux/sched.h>
>> > +#include <linux/kexec.h>
>> > +
>> > +
>> > +MODULE_AUTHOR("Concurrent Computer Corp");
>> > +MODULE_DESCRIPTION("interface to request kdump crash dump");
>> > +MODULE_LICENSE("GPL");
>> > +
>> > +static int
>> > +kdbm_kdump(int argc, const char **argv)
>> > +{
>> > +       kdb_printf("Calling crash_kexec\n");
>> > +       crash_kexec(get_irq_regs());
>> > +       kdb_printf("crash_kexec failed\n");
>> > +       return 0;
>> > +}
>> > +
>> > +static int __init kdbm_kdump_init(void)
>> > +{
>> > +       kdb_register("kdump",  kdbm_kdump, "", "request kdump crash dump", 
>> > 0);
>> > +       return 0;
>> > +}
>> > +
>> > +static void __exit kdbm_kdump_exit(void)
>> > +{
>> > +       kdb_unregister("kdump");
>> > +}
>> > +
>> > +module_init(kdbm_kdump_init)
>> > +module_exit(kdbm_kdump_exit)
>> > Index: 2.6.26-rc9/kernel/kexec.c
>> > ===================================================================
>> > --- 2.6.26-rc9.orig/kernel/kexec.c      2008-07-10 12:12:51.000000000 -0400
>> > +++ 2.6.26-rc9/kernel/kexec.c   2008-07-10 13:40:59.000000000 -0400
>> > @@ -19,6 +19,7 @@
>> >  #include <linux/reboot.h>
>> >  #include <linux/ioport.h>
>> >  #include <linux/hardirq.h>
>> > +#include <linux/module.h>
>> >  #include <linux/elf.h>
>> >  #include <linux/elfcore.h>
>> >  #include <linux/utsrelease.h>
>> > @@ -1077,6 +1078,7 @@
>> >                BUG_ON(!locked);
>> >        }
>> >  }
>> > +EXPORT_SYMBOL_GPL(crash_kexec);
>> >
>> >  static u32 *append_elf_note(u32 *buf, char *name, unsigned type, void 
>> > *data,
>> >                            size_t data_len)
>
---------------------------
Use http://oss.sgi.com/ecartis to modify your settings or to unsubscribe.

Reply via email to