diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index 40e4b3f128..cc98cc961b 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -3433,6 +3433,24 @@ bool kvm_arch_supports_vmfd_change(void) return true; } +static int xen_init(MachineState *ms, KVMState *s) +{ +#ifdef CONFIG_XEN_EMU + int ret = 0; + if (!object_dynamic_cast(OBJECT(ms), TYPE_PC_MACHINE)) { + error_report("kvm: Xen support only available in PC machine"); + return -ENOTSUP; + } + /* hyperv_enabled() doesn't work yet. */ + uint32_t msr = XEN_HYPERCALL_MSR; + ret = kvm_xen_init(s, msr); + return ret; +#else + error_report("kvm: Xen support not enabled in qemu"); + return -ENOTSUP; +#endif +} + int kvm_arch_init(MachineState *ms, KVMState *s) { int ret; @@ -3467,21 +3485,10 @@ int kvm_arch_init(MachineState *ms, KVMState *s) } if (s->xen_version) { -#ifdef CONFIG_XEN_EMU - if (!object_dynamic_cast(OBJECT(ms), TYPE_PC_MACHINE)) { - error_report("kvm: Xen support only available in PC machine"); - return -ENOTSUP; - } - /* hyperv_enabled() doesn't work yet. */ - uint32_t msr = XEN_HYPERCALL_MSR; - ret = kvm_xen_init(s, msr); + ret = xen_init(ms, s); if (ret < 0) { return ret; } -#else - error_report("kvm: Xen support not enabled in qemu"); - return -ENOTSUP; -#endif } ret = kvm_get_supported_msrs(s);