summaryrefslogtreecommitdiff
path: root/kexec
diff options
context:
space:
mode:
authorDon Slutz <Don@CloudSwitch.com>2013-11-06 14:55:21 +0000
committerSimon Horman <horms@verge.net.au>2013-11-19 10:20:51 +0900
commitccd6099112f38eab768d1ce481e9fe3000ba7fda (patch)
treecdcbf0d03b8e643c2a634b66e8bcb067c34360c4 /kexec
parent5d0187df434e2ede33b4c09d6c5510875a73856b (diff)
kexec/xen: switch to use xc_kexec_get_range for get_xen_vmcoreinfo.
Signed-off-by: Don Slutz <Don@CloudSwitch.com> Signed-off-by: David Vrabel <david.vrabel@citrix.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com> Signed-off-by: Simon Horman <horms@verge.net.au>
Diffstat (limited to 'kexec')
-rw-r--r--kexec/crashdump-xen.c25
-rw-r--r--kexec/crashdump.c5
2 files changed, 25 insertions, 5 deletions
diff --git a/kexec/crashdump-xen.c b/kexec/crashdump-xen.c
index 8185423..79b68e0 100644
--- a/kexec/crashdump-xen.c
+++ b/kexec/crashdump-xen.c
@@ -164,6 +164,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;
@@ -206,6 +226,11 @@ out:
return cpu;
}
#else
+int get_xen_vmcoreinfo(uint64_t *addr, uint64_t *len)
+{
+ return -1;
+}
+
int xen_get_nr_phys_cpus(void)
{
return -1;
diff --git a/kexec/crashdump.c b/kexec/crashdump.c
index 8d88fdf..131e624 100644
--- a/kexec/crashdump.c
+++ b/kexec/crashdump.c
@@ -157,8 +157,3 @@ int get_kernel_vmcoreinfo(uint64_t *addr, uint64_t *len)
{
return get_vmcoreinfo("/sys/kernel/vmcoreinfo", addr, len);
}
-
-int get_xen_vmcoreinfo(uint64_t *addr, uint64_t *len)
-{
- return get_vmcoreinfo("/sys/hypervisor/vmcoreinfo", addr, len);
-}