From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:42078) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TUEXs-0001RO-5J for qemu-devel@nongnu.org; Fri, 02 Nov 2012 06:32:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TUEXn-00019U-VY for qemu-devel@nongnu.org; Fri, 02 Nov 2012 06:32:12 -0400 Received: from thoth.sbs.de ([192.35.17.2]:19701) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TUEXn-00019H-Le for qemu-devel@nongnu.org; Fri, 02 Nov 2012 06:32:07 -0400 Message-ID: <5093A124.30104@siemens.com> Date: Fri, 02 Nov 2012 11:32:04 +0100 From: Jan Kiszka MIME-Version: 1.0 References: <1351697456-16107-1-git-send-email-pbonzini@redhat.com> <1351697456-16107-16-git-send-email-pbonzini@redhat.com> <509375A5.8020000@web.de> <5093987B.7030201@redhat.com> In-Reply-To: <5093987B.7030201@redhat.com> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v2 15/39] vl: init main loop earlier List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini Cc: aliguori@us.ibm.com, qemu-devel@nongnu.org, stefanha@redhat.com On 2012-11-02 10:55, Paolo Bonzini wrote: > Il 02/11/2012 08:26, Jan Kiszka ha scritto: >> Can we move os_daemonize before that, or what are its dependencies? I >> have an increasingly bad feeling about this code shuffling. > > Moving os_daemonize too early ruins error messages. I would just > pull qemu_mutex_lock_iothread later, even just before cpu_exec_init_all. > Something like this (untested): > > diff --git a/main-loop.c b/main-loop.c > index e43c7c8..07c4b84 100644 > --- a/main-loop.c > +++ b/main-loop.c > @@ -125,7 +125,6 @@ int qemu_init_main_loop(void) > init_clocks(); > init_timer_alarm(); > > - qemu_mutex_lock_iothread(); > ret = qemu_signal_init(); > if (ret) { > return ret; > diff --git a/vl.c b/vl.c > index 99681da..210d525 100644 > --- a/vl.c > +++ b/vl.c > @@ -3631,13 +3631,6 @@ int main(int argc, char **argv, char **envp) > } > #endif > > - os_daemonize(); > - > - if (pid_file && qemu_create_pidfile(pid_file) != 0) { > - os_pidfile_error(); > - exit(1); > - } > - > /* init the memory */ > if (ram_size == 0) { > ram_size = DEFAULT_RAM_SIZE * 1024 * 1024; > @@ -3682,11 +3675,6 @@ int main(int argc, char **argv, char **envp) > > os_set_line_buffering(); > > -#ifdef CONFIG_SPICE > - /* spice needs the timers to be initialized by this point */ > - qemu_spice_init(); > -#endif > - > if (icount_option && (kvm_enabled() || xen_enabled())) { > fprintf(stderr, "-icount is not allowed with kvm or xen\n"); > exit(1); > @@ -3709,6 +3697,20 @@ int main(int argc, char **argv, char **envp) > } > } > > + os_daemonize(); > + > + if (pid_file && qemu_create_pidfile(pid_file) != 0) { > + os_pidfile_error(); > + exit(1); > + } > + > + qemu_mutex_lock_iothread(); > + > +#ifdef CONFIG_SPICE > + /* spice needs timers & threads to be initialized by this point */ > + qemu_spice_init(); > +#endif > + > cpu_exec_init_all(); > > bdrv_init_with_whitelist(); > Would have been too easy: # qemu-system-x86_64 -daemonize gettime: Invalid argument Internal timer error: aborting Haven't looked at details yet. Jan -- Siemens AG, Corporate Technology, CT RTC ITP SDP-DE Corporate Competence Center Embedded Linux