Re: [PATCH v2 1/2] Add another clock for use with the soft lockup watchdog.

From: Chai Wen
Date: Tue Feb 10 2015 - 01:20:36 EST


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@xxxxxxxxx>
> ---
> 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)




--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/