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 <cyril...@gmail.com> > > --- > > 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 > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/