summaryrefslogtreecommitdiff
path: root/kexec/arch/i386/kexec-x86-common.c
diff options
context:
space:
mode:
authorDavid Vrabel <david.vrabel@citrix.com>2013-11-06 14:55:19 +0000
committerSimon Horman <horms@verge.net.au>2013-11-19 10:20:45 +0900
commit76b4aca8850b8d438fa9bfec96cad522bdabfc2c (patch)
tree6f20da58388b4ca68476001133a4f9397364226c /kexec/arch/i386/kexec-x86-common.c
parent75efb890f9033302d9bf27bace6268850c8a7371 (diff)
kexec/xen: require libxc from Xen 4.4
libxc from Xen 4.4 added xc_kexec_load() which will be required to load images into Xen in the future. Remove all the #ifdef'ery for older versions of libxc. 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/arch/i386/kexec-x86-common.c')
-rw-r--r--kexec/arch/i386/kexec-x86-common.c103
1 files changed, 0 insertions, 103 deletions
diff --git a/kexec/arch/i386/kexec-x86-common.c b/kexec/arch/i386/kexec-x86-common.c
index ed6c950..bf58f53 100644
--- a/kexec/arch/i386/kexec-x86-common.c
+++ b/kexec/arch/i386/kexec-x86-common.c
@@ -40,15 +40,7 @@
#include "kexec-x86.h"
#ifdef HAVE_LIBXENCTRL
-#ifdef HAVE_XC_GET_MACHINE_MEMORY_MAP
#include <xenctrl.h>
-#else
-#define __XEN_TOOLS__ 1
-#include <x86/x86-linux.h>
-#include <xen/xen.h>
-#include <xen/memory.h>
-#include <xen/sys/privcmd.h>
-#endif /* HAVE_XC_GET_MACHINE_MEMORY_MAP */
#endif /* HAVE_LIBXENCTRL */
static struct memory_range memory_range[MAX_MEMORY_RANGES];
@@ -173,33 +165,19 @@ unsigned xen_e820_to_kexec_type(uint32_t type)
*
* @return 0 on success, any other value on failure.
*/
-#ifdef HAVE_XC_GET_MACHINE_MEMORY_MAP
static int get_memory_ranges_xen(struct memory_range **range, int *ranges)
{
int rc, ret = -1;
struct e820entry e820entries[MAX_MEMORY_RANGES];
unsigned int i;
-#ifdef XENCTRL_HAS_XC_INTERFACE
xc_interface *xc;
-#else
- int xc;
-#endif
-#ifdef XENCTRL_HAS_XC_INTERFACE
xc = xc_interface_open(NULL, NULL, 0);
if (!xc) {
fprintf(stderr, "%s: Failed to open Xen control interface\n", __func__);
goto err;
}
-#else
- xc = xc_interface_open();
-
- if (xc == -1) {
- fprintf(stderr, "%s: Failed to open Xen control interface\n", __func__);
- goto err;
- }
-#endif
rc = xc_get_machine_memory_map(xc, e820entries, MAX_MEMORY_RANGES);
@@ -229,87 +207,6 @@ err:
#else
static int get_memory_ranges_xen(struct memory_range **range, int *ranges)
{
- int fd, rc, ret = -1;
- privcmd_hypercall_t hypercall;
- struct e820entry *e820entries = NULL;
- struct xen_memory_map *xen_memory_map = NULL;
- unsigned int i;
-
- fd = open("/proc/xen/privcmd", O_RDWR);
-
- if (fd == -1) {
- fprintf(stderr, "%s: open(/proc/xen/privcmd): %m\n", __func__);
- goto err;
- }
-
- rc = posix_memalign((void **)&e820entries, sysconf(_SC_PAGESIZE),
- sizeof(struct e820entry) * MAX_MEMORY_RANGES);
-
- if (rc) {
- fprintf(stderr, "%s: posix_memalign(e820entries): %s\n", __func__, strerror(rc));
- e820entries = NULL;
- goto err;
- }
-
- rc = posix_memalign((void **)&xen_memory_map, sysconf(_SC_PAGESIZE),
- sizeof(struct xen_memory_map));
-
- if (rc) {
- fprintf(stderr, "%s: posix_memalign(xen_memory_map): %s\n", __func__, strerror(rc));
- xen_memory_map = NULL;
- goto err;
- }
-
- if (mlock(e820entries, sizeof(struct e820entry) * MAX_MEMORY_RANGES) == -1) {
- fprintf(stderr, "%s: mlock(e820entries): %m\n", __func__);
- goto err;
- }
-
- if (mlock(xen_memory_map, sizeof(struct xen_memory_map)) == -1) {
- fprintf(stderr, "%s: mlock(xen_memory_map): %m\n", __func__);
- goto err;
- }
-
- xen_memory_map->nr_entries = MAX_MEMORY_RANGES;
- set_xen_guest_handle(xen_memory_map->buffer, e820entries);
-
- hypercall.op = __HYPERVISOR_memory_op;
- hypercall.arg[0] = XENMEM_machine_memory_map;
- hypercall.arg[1] = (__u64)xen_memory_map;
-
- rc = ioctl(fd, IOCTL_PRIVCMD_HYPERCALL, &hypercall);
-
- if (rc == -1) {
- fprintf(stderr, "%s: ioctl(IOCTL_PRIVCMD_HYPERCALL): %m\n", __func__);
- goto err;
- }
-
- for (i = 0; i < xen_memory_map->nr_entries; ++i) {
- memory_range[i].start = e820entries[i].addr;
- memory_range[i].end = e820entries[i].addr + e820entries[i].size;
- memory_range[i].type = xen_e820_to_kexec_type(e820entries[i].type);
- }
-
- qsort(memory_range, xen_memory_map->nr_entries, sizeof(struct memory_range), compare_ranges);
-
- *range = memory_range;
- *ranges = xen_memory_map->nr_entries;
-
- ret = 0;
-
-err:
- munlock(xen_memory_map, sizeof(struct xen_memory_map));
- munlock(e820entries, sizeof(struct e820entry) * MAX_MEMORY_RANGES);
- free(xen_memory_map);
- free(e820entries);
- close(fd);
-
- return ret;
-}
-#endif /* HAVE_XC_GET_MACHINE_MEMORY_MAP */
-#else
-static int get_memory_ranges_xen(struct memory_range **range, int *ranges)
-{
return 0;
}
#endif /* HAVE_LIBXENCTRL */