Messages in this thread | | | Date | Tue, 10 Feb 2015 14:19:15 +0800 | From | Chai Wen <> | Subject | Re: [PATCH v2 1/2] Add another clock for use with the soft lockup watchdog. |
| |
On 01/09/2015 11:34 AM, Cyril Bur wrote:
> This permits the use of arch specific clocks for which virtualised kernels can > use their notion of 'running' time, not the elpased wall time which will
s/elpased/elapsed/
thanks chai wen
> include host execution time. > > Signed-off-by: Cyril Bur <cyrilbur@gmail.com> > --- > V2: > Remove the export of running_clock > Use local_clock instead of sched_clock as was initally used in the > softlockup detector > > --- > include/linux/sched.h | 1 + > kernel/sched/clock.c | 13 +++++++++++++ > kernel/watchdog.c | 2 +- > 3 files changed, 15 insertions(+), 1 deletion(-) > > diff --git a/include/linux/sched.h b/include/linux/sched.h > index 8db31ef..e400162 100644 > --- a/include/linux/sched.h > +++ b/include/linux/sched.h > @@ -2145,6 +2145,7 @@ extern unsigned long long notrace sched_clock(void); > */ > extern u64 cpu_clock(int cpu); > extern u64 local_clock(void); > +extern u64 running_clock(void); > extern u64 sched_clock_cpu(int cpu); > > > diff --git a/kernel/sched/clock.c b/kernel/sched/clock.c > index c27e4f8..c0a2051 100644 > --- a/kernel/sched/clock.c > +++ b/kernel/sched/clock.c > @@ -420,3 +420,16 @@ u64 local_clock(void) > > EXPORT_SYMBOL_GPL(cpu_clock); > EXPORT_SYMBOL_GPL(local_clock); > + > +/* > + * Running clock - returns the time that has elapsed while a guest has been > + * running. > + * On a guest this value should be local_clock minus the time the guest was > + * suspended by the hypervisor (for any reason). > + * On bare metal this function should return the same as local_clock. > + * Architectures and sub-architectures can override this. > + */ > +u64 __weak running_clock(void) > +{ > + return local_clock(); > +} > diff --git a/kernel/watchdog.c b/kernel/watchdog.c > index 70bf118..3174bf8 100644 > --- a/kernel/watchdog.c > +++ b/kernel/watchdog.c > @@ -154,7 +154,7 @@ static int get_softlockup_thresh(void) > */ > static unsigned long get_timestamp(void) > { > - return local_clock() >> 30LL; /* 2^30 ~= 10^9 */ > + return running_clock() >> 30LL; /* 2^30 ~= 10^9 */ > } > > static void set_sample_period(void)
| |