All of lore.kernel.org
 help / color / mirror / Atom feed
From: Takenori Nagano <t-nagano@ah.jp.nec.com>
To: linux-kernel@vger.kernel.org, Andrew Morton <akpm@linux-foundation.org>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>,
	k-miyoshi@cb.jp.nec.com, greg@kroah.com, bwalle@suse.de,
	kdb@oss.sgi.com, kexec@lists.infradead.org,
	Randy Dunlap <rdunlap@xenotime.net>,
	"Eric W. Biederman" <ebiederm@xmission.com>,
	Keith Owens <kaos@ocs.com.au>,
	vgoyal@redhat.com
Subject: [PATCH 3/3] Move crash_kexec() into panic_notifier, take4
Date: Wed, 23 Apr 2008 20:12:07 +0900	[thread overview]
Message-ID: <480F1987.9010501@ah.jp.nec.com> (raw)
In-Reply-To: <480DD85C.7060200@ah.jp.nec.com>

[-- Attachment #1: Type: text/plain, Size: 4297 bytes --]

This patch moves crash_kexec() into panic_notifier. If you want to use it,
you have to set config option DUMP_ON_PANIC_NOTIFIER to Y. Its default value
is N. If you set DUMP_ON_PANIC_NOTIFIER to N, kdump has no difference before.

Thanks,

---

Signed-off-by: Takenori Nagano <t-nagano@ah.jp.nec.com>

---
diff -uprN linux-2.6.25.orig/arch/ia64/Kconfig linux-2.6.25/arch/ia64/Kconfig
--- linux-2.6.25.orig/arch/ia64/Kconfig	2008-04-22 20:34:42.567581801 +0900
+++ linux-2.6.25/arch/ia64/Kconfig	2008-04-22 18:54:05.168734196 +0900
@@ -541,6 +541,14 @@ config CRASH_DUMP
 	  help
 	    Generate crash dump after being started by kexec.
 
+config DUMP_ON_PANIC_NOTIFIER
+	bool "Call crash dump function from panic notifier"
+	depends on CRASH_DUMP
+	default n
+	help
+	  Say Y here to be able to call crash dump function from panic_notifier.
+	  It makes a chance to do something before taking crash dump.
+
 source "drivers/firmware/Kconfig"
 
 source "fs/Kconfig.binfmt"
diff -uprN linux-2.6.25.orig/arch/powerpc/Kconfig linux-2.6.25/arch/powerpc/Kconfig
--- linux-2.6.25.orig/arch/powerpc/Kconfig	2008-04-22 20:34:43.115578199 +0900
+++ linux-2.6.25/arch/powerpc/Kconfig	2008-04-22 18:51:03.085855052 +0900
@@ -304,6 +304,14 @@ config CRASH_DUMP
 
 	  Don't change this unless you know what you are doing.
 
+config DUMP_ON_PANIC_NOTIFIER
+	bool "Call crash dump function from panic notifier (EXPERIMENTAL)"
+	depends on CRASH_DUMP
+	default n
+	help
+	  Say Y here to be able to call crash dump function from panic_notifier.
+	  It makes a chance to do something before taking crash dump.
+
 config PHYP_DUMP
 	bool "Hypervisor-assisted dump (EXPERIMENTAL)"
 	depends on PPC_PSERIES && EXPERIMENTAL
diff -uprN linux-2.6.25.orig/arch/sh/Kconfig linux-2.6.25/arch/sh/Kconfig
--- linux-2.6.25.orig/arch/sh/Kconfig	2008-04-22 20:34:44.167571856 +0900
+++ linux-2.6.25/arch/sh/Kconfig	2008-04-22 18:53:51.152813154 +0900
@@ -695,6 +695,14 @@ config CRASH_DUMP
 
 	  For more details see Documentation/kdump/kdump.txt
 
+config DUMP_ON_PANIC_NOTIFIER
+	bool "Call crash dump function from panic notifier"
+	depends on CRASH_DUMP
+	default n
+	help
+	  Say Y here to be able to call crash dump function from panic_notifier.
+	  It makes a chance to do something before taking crash dump.
+
 config SMP
 	bool "Symmetric multi-processing support"
 	depends on SYS_SUPPORTS_SMP
diff -uprN linux-2.6.25.orig/arch/x86/Kconfig linux-2.6.25/arch/x86/Kconfig
--- linux-2.6.25.orig/arch/x86/Kconfig	2008-04-22 20:34:44.367570179 +0900
+++ linux-2.6.25/arch/x86/Kconfig	2008-04-22 18:55:42.372136199 +0900
@@ -1159,6 +1159,14 @@ config CRASH_DUMP
 	  (CONFIG_RELOCATABLE=y).
 	  For more details see Documentation/kdump/kdump.txt
 
+config DUMP_ON_PANIC_NOTIFIER
+	bool "Call crash dump function from panic notifier"
+	depends on CRASH_DUMP
+	default n
+	help
+	  Say Y here to be able to call crash dump function from panic_notifier.
+	  It makes a chance to do something before taking crash dump.
+
 config PHYSICAL_START
 	hex "Physical address where the kernel is loaded" if (EMBEDDED || CRASH_DUMP)
 	default "0x1000000" if X86_NUMAQ
diff -uprN linux-2.6.25.orig/kernel/kexec.c linux-2.6.25/kernel/kexec.c
--- linux-2.6.25.orig/kernel/kexec.c	2008-04-22 20:35:03.099455119 +0900
+++ linux-2.6.25/kernel/kexec.c	2008-04-22 20:54:37.324228945 +0900
@@ -1133,6 +1133,25 @@ void crash_save_cpu(struct pt_regs *regs
 	final_note(buf);
 }
 
+#ifdef CONFIG_DUMP_ON_PANIC_NOTIFIER
+static int panic_kexec(struct notifier_block *nb, unsigned long e, void *ptr)
+{
+	crash_kexec(NULL);
+
+	return NOTIFY_DONE;
+}
+
+static struct notifier_block panic_block_base = {
+	.notifier_call	= panic_kexec,
+	.next		= NULL,
+	.priority	= INT_MAX
+};
+
+static struct tunable_atomic_notifier_block panic_block = {
+	.nb		= &panic_block_base,
+};
+#endif
+
 static int __init crash_notes_memory_init(void)
 {
 	/* Allocate memory for saving cpu registers. */
@@ -1142,6 +1161,11 @@ static int __init crash_notes_memory_ini
 		" states failed\n");
 		return -ENOMEM;
 	}
