From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NxQnU-0008Mo-Lw for qemu-devel@nongnu.org; Thu, 01 Apr 2010 16:15:24 -0400 Received: from [140.186.70.92] (port=42060 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NxQnT-0008Lo-6r for qemu-devel@nongnu.org; Thu, 01 Apr 2010 16:15:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1NxQnR-0003jW-B4 for qemu-devel@nongnu.org; Thu, 01 Apr 2010 16:15:23 -0400 Received: from mail-pz0-f180.google.com ([209.85.222.180]:52408) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1NxQnR-0003jO-3w for qemu-devel@nongnu.org; Thu, 01 Apr 2010 16:15:21 -0400 Received: by pzk10 with SMTP id 10so1511147pzk.28 for ; Thu, 01 Apr 2010 13:15:19 -0700 (PDT) Message-ID: <4BB4FED5.2080508@codemonkey.ws> Date: Thu, 01 Apr 2010 15:15:17 -0500 From: Anthony Liguori MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH 1/2] Move KVM init to arch_init.c, compile vl.c once References: In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Blue Swirl Cc: qemu-devel 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 > --- > 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"); >