From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Zijlstra Subject: Re: [PATCH v3 7/9] KVM-GST: KVM Steal time accounting Date: Thu, 30 Jun 2011 23:54:32 +0200 Message-ID: <1309470872.12449.609.camel@twins> References: <1309361388-30163-1-git-send-email-glommer@redhat.com> <1309361388-30163-8-git-send-email-glommer@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8BIT Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Rik van Riel , Jeremy Fitzhardinge , Avi Kivity , Anthony Liguori , Eric B Munson To: Glauber Costa Return-path: In-Reply-To: <1309361388-30163-8-git-send-email-glommer@redhat.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: kvm.vger.kernel.org On Wed, 2011-06-29 at 11:29 -0400, Glauber Costa wrote: > +static noinline bool touch_steal_time(int is_idle) That noinline is very unlucky there, > +{ > + u64 steal, st = 0; > + > + if (static_branch(¶virt_steal_enabled)) { > + > + steal = paravirt_steal_clock(smp_processor_id()); > + > + steal -= this_rq()->prev_steal_time; > + > + st = steal_ticks(steal); > + this_rq()->prev_steal_time += st * TICK_NSEC; > + > + if (is_idle || st == 0) > + return false; > + > + account_steal_time(st); > + return true; > + } > + return false; > +} > + > static void update_rq_clock_task(struct rq *rq, s64 delta) > { > s64 irq_delta; > @@ -3716,6 +3760,9 @@ void account_user_time(struct task_struct *p, > cputime_t cputime, > struct cpu_usage_stat *cpustat = &kstat_this_cpu.cpustat; > cputime64_t tmp; > > + if (touch_steal_time(0)) > + return; Means we have an unconditional call here, even if the static_branch() is patched out.