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. Should I submit a trivial patch to fix that typo or do you prefer to do that yourself? 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/