* [PATCH] automatic dump when guest linux on HVM domain panics
@ 2008-02-12 19:40 Tetsu Yamamoto
0 siblings, 0 replies; only message in thread
From: Tetsu Yamamoto @ 2008-02-12 19:40 UTC (permalink / raw)
To: xen-devel
[-- Attachment #1: Type: text/plain, Size: 618 bytes --]
Hi,
Attached patch adds a function to automatically dump core file when
guest linux on HVM domain panics, in the same way as PV domain.
I tested this patch with kernel 2.6.9 and 2.6.18 on both of x86 and ia64
(to buid for ia64, some patches in the ia64 tree are needed) by the
following steps, and confirmed it works well:
1. Build xen-platform-pci.ko.
2. In /etc/xen/xend-config.sxp, set (enable-dump yes).
3. On guest linux, execute insmod:
# insmod xen-platform-pci.ko
4. When guest linux panics, a core file is dumped.
Regards,
Tetsu Yamamoto
Signed-off-by: Tetsu Yamamoto <yamamoto.tetsu@jp.fujitsu.com>
[-- Attachment #2: panic-handler.patch --]
[-- Type: text/plain, Size: 3051 bytes --]
diff -r 2a3111016f88 unmodified_drivers/linux-2.6/platform-pci/Kbuild
--- a/unmodified_drivers/linux-2.6/platform-pci/Kbuild Mon Feb 11 15:59:49 2008 +0000
+++ b/unmodified_drivers/linux-2.6/platform-pci/Kbuild Tue Feb 12 16:26:08 2008 +0900
@@ -7,6 +7,7 @@ xen-platform-pci-objs := evtchn.o platfo
xen-platform-pci-objs := evtchn.o platform-pci.o gnttab.o xen_support.o
xen-platform-pci-objs += features.o platform-compat.o
xen-platform-pci-objs += reboot.o machine_reboot.o
+xen-platform-pci-objs += panic-handler.o
xen-platform-pci-objs += ../xenbus/xenbus_comms.o
xen-platform-pci-objs += ../xenbus/xenbus_xs.o
diff -r 2a3111016f88 unmodified_drivers/linux-2.6/platform-pci/panic-handler.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/unmodified_drivers/linux-2.6/platform-pci/panic-handler.c Tue Feb 12 16:26:08 2008 +0900
@@ -0,0 +1,54 @@
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/notifier.h>
+#include <asm/hypervisor.h>
+
+MODULE_LICENSE("GPL");
+
+#ifdef __ia64__
+static void
+xen_panic_hypercall(struct unw_frame_info *info, void *arg)
+{
+ current->thread.ksp = (__u64)info->sw - 16;
+ HYPERVISOR_shutdown(SHUTDOWN_crash);
+ /* we're never actually going to get here... */
+}
+#endif
+
+static int
+xen_panic_event(struct notifier_block *this, unsigned long event, void *ptr)
+{
+#ifdef __ia64__
+ unw_init_running(xen_panic_hypercall, NULL);
+#else /* !__ia64__ */
+ HYPERVISOR_shutdown(SHUTDOWN_crash);
+#endif
+ /* we're never actually going to get here... */
+ return NOTIFY_DONE;
+}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)
+static struct notifier_block xen_panic_block = {
+ xen_panic_event, NULL, 0 /* try to go last */
+};
+#else
+static struct notifier_block xen_panic_block = {
+ .notifier_call= xen_panic_event,
+ .next= NULL,
+ .priority= 0/* try to go last */
+};
+#endif /*LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)*/
+
+static int __init setup_panic_event(void)
+{
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)
+ notifier_chain_register(&panic_notifier_list, &xen_panic_block);
+#else
+ atomic_notifier_chain_register(&panic_notifier_list, &xen_panic_block);
+#endif /*LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)*/
+ return 0;
+}
+
+int xen_panic_handler_init(void)
+{
+ return setup_panic_event();
+}
diff -r 2a3111016f88 unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
--- a/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c Mon Feb 11 15:59:49 2008 +0000
+++ b/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c Tue Feb 12 16:26:08 2008 +0900
@@ -249,6 +249,7 @@ int xen_irq_init(struct pci_dev *pdev);
int xen_irq_init(struct pci_dev *pdev);
int xenbus_init(void);
int xen_reboot_init(void);
+int xen_panic_handler_init(void);
int gnttab_init(void);
static int __devinit platform_pci_init(struct pci_dev *pdev,
@@ -317,6 +318,9 @@ static int __devinit platform_pci_init(s
if ((ret = xen_reboot_init()))
goto out;
+ if ((ret = xen_panic_handler_init()))
+ goto out;
+
out:
if (ret) {
release_mem_region(mmio_addr, mmio_len);
[-- Attachment #3: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2008-02-12 19:40 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-02-12 19:40 [PATCH] automatic dump when guest linux on HVM domain panics Tetsu Yamamoto
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.