On Fri, Sep 04, 2009 at 06:39:25PM -0300, Luiz Capitulino wrote: > > Sure, Marcelo. It's attached. > > > > I tested it, and it still does avoid the segfault. > > > > Luiz, could you re-test this patch on your side too? > > I'm getting rejections, are you sure it's against upstream? Its againts 0.11-stable branch. Try this against master: qemu-kvm segfaults on systems without access to /dev/kvm. The global kvm_allowed is being set too late in vl.c. This patch moves the kvm initialization a bit higher in the vl.c main, just after the daemonize fork. This fix is intended to be a short term solution, solving the segfaults. In the longer term, the suggested approach requires a bit more development and testing: * If no arg given => try kvm, try kqemu, try tcg * If --accelmode arg given => try $arg, and fail if unavailable Signed-off-by: Dustin Kirkland <kirkland@xxxxxxxxxxxxx> diff --git a/vl.c b/vl.c index 9f03d85..3485ce6 100644 --- a/vl.c +++ b/vl.c @@ -5823,6 +5823,20 @@ int main(int argc, char **argv, char **envp) signal(SIGTTIN, SIG_IGN); } + if (kvm_enabled()) { + int ret; + + ret = kvm_init(smp_cpus); + if (ret < 0) { +#if defined(KVM_UPSTREAM) || defined(NO_CPU_EMULATION) + fprintf(stderr, "failed to initialize KVM\n"); + exit(1); +#endif + fprintf(stderr, "Could not initialize KVM, will disable KVM support\n"); + kvm_allowed = 0; + } + } + if (pid_file && qemu_create_pidfile(pid_file) != 0) { if (daemonize) { uint8_t status = 1; @@ -5983,20 +5997,6 @@ int main(int argc, char **argv, char **envp) } } - if (kvm_enabled()) { - int ret; - - ret = kvm_init(smp_cpus); - if (ret < 0) { -#if defined(KVM_UPSTREAM) || defined(NO_CPU_EMULATION) - fprintf(stderr, "failed to initialize KVM\n"); - exit(1); -#endif - fprintf(stderr, "Could not initialize KVM, will disable KVM support\n"); - kvm_allowed = 0; - } - } - if (monitor_device) { monitor_hd = qemu_chr_open("monitor", monitor_device, NULL); if (!monitor_hd) { -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html