+#ifdef CONFIG_DUMP_ON_PANIC_NOTIFIER
+	tunable_atomic_notifier_chain_register(&panic_notifier_list,
+					       &panic_block,
+		"kdump", "Generate crash dump after being started by kexec.");
+#endif
 	return 0;
 }
 module_init(crash_notes_memory_init)



[-- Attachment #2: Type: text/plain, Size: 143 bytes --]

_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

WARNING: multiple messages have this Message-ID (diff)
From: Takenori Nagano <t-nagano@ah.jp.nec.com>
To: linux-kernel@vger.kernel.org, Andrew Morton <akpm@linux-foundation.org>
Cc: kdb@oss.sgi.com, vgoyal@redhat.com,
	"Eric W. Biederman" <ebiederm@xmission.com>,
	kexec@lists.infradead.org, Keith Owens <kaos@ocs.com.au>,
	Nick Piggin <nickpiggin@yahoo.com.au>,
	Randy Dunlap <rdunlap@xenotime.net>,
	greg@kroah.com, bwalle@suse.de, k-miyoshi@cb.jp.nec.com
Subject: [PATCH 3/3] Move crash_kexec() into panic_notifier, take4
Date: Wed, 23 Apr 2008 20:12:07 +0900	[thread overview]
Message-ID: <480F1987.9010501@ah.jp.nec.com> (raw)
In-Reply-To: <480DD85C.7060200@ah.jp.nec.com>

This patch moves crash_kexec() into panic_notifier. If you want to use it,
you have to set config option DUMP_ON_PANIC_NOTIFIER to Y. Its default value
is N. If you set DUMP_ON_PANIC_NOTIFIER to N, kdump has no difference before.

Thanks,

---

Signed-off-by: Takenori Nagano <t-nagano@ah.jp.nec.com>

---
diff -uprN linux-2.6.25.orig/arch/ia64/Kconfig linux-2.6.25/arch/ia64/Kconfig
--- linux-2.6.25.orig/arch/ia64/Kconfig	2008-04-22 20:34:42.567581801 +0900
+++ linux-2.6.25/arch/ia64/Kconfig	2008-04-22 18:54:05.168734196 +0900
@@ -541,6 +541,14 @@ config CRASH_DUMP
 	  help
 	    Generate crash dump after being started by kexec.
 
+config DUMP_ON_PANIC_NOTIFIER
+	bool "Call crash dump function from panic notifier"
+	depends on CRASH_DUMP
+	default n
+	help
+	  Say Y here to be able to call crash dump function from panic_notifier.
+	  It makes a chance to do something before taking crash dump.
+
 source "drivers/firmware/Kconfig"
 
 source "fs/Kconfig.binfmt"
diff -uprN linux-2.6.25.orig/arch/powerpc/Kconfig linux-2.6.25/arch/powerpc/Kconfig
--- linux-2.6.25.orig/arch/powerpc/Kconfig	2008-04-22 20:34:43.115578199 +0900
+++ linux-2.6.25/arch/powerpc/Kconfig	2008-04-22 18:51:03.085855052 +0900
@@ -304,6 +304,14 @@ config CRASH_DUMP
 
 	  Don't change this unless you know what you are doing.
 
+config DUMP_ON_PANIC_NOTIFIER
+	bool "Call crash dump function from panic notifier (EXPERIMENTAL)"
+	depends on CRASH_DUMP
+	default n
+	help
+	  Say Y here to be able to call crash dump function from panic_notifier.
+	  It makes a chance to do something before taking crash dump.
+
 config PHYP_DUMP
 	bool "Hypervisor-assisted dump (EXPERIMENTAL)"
 	depends on PPC_PSERIES && EXPERIMENTAL
diff -uprN linux-2.6.25.orig/arch/sh/Kconfig linux-2.6.25/arch/sh/Kconfig
--- linux-2.6.25.orig/arch/sh/Kconfig	2008-04-22 20:34:44.167571856 +0900
+++ linux-2.6.25/arch/sh/Kconfig	2008-04-22 18:53:51.152813154 +0900
@@ -695,6 +695,14 @@ config CRASH_DUMP
 
 	  For more details see Documentation/kdump/kdump.txt
 
+config DUMP_ON_PANIC_NOTIFIER
+	bool "Call crash dump function from panic notifier"
+	depends on CRASH_DUMP
+	default n
+	help
+	  Say Y here to be able to call crash dump function from panic_notifier.
+	  It makes a chance to do something before taking crash dump.
+
 config SMP
 	bool "Symmetric multi-processing support"
 	depends on SYS_SUPPORTS_SMP
diff -uprN linux-2.6.25.orig/arch/x86/Kconfig linux-2.6.25/arch/x86/Kconfig
--- linux-2.6.25.orig/arch/x86/Kconfig	2008-04-22 20:34:44.367570179 +0900
+++ linux-2.6.25/arch/x86/Kconfig	2008-04-22 18:55:42.372136199 +0900
@@ -1159,6 +1159,14 @@ config CRASH_DUMP
 	  (CONFIG_RELOCATABLE=y).
 	  For more details see Documentation/kdump/kdump.txt
 
+config DUMP_ON_PANIC_NOTIFIER
+	bool "Call crash dump function from panic notifier"
+	depends on CRASH_DUMP
+	default n
+	help
+	  Say Y here to be able to call crash dump function from panic_notifier.
+	  It makes a chance to do something before taking crash dump.
+
 config PHYSICAL_START
 	hex "Physical address where the kernel is loaded" if (EMBEDDED || CRASH_DUMP)
 	default "0x1000000" if X86_NUMAQ
diff -uprN linux-2.6.25.orig/kernel/kexec.c linux-2.6.25/kernel/kexec.c
--- linux-2.6.25.orig/kernel/kexec.c	2008-04-22 20:35:03.099455119 +0900
+++ linux-2.6.25/kernel/kexec.c	2008-04-22 20:54:37.324228945 +0900
@@ -1133,6 +1133,25 @@ void crash_save_cpu(struct pt_regs *regs
 	final_note(buf);
 }
 
+#ifdef CONFIG_DUMP_ON_PANIC_NOTIFIER
+static int panic_kexec(struct notifier_block *nb, unsigned long e, void *ptr)
+{
+	crash_kexec(NULL);
+
+	return NOTIFY_DONE;
+}
+
+static struct notifier_block panic_block_base = {
+	.notifier_call	= panic_kexec,
+	.next		= NULL,
+	.priority	= INT_MAX
+};
+
+static struct tunable_atomic_notifier_block panic_block = {
+	.nb		= &panic_block_base,
+};
+#endif
+
 static int __init crash_notes_memory_init(void)
 {
 	/* Allocate memory for saving cpu registers. */
@@ -1142,6 +1161,11 @@ static int __init crash_notes_memory_ini
 		" states failed\n");
 		return -ENOMEM;
 	}
