@@ -128,7 +128,7 @@ user-obj-y += cutils.o cache-utils.o
# libhw
hw-obj-y =
-hw-obj-y += loader.o
+hw-obj-y += vl.o loader.o
hw-obj-y += virtio.o virtio-console.o
hw-obj-y += fw_cfg.o pci.o pci_host.o pcie_host.o
hw-obj-y += watchdog.o
@@ -161,7 +161,7 @@ endif #CONFIG_BSD_USER
# System emulator target
ifdef CONFIG_SOFTMMU
-obj-y = arch_init.o cpus.o monitor.o machine.o gdbstub.o vl.o
+obj-y = arch_init.o cpus.o monitor.o machine.o gdbstub.o
# virtio has to be here due to weird dependency between PCI and virtio-net.
# need to fix this properly
obj-y += virtio-blk.o virtio-balloon.o virtio-net.o virtio-pci.o
virtio-serial-bus.o
@@ -508,3 +508,8 @@ int xen_available(void)
return 0;
#endif
}
+
+int kvm_maybe_init(int smp_cpus)
+{
+ return kvm_init(smp_cpus);
+}
@@ -29,5 +29,6 @@ void cpudef_init(void);
int audio_available(void);
int kvm_available(void);
int xen_available(void);
+int kvm_maybe_init(int smp_cpus);
#endif
@@ -51,6 +51,8 @@ typedef struct KVMSlot
typedef struct kvm_dirty_log KVMDirtyLog;
+int kvm_allowed = 0;
+
struct KVMState
{
KVMSlot slots[32];
@@ -670,6 +672,7 @@ int kvm_init(int smp_cpus)
kvm_state = s;
cpu_register_phys_memory_client(&kvm_cpu_phys_memory_client);
+ kvm_allowed = 1;
return 0;
@@ -34,7 +34,15 @@ struct kvm_run;
/* external API */
+#ifdef CONFIG_KVM
int kvm_init(int smp_cpus);
+#else
+static inline
+int kvm_init(int smp_cpus)
+{
+ return -ENOSYS;
+}
+#endif
#ifdef NEED_CPU_H
int kvm_init_vcpu(CPUState *env);
@@ -145,7 +145,6 @@ int main(int argc, char **argv)
#include "dma.h"
#include "audio/audio.h"
#include "migration.h"
-#include "kvm.h"
#include "balloon.h"
#include "qemu-option.h"
#include "qemu-config.h"
@@ -241,7 +240,6 @@ uint8_t qemu_uuid[16];
static QEMUBootSetHandler *boot_set_handler;
static void *boot_set_opaque;
-int kvm_allowed = 0;
uint32_t xen_domid;
enum xen_mode xen_mode = XEN_EMULATE;
@@ -2649,6 +2647,7 @@ int main(int argc, char **argv, char **envp)
#endif
int show_vnc_port = 0;
int defconfig = 1;
+ int enable_kvm = 0;
error_set_progname(argv[0]);
@@ -3239,7 +3238,7 @@ int main(int argc, char **argv, char **envp)
printf("Option %s not supported for this
target\n", popt->name);
exit(1);
}
- kvm_allowed = 1;
+ enable_kvm = 1;
break;
case QEMU_OPTION_usb:
Remove dependency of vl.c to KVM, then we can partially revert b33612d03540fda7fa67485f1c20395beb7a2bf0. Signed-off-by: Blue Swirl <blauwirbel@gmail.com> --- Makefile.objs | 2 +- Makefile.target | 2 +- arch_init.c | 5 +++++ arch_init.h | 1 + kvm-all.c | 3 +++ kvm.h | 8 ++++++++ vl.c | 16 +++++----------- 7 files changed, 24 insertions(+), 13 deletions(-) usb_enabled = 1; @@ -3585,14 +3584,9 @@ int main(int argc, char **argv, char **envp) exit(1); } - if (kvm_enabled()) { - int ret; - - ret = kvm_init(smp_cpus); - if (ret < 0) { - fprintf(stderr, "failed to initialize KVM\n"); - exit(1); - } + if (enable_kvm && kvm_maybe_init(smp_cpus) < 0) { + fprintf(stderr, "failed to initialize KVM\n"); + exit(1); } if (qemu_init_main_loop()) {