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


Reply via email to