Remove dependency of vl.c to KVM, then we can partially revert b33612d03540fda7fa67485f1c20395beb7a2bf0.
Signed-off-by: Blue Swirl <blauwir...@gmail.com> --- Makefile.objs | 2 +- Makefile.target | 2 +- arch_init.c | 20 ++++++++++++++++++++ arch_init.h | 2 ++ vl.c | 14 ++------------ 5 files changed, 26 insertions(+), 14 deletions(-) diff --git a/Makefile.objs b/Makefile.objs index 74d7a3d..4cc8ea6 100644 --- a/Makefile.objs +++ b/Makefile.objs @@ -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 diff --git a/Makefile.target b/Makefile.target index 167fc8d..2aa02f5 100644 --- a/Makefile.target +++ b/Makefile.target @@ -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 diff --git a/arch_init.c b/arch_init.c index cfc03ea..001c560 100644 --- a/arch_init.c +++ b/arch_init.c @@ -41,6 +41,8 @@ #include "gdbstub.h" #include "hw/smbios.h" +int kvm_allowed = 0; + #ifdef TARGET_SPARC int graphic_width = 1024; int graphic_height = 768; @@ -508,3 +510,21 @@ int xen_available(void) return 0; #endif } + +void enable_kvm(void) +{ + kvm_allowed = 1; +} + +void kvm_maybe_init(int smp_cpus) +{ + if (kvm_enabled()) { + int ret; + + ret = kvm_init(smp_cpus); + if (ret < 0) { + fprintf(stderr, "failed to initialize KVM\n"); + exit(1); + } + } +} diff --git a/arch_init.h b/arch_init.h index 682890c..dde4309 100644 --- a/arch_init.h +++ b/arch_init.h @@ -29,5 +29,7 @@ void cpudef_init(void); int audio_available(void); int kvm_available(void); int xen_available(void); +void enable_kvm(void); +void kvm_maybe_init(int smp_cpus); #endif diff --git a/vl.c b/vl.c index 03fccbf..cc214dd 100644 --- a/vl.c +++ b/vl.c @@ -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; @@ -3228,7 +3226,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(); break; case QEMU_OPTION_usb: usb_enabled = 1; @@ -3574,15 +3572,7 @@ 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); - } - } + kvm_maybe_init(smp_cpus); if (qemu_init_main_loop()) { fprintf(stderr, "qemu_init_main_loop failed\n"); -- 1.6.2.4