From patchwork Tue Jan 31 12:32:57 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Pavel Dovgalyuk X-Patchwork-Id: 9547095 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id B794A6016C for ; Tue, 31 Jan 2017 12:33:35 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A921628307 for ; Tue, 31 Jan 2017 12:33:35 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9E00328375; Tue, 31 Jan 2017 12:33:35 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 0D10428334 for ; Tue, 31 Jan 2017 12:33:34 +0000 (UTC) Received: from localhost ([::1]:37548 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYXcr-0003Qi-BL for patchwork-qemu-devel@patchwork.kernel.org; Tue, 31 Jan 2017 07:33:33 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48325) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYXcN-0003OZ-PO for qemu-devel@nongnu.org; Tue, 31 Jan 2017 07:33:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYXcJ-0006Yu-Mm for qemu-devel@nongnu.org; Tue, 31 Jan 2017 07:33:03 -0500 Received: from mail.ispras.ru ([83.149.199.45]:34170) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYXcJ-0006Xr-BP for qemu-devel@nongnu.org; Tue, 31 Jan 2017 07:32:59 -0500 Received: from PASHAISP (unknown [85.142.117.226]) by mail.ispras.ru (Postfix) with ESMTPSA id DDF0C5400A5; Tue, 31 Jan 2017 15:32:56 +0300 (MSK) From: "Pavel Dovgalyuk" To: =?UTF-8?Q?'Marc-Andr=C3=A9_Lureau'?= , "'Pavel Dovgalyuk'" , References: <20170131115913.6828.12266.stgit@PASHA-ISP> In-Reply-To: Date: Tue, 31 Jan 2017 15:32:57 +0300 Message-ID: <001001d27bbe$2770c3f0$76524bd0$@ru> MIME-Version: 1.0 X-Mailer: Microsoft Office Outlook 12.0 Thread-Index: AdJ7u9uRGl78y/jUTfGLadQ0faKQ/QAAXHmg Content-Language: ru X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 83.149.199.45 X-Content-Filtered-By: Mailman/MimeDel 2.1.21 Subject: Re: [Qemu-devel] [PATCH] audio: make audio poll timer deterministic X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: pbonzini@redhat.com, kraxel@redhat.com Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP This patch is needed to make this timer deterministic and to use execution record/replay for audio devices. audio_reset_timer is used in the function audio_vm_change_state_handler. Therefore every time VM is stopped or restarted the timer will be reset to new timeout. Virtual clock does not proceed while VM is stopped. Therefore there is no need in resetting the timeout when VM restarts. Pavel Dovgalyuk From: Marc-André Lureau [mailto:marcandre.lureau@gmail.com] Sent: Tuesday, January 31, 2017 3:16 PM To: Pavel Dovgalyuk; qemu-devel@nongnu.org Cc: pbonzini@redhat.com; dovgaluk@ispras.ru; kraxel@redhat.com Subject: Re: [Qemu-devel] [PATCH] audio: make audio poll timer deterministic Hi On Tue, Jan 31, 2017 at 4:03 PM Pavel Dovgalyuk wrote: This patch changes resetting strategy of the audio polling timer. It does not change expiration time if the timer is already set. You describe the change, but could you explain the reasons you propose it? Signed-off-by: Pavel Dovgalyuk --- audio/audio.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/audio/audio.c b/audio/audio.c index c845a44..1ee95a5 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -1112,8 +1112,10 @@ static int audio_is_timer_needed (void) static void audio_reset_timer (AudioState *s) { if (audio_is_timer_needed ()) { - timer_mod (s->ts, - qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + conf.period.ticks); + if (!timer_pending(s->ts)) { + timer_mod (s->ts, + qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + conf.period.ticks); + } } else { timer_del (s->ts);