From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751412AbbBJGU2 (ORCPT ); Tue, 10 Feb 2015 01:20:28 -0500 Received: from cn.fujitsu.com ([59.151.112.132]:58199 "EHLO heian.cn.fujitsu.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1751130AbbBJGU1 (ORCPT ); Tue, 10 Feb 2015 01:20:27 -0500 X-IronPort-AV: E=Sophos;i="5.04,848,1406563200"; d="scan'208";a="57373026" Message-ID: <54D9A2E3.70601@cn.fujitsu.com> Date: Tue, 10 Feb 2015 14:19:15 +0800 From: Chai Wen User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:6.0) Gecko/20110812 Thunderbird/6.0 MIME-Version: 1.0 To: Cyril Bur CC: , , , , , , , , , , Subject: Re: [PATCH v2 1/2] Add another clock for use with the soft lockup watchdog. References: <1420774478-16760-1-git-send-email-cyrilbur@gmail.com> <1420774478-16760-2-git-send-email-cyrilbur@gmail.com> In-Reply-To: <1420774478-16760-2-git-send-email-cyrilbur@gmail.com> Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: 7bit X-Originating-IP: [10.167.226.161] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 > --- > 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)