qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 1/2] Move KVM init to arch_init.c, compile vl.c


From: Anthony Liguori
Subject: Re: [Qemu-devel] [PATCH 1/2] Move KVM init to arch_init.c, compile vl.c once
Date: Thu, 01 Apr 2010 15:15:17 -0500
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.5) Gecko/20091209 Fedora/3.0-4.fc12 Lightning/1.0pre Thunderbird/3.0

On 04/01/2010 03:07 PM, Blue Swirl wrote:
Remove dependency of vl.c to KVM, then we can partially revert
b33612d03540fda7fa67485f1c20395beb7a2bf0.

Signed-off-by: Blue Swirl<address@hidden>
---
  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;
+}

Can we get away with keeping a local to vl.c use_kvm flag and then call kvm_init() if use_kvm in vl.c?

We can stick a stub kvm_init() in arch_init.c if !CONFIG_KVM.

Regards,

Anthony LIguori

+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");





reply via email to

[Prev in Thread] Current Thread [Next in Thread]