+#ifdef CONFIG_DUMP_ON_PANIC_NOTIFIER
+	tunable_atomic_notifier_chain_register(&panic_notifier_list,
+					       &panic_block,
+		"kdump", "Generate crash dump after being started by kexec.");
+#endif
 	return 0;
 }
 module_init(crash_notes_memory_init)


  parent reply	other threads:[~2008-04-23 11:12 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <480DD85C.7060200@ah.jp.nec.com>
2008-04-23 11:11 ` [PATCH 1/2] add tunable_notifier function ,take4 Takenori Nagano
2008-04-23 11:11   ` Takenori Nagano
2008-04-23 11:11 ` [PATCH 2/2] implement new notifier function to panic_notifier_list ,take4 Takenori Nagano
2008-04-23 11:11   ` Takenori Nagano
2008-04-23 11:13   ` Takenori Nagano
2008-04-23 11:13     ` Takenori Nagano
2008-04-23 11:12 ` Takenori Nagano [this message]
2008-04-23 11:12   ` [PATCH 3/3] Move crash_kexec() into panic_notifier, take4 Takenori Nagano
2008-04-23 12:11   ` Eric W. Biederman
2008-04-23 12:11     ` Eric W. Biederman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=480F1987.9010501@ah.jp.nec.com \
    --to=t-nagano@ah.jp.nec.com \
    --cc=akpm@linux-foundation.org \
    --cc=bwalle@suse.de \
    --cc=ebiederm@xmission.com \
    --cc=greg@kroah.com \
    --cc=k-miyoshi@cb.jp.nec.com \
    --cc=kaos@ocs.com.au \
    --cc=kdb@oss.sgi.com \
    --cc=kexec@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nickpiggin@yahoo.com.au \
    --cc=rdunlap@xenotime.net \
    --cc=vgoyal@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.