From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756100AbbBEEIj (ORCPT ); Wed, 4 Feb 2015 23:08:39 -0500 Received: from mail-pd0-f174.google.com ([209.85.192.174]:34585 "EHLO mail-pd0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751419AbbBEEIi (ORCPT ); Wed, 4 Feb 2015 23:08:38 -0500 Message-ID: <1423109305.2680.6.camel@cyril> Subject: Re: [PATCH v2 2/2] powerpc: add running_clock for powerpc to prevent spurious softlockup warnings From: Cyril Bur To: Paul Bolle , Andrew Morton Cc: Valentin Rothberg , linux-kernel@vger.kernel.org, mpe@ellerman.id.au, drjones@redhat.com, dzickus@redhat.com, mingo@kernel.org, uobergfe@redhat.com, chaiw.fnst@cn.fujitsu.com, fabf@skynet.be, atomlin@redhat.com, benzh@chromium.org, schwidefsky@de.ibm.com Date: Thu, 05 Feb 2015 15:08:25 +1100 In-Reply-To: <1423046573.23022.2.camel@x220> References: <1420774478-16760-1-git-send-email-cyrilbur@gmail.com> <1420774478-16760-3-git-send-email-cyrilbur@gmail.com> <1423046573.23022.2.camel@x220> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 2015-02-04 at 11:42 +0100, Paul Bolle wrote: > On Fri, 2015-01-09 at 14:34 +1100, Cyril Bur wrote: > > On POWER8 virtualised kernels the VTB register can be read to have a view of > > time that only increases while the guest is running. This will prevent guests > > from seeing time jump if a guest is paused for significant amounts of time. > > > > On POWER7 and below virtualised kernels stolen time is subtracted from > > local_clock as a best effort approximation. This will not eliminate spurious > > warnings in the case of a suspended guest but may reduce the occurance in the > > case of softlockups due to host over commit. > > > > Bare metal kernels should avoid reading the VTB as KVM does not restore sane > > values when not executing, the approxmation is fine as host kernels won't > > observe any stolen time. > > > > Signed-off-by: Cyril Bur > > --- > > V2: > > Replaced the use of sched_clock_with local_clock it was used originally in > > the softlockup detector. > > Added #ifdef CONFIG_PPC_PSERIES and optimised the non lpar + vtb cases. > > This became commit 3e5aba51e929 ("powerpc: add running_clock for powerpc > to prevent spurious softlockup warnings") in today's linux-next (ie, > next-20150204). I noticed because a script I use to check linux-next > spotted a trivial issues with it. > > > --- > > arch/powerpc/kernel/time.c | 32 ++++++++++++++++++++++++++++++++ > > 1 file changed, 32 insertions(+) > > > > diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c > > index fa7c4f1..fd35e5b 100644 > > --- a/arch/powerpc/kernel/time.c > > +++ b/arch/powerpc/kernel/time.c > > @@ -621,6 +621,38 @@ unsigned long long sched_clock(void) > > return mulhdu(get_tb() - boot_tb, tb_to_ns_scale) << tb_to_ns_shift; > > } > > > > + > > +#ifdef CONFIG_PPC_PSERIES > > + > > +/* > > + * Running clock - attempts to give a view of time passing for a virtualised > > + * kernels. > > + * Uses the VTB register if available otherwise a next best guess. > > + */ > > +unsigned long long running_clock(void) > > +{ > > + /* > > + * Don't read the VTB as a host since KVM does not switch in host timebase > > + * into the VTB when it takes a guest off the CPU, reading the VTB would > > + * result in reading 'last switched out' guest VTB. > > + * > > + * Host kernels are often compiled with CONFIG_PSERIES checked, it would be > > You obviously wanted to use CONFIG_PPC_PSERIES here. > Yep, sorry. > Should I submit a trivial patch to fix that typo or do you prefer to do > that yourself? > Indeed a trivial fixup, I've pasted the hunk below. Andrew are you ok to fold it in? Thanks, Cyril diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c index fd35e5b..770dc16 100644 --- a/arch/powerpc/kernel/time.c +++ b/arch/powerpc/kernel/time.c @@ -636,8 +636,8 @@ unsigned long long running_clock(void) * into the VTB when it takes a guest off the CPU, reading the VTB would * result in reading 'last switched out' guest VTB. * - * Host kernels are often compiled with CONFIG_PSERIES checked, it would be - * unsafe to rely only on the #ifdef above. + * Host kernels are often compiled with CONFIG_PPC_PSERIES checked, it + * would be unsafe to rely only on the #ifdef above. */ if (firmware_has_feature(FW_FEATURE_LPAR) && cpu_has_feature(CPU_FTR_ARCH_207S)) > Thanks, > > > Paul Bolle >