When running on non-x86 systems there is no point building HVM support because we will never see such things. To achieve this we need to shuffle a little bit of the inline and other stubs about.
Signed-off-by: Alex Bennée alex.bennee@linaro.org --- include/sysemu/xen-mapcache.h | 2 +- include/sysemu/xen.h | 9 +++++---- accel/stubs/xen-all-stub.c | 11 +++++++++++ accel/stubs/xen-stub.c | 2 -- accel/stubs/meson.build | 3 ++- hw/i386/xen/meson.build | 2 +- 6 files changed, 20 insertions(+), 9 deletions(-) create mode 100644 accel/stubs/xen-all-stub.c
diff --git a/include/sysemu/xen-mapcache.h b/include/sysemu/xen-mapcache.h index c8e7c2f6cf..4bba764745 100644 --- a/include/sysemu/xen-mapcache.h +++ b/include/sysemu/xen-mapcache.h @@ -13,7 +13,7 @@
typedef hwaddr (*phys_offset_to_gaddr_t)(hwaddr phys_offset, ram_addr_t size); -#ifdef CONFIG_XEN +#ifdef CONFIG_XEN_HVM
void xen_map_cache_init(phys_offset_to_gaddr_t f, void *opaque); diff --git a/include/sysemu/xen.h b/include/sysemu/xen.h index 0ca25697e4..43d2314441 100644 --- a/include/sysemu/xen.h +++ b/include/sysemu/xen.h @@ -24,7 +24,7 @@ extern bool xen_allowed;
#define xen_enabled() (xen_allowed)
-#ifndef CONFIG_USER_ONLY +#ifdef CONFIG_XEN_HVM void xen_hvm_modified_memory(ram_addr_t start, ram_addr_t length); void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size, struct MemoryRegion *mr, Error **errp); @@ -33,7 +33,10 @@ void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size, #else /* !CONFIG_XEN_IS_POSSIBLE */
#define xen_enabled() 0 -#ifndef CONFIG_USER_ONLY + +#endif /* CONFIG_XEN_IS_POSSIBLE */ + +#if !defined(CONFIG_XEN_HVM) && !defined(CONFIG_USER_ONLY) static inline void xen_hvm_modified_memory(ram_addr_t start, ram_addr_t length) { /* nothing */ @@ -45,6 +48,4 @@ static inline void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size, } #endif
-#endif /* CONFIG_XEN_IS_POSSIBLE */ - #endif diff --git a/accel/stubs/xen-all-stub.c b/accel/stubs/xen-all-stub.c new file mode 100644 index 0000000000..597c5789cc --- /dev/null +++ b/accel/stubs/xen-all-stub.c @@ -0,0 +1,11 @@ +/* + * Copyright (C) 2014 Citrix Systems UK Ltd. + * + * This work is licensed under the terms of the GNU GPL, version 2 or later. + * See the COPYING file in the top-level directory. + */ + +#include "qemu/osdep.h" +#include "sysemu/xen.h" + +bool xen_allowed; diff --git a/accel/stubs/xen-stub.c b/accel/stubs/xen-stub.c index 7054965c48..6bc9906239 100644 --- a/accel/stubs/xen-stub.c +++ b/accel/stubs/xen-stub.c @@ -9,8 +9,6 @@ #include "sysemu/xen.h" #include "qapi/qapi-commands-migration.h"
-bool xen_allowed; - void qmp_xen_set_global_dirty_log(bool enable, Error **errp) { } diff --git a/accel/stubs/meson.build b/accel/stubs/meson.build index d65cb6a5e1..dca468c82a 100644 --- a/accel/stubs/meson.build +++ b/accel/stubs/meson.build @@ -1,7 +1,8 @@ softmmu_stub_ss = ss.source_set()
softmmu_stub_ss.add(when: 'CONFIG_HAX', if_false: files('hax-stub.c')) -softmmu_stub_ss.add(when: 'CONFIG_XEN', if_false: files('xen-stub.c')) +softmmu_stub_ss.add(when: 'CONFIG_XEN', if_false: files('xen-all-stub.c')) +softmmu_stub_ss.add(when: 'CONFIG_XEN_HVM', if_false: files('xen-stub.c')) softmmu_stub_ss.add(when: 'CONFIG_KVM', if_false: files('kvm-stub.c')) softmmu_stub_ss.add(when: 'CONFIG_TCG', if_false: files('tcg-stub.c'))
diff --git a/hw/i386/xen/meson.build b/hw/i386/xen/meson.build index be84130300..576e2cc5dc 100644 --- a/hw/i386/xen/meson.build +++ b/hw/i386/xen/meson.build @@ -1,4 +1,4 @@ -i386_ss.add(when: 'CONFIG_XEN', if_true: files( +i386_ss.add(when: 'CONFIG_XEN_HVM', if_true: files( 'xen-hvm.c', 'xen-mapcache.c', 'xen_apic.c',