From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47040) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UyiLg-00064i-1H for qemu-devel@nongnu.org; Mon, 15 Jul 2013 08:57:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UyiLd-0005DQ-UL for qemu-devel@nongnu.org; Mon, 15 Jul 2013 08:57:51 -0400 Received: from goliath.siemens.de ([192.35.17.28]:19777) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UyiLd-0005Cb-BN for qemu-devel@nongnu.org; Mon, 15 Jul 2013 08:57:49 -0400 Message-ID: <51E3F1C5.6030602@siemens.com> Date: Mon, 15 Jul 2013 14:57:41 +0200 From: Jan Kiszka MIME-Version: 1.0 References: <1373027986-17868-1-git-send-email-stefanha@redhat.com> <51D7079A.2000907@siemens.com> <51E3EEDA.4080501@redhat.com> In-Reply-To: <51E3EEDA.4080501@redhat.com> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 0/3] qemu-timer: make QEMUTimer functions thread-safe List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini Cc: "alex@alex.org.uk" , Anthony Liguori , "qemu-devel@nongnu.org" , Stefan Hajnoczi , "rth@twiddle.net" On 2013-07-15 14:45, Paolo Bonzini wrote: > Il 05/07/2013 19:51, Jan Kiszka ha scritto: >> On 2013-07-05 14:39, Stefan Hajnoczi wrote: >>> This series makes the following functions thread-safe: >>> >>> qemu_mod_timer_ns() >>> qemu_mod_timer() >>> qemu_del_timer() >>> qemu_timer_pending() >>> >>> The following were already thread-safe: >>> >>> qemu_free_timer() >>> qemu_new_timer() >>> qemu_timer_expired() >>> >>> Now it is possible to use QEMUTimer outside the QEMU global mutex. Timer >>> callbacks are still invoked from the main loop. If a thread wishes to run >>> timer callbacks it must use a thread-safe QEMUBH (which Ping Fan Liu is working >>> on). >> >> What do you mean with this? We need main-loop independent timers for any >> task that depends on timely alarm delivery. Do your patches keep this in >> mind as well? > > These are orthogonal issues. Stefan's usecase does not need timely > delivery. Not necessarily. Timely delivery is likely the harder requirement that also fulfills the need to move timer setup/manipulation outside of BQL. I didn't have time to look into details yet, but there is a risk that this rework will not help to achieve RT qualities but rather needs another, non-orthogonal rework. > >>> Note that host_clock is not thread-safe because it keeps state and invokes >>> reset notifiers. Device emulation threads mostly care about vm_clock, so this >>> is not a problem. >> >> I suppose you know that vm_clock cannot be read outside BQL yet due to >> timers_state and, under TCG, icount. Any ideas regarding this already? I >> didn't have to solve that problem so far as I only need CLOCK_REALTIME >> outside BQL. > > I was thinking of a seqlock. It should be quite cheap, since there > would be hardly any contention. Will think about this as well. > > No ideas about host_clock's notifiers. Hmm, we should be able to push the notification into BH context over the main thread. Just jump detection requires the read context - unless we want to poll for it. Jan -- Siemens AG, Corporate Technology, CT RTC ITP SES-DE Corporate Competence Center Embedded Linux