From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59841) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xmhas-0007wO-W4 for qemu-devel@nongnu.org; Fri, 07 Nov 2014 06:20:48 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Xmhan-0000uM-TG for qemu-devel@nongnu.org; Fri, 07 Nov 2014 06:20:42 -0500 Received: from mx1.redhat.com ([209.132.183.28]:50245) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xmhan-0000u9-C8 for qemu-devel@nongnu.org; Fri, 07 Nov 2014 06:20:37 -0500 Message-ID: <545CAAF8.4020501@redhat.com> Date: Fri, 07 Nov 2014 12:20:24 +0100 From: Paolo Bonzini MIME-Version: 1.0 References: <20141107103123.6136.18545.stgit@PASHA-ISP> <20141107103212.6136.5251.stgit@PASHA-ISP> In-Reply-To: <20141107103212.6136.5251.stgit@PASHA-ISP> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [RFC PATCH v4 08/25] icount: improve enable/disable ticks List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Pavel Dovgalyuk , qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, peter.crosthwaite@xilinx.com, alex.bennee@linaro.org, mark.burton@greensocs.com, real@ispras.ru, batuzovk@ispras.ru, maria.klimushenkova@ispras.ru, afaerber@suse.de, fred.konrad@greensocs.com On 07/11/2014 11:32, Pavel Dovgalyuk wrote: > This patch eliminates call of the cpu_get_real_ticks while enabling > or disabling the virtual timer in icount mode. These calls are used > for cpu_ticks_offset which is not needed in this mode. > > Signed-off-by: Pavel Dovgalyuk > --- > cpus.c | 12 ++++++++---- > 1 files changed, 8 insertions(+), 4 deletions(-) > > diff --git a/cpus.c b/cpus.c > index 2ec6d75..15ac3a1 100644 > --- a/cpus.c > +++ b/cpus.c > @@ -267,8 +267,10 @@ void cpu_enable_ticks(void) > /* Here, the really thing protected by seqlock is cpu_clock_offset. */ > seqlock_write_lock(&timers_state.vm_clock_seqlock); > if (!timers_state.cpu_ticks_enabled) { > - timers_state.cpu_ticks_offset -= cpu_get_real_ticks(); > - timers_state.cpu_clock_offset -= get_clock(); > + if (!use_icount) { > + timers_state.cpu_ticks_offset -= cpu_get_real_ticks(); > + timers_state.cpu_clock_offset -= get_clock(); > + } > timers_state.cpu_ticks_enabled = 1; > } > seqlock_write_unlock(&timers_state.vm_clock_seqlock); > @@ -283,8 +285,10 @@ void cpu_disable_ticks(void) > /* Here, the really thing protected by seqlock is cpu_clock_offset. */ > seqlock_write_lock(&timers_state.vm_clock_seqlock); > if (timers_state.cpu_ticks_enabled) { > - timers_state.cpu_ticks_offset += cpu_get_real_ticks(); > - timers_state.cpu_clock_offset = cpu_get_clock_locked(); > + if (!use_icount) { > + timers_state.cpu_ticks_offset += cpu_get_real_ticks(); > + timers_state.cpu_clock_offset = cpu_get_clock_locked(); > + } > timers_state.cpu_ticks_enabled = 0; > } > seqlock_write_unlock(&timers_state.vm_clock_seqlock); > Reviewed-by: Paolo Bonzini