On 02/21/13 12:57, David Vrabel wrote:
The series adds support for the new hypercall ABI which should be
provided by Xen 4.3. Images are loaded into Xen directly with no
kernel involvement.
Do not apply until the hypervisor side patches are applied to Xen.
Patch 1 is unrelated but kexec wouldn't work for me without it. Not
sure why I had problems, perhaps a toolstack specific issue?
Patch 2 makes libxc 4.3 mandatory for Xen support.
Patch 3 removes a use of /proc/iomem in favour of libxc.
Patch 4 adds the support for loading an image into Xen.
This series explicitly drops support for older version of libxc/Xen as
supporting kexec on these hypervisors requires kernel support that
will never be available upstream.
David
_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xen.org/xen-devel
I did not find a fix/change to get_xen_vmcoreinfo() to call on
xc_kexec_get_range(xc, KEXEC_RANGE_MA_VMCOREINFO, ...
I found the following to work.
-Don Slutz
From 2cabc018d7613b0d2ac487cbf2a2e9438a441a8d Mon Sep 17 00:00:00 2001
From: Don Slutz <[email protected]>
Date: Fri, 22 Feb 2013 22:27:03 -0500
Subject: [PATCH 1/2] Switch to use xc_kexec_get_range for
get_xen_vmcoreinfo.
Signed-off-by: Don Slutz <[email protected]>
---
kexec/crashdump-xen.c | 20 ++++++++++++++++++++
kexec/crashdump.c | 2 ++
2 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/kexec/crashdump-xen.c b/kexec/crashdump-xen.c
index 56b0653..8179b72 100644
--- a/kexec/crashdump-xen.c
+++ b/kexec/crashdump-xen.c
@@ -161,6 +161,26 @@ unsigned long xen_architecture(struct
crash_elf_info *elf_info)
}
#ifdef HAVE_LIBXENCTRL
+int get_xen_vmcoreinfo(uint64_t *addr, uint64_t *len)
+{
+ xc_interface *xc;
+ int ret = 0;
+
+ xc = xc_interface_open(NULL, NULL, 0);
+ if ( !xc ) {
+ fprintf(stderr, "failed to open xen control interface.\n");
+ return -1;
+ }
+
+ ret = xc_kexec_get_range(xc, KEXEC_RANGE_MA_VMCOREINFO, 0, len,
addr);
+
+ xc_interface_close(xc);
+
+ if (ret < 0)
+ return -1;
+ return 0;
+}
+
int xen_get_nr_phys_cpus(void)
{
xc_interface *xc;
diff --git a/kexec/crashdump.c b/kexec/crashdump.c
index 847d080..3d2c1b9 100644
--- a/kexec/crashdump.c
+++ b/kexec/crashdump.c
@@ -142,7 +142,9 @@ int get_kernel_vmcoreinfo(uint64_t *addr, uint64_t *len)
return get_vmcoreinfo("/sys/kernel/vmcoreinfo", addr, len);
}
+#ifndef HAVE_LIBXENCTRL
int get_xen_vmcoreinfo(uint64_t *addr, uint64_t *len)
{
return get_vmcoreinfo("/sys/hypervisor/vmcoreinfo", addr, len);
}
+#endif
--
1.7.1
_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec