All of lore.kernel.org
 help / color / mirror / Atom feed
From: Heiko Carstens <hca@linux.ibm.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: bigeasy@linutronix.de, mark.rutland@arm.com, maz@kernel.org,
	catalin.marinas@arm.com, will@kernel.org, chenhuacai@kernel.org,
	kernel@xen0n.name, gor@linux.ibm.com, agordeev@linux.ibm.com,
	borntraeger@linux.ibm.com, svens@linux.ibm.com,
	pbonzini@redhat.com, wanpengli@tencent.com, vkuznets@redhat.com,
	tglx@linutronix.de, mingo@redhat.com, bp@alien8.de,
	dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com,
	jgross@suse.com, boris.ostrovsky@oracle.com,
	daniel.lezcano@linaro.org, kys@microsoft.com,
	haiyangz@microsoft.com, wei.liu@kernel.org, decui@microsoft.com,
	rafael@kernel.org, longman@redhat.com, boqun.feng@gmail.com,
	pmladek@suse.com, senozhatsky@chromium.org, rostedt@goodmis.org,
	john.ogness@linutronix.de, juri.lelli@redhat.com,
	vincent.guittot@linaro.org, dietmar.eggemann@arm.com,
	bsegall@google.com, mgorman@suse.de, bristot@redhat.com,
	vschneid@redhat.com, jstultz@google.com, sboyd@kernel.org,
	linux-kernel@vger.kernel.org, loongarch@lists.linux.dev,
	linux-s390@vger.kernel.org, kvm@vger.kernel.org,
	linux-hyperv@vger.kernel.org, linux-pm@vger.kernel.org
Subject: Re: [RFC][PATCH 6/9] s390/time: Provide sched_clock_noinstr()
Date: Tue, 9 May 2023 08:13:59 +0200	[thread overview]
Message-ID: <ZFnkp6dlOuJqm2II@osiris> (raw)
In-Reply-To: <20230508213147.786238095@infradead.org>


1;115;0cOn Mon, May 08, 2023 at 11:19:57PM +0200, Peter Zijlstra wrote:
> With the intent to provide local_clock_noinstr(), a variant of
> local_clock() that's safe to be called from noinstr code (with the
> assumption that any such code will already be non-preemptible),
> prepare for things by providing a noinstr sched_clock_noinstr()
> function.
> 
> Specifically, preempt_enable_*() calls out to schedule(), which upsets
> noinstr validation efforts.
> 
> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
> ---
>  arch/s390/include/asm/timex.h |   13 +++++++++----
>  arch/s390/kernel/time.c       |   11 ++++++++++-
>  2 files changed, 19 insertions(+), 5 deletions(-)
...
> +static __always_inline unsigned long __get_tod_clock_monotonic(void)
> +{
> +	return get_tod_clock() - tod_clock_base.tod;
> +}
> +
>  /**
>   * get_clock_monotonic - returns current time in clock rate units
>   *
> @@ -216,7 +221,7 @@ static inline unsigned long get_tod_cloc
>  	unsigned long tod;
>  
>  	preempt_disable_notrace();
> -	tod = get_tod_clock() - tod_clock_base.tod;
> +	tod = __get_tod_clock_monotonic();
>  	preempt_enable_notrace();
>  	return tod;
>  }
...
> +unsigned long long noinstr sched_clock_noinstr(void)
> +{
> +	return tod_to_ns(__get_tod_clock_monotonic());
> +}
> +
>  /*
>   * Scheduler clock - returns current time in nanosec units.
>   */
>  unsigned long long notrace sched_clock(void)
>  {
> -	return tod_to_ns(get_tod_clock_monotonic());
> +	unsigned long long ns;
> +	preempt_disable_notrace();
> +	ns = tod_to_ns(get_tod_clock_monotonic());
> +	preempt_enable_notrace();
> +	return ns;
>  }
>  NOKPROBE_SYMBOL(sched_clock);

This disables preemption twice within sched_clock(). So this should either
call __get_tod_clock_monotonic() instead, or the function could stay as it
is, which I would prefer.

  reply	other threads:[~2023-05-09  6:16 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-08 21:19 [RFC][PATCH 0/9] local_clock() vs noinstr Peter Zijlstra
2023-05-08 21:19 ` [RFC][PATCH 1/9] seqlock/latch: Provide raw_read_seqcount_latch_retry() Peter Zijlstra
2023-05-09  8:13   ` Thomas Gleixner
2023-05-10  7:58   ` Petr Mladek
2023-05-08 21:19 ` [RFC][PATCH 2/9] time/sched_clock: Provide sched_clock_noinstr() Peter Zijlstra
2023-05-08 21:19 ` [RFC][PATCH 3/9] arm64/io: Always inline all of __raw_{read,write}[bwlq]() Peter Zijlstra
2023-05-09 14:51   ` Mark Rutland
2023-05-08 21:19 ` [RFC][PATCH 4/9] arm64/arch_timer: Provide noinstr sched_clock_read() functions Peter Zijlstra
2023-05-08 21:19 ` [RFC][PATCH 5/9] loongarch: Provide noinstr sched_clock_read() Peter Zijlstra
2023-05-08 21:19 ` [RFC][PATCH 6/9] s390/time: Provide sched_clock_noinstr() Peter Zijlstra
2023-05-09  6:13   ` Heiko Carstens [this message]
2023-05-09  6:42     ` Peter Zijlstra
2023-05-08 21:19 ` [RFC][PATCH 7/9] x86/tsc: " Peter Zijlstra
2023-05-08 21:44   ` Peter Zijlstra
2023-05-08 23:30     ` Wei Liu
2023-05-11 20:23       ` Peter Zijlstra
2023-05-11 23:11         ` Michael Kelley (LINUX)
2023-05-12  6:00           ` Peter Zijlstra
2023-05-17  2:26     ` Michael Kelley (LINUX)
2023-05-17 11:13       ` Peter Zijlstra
2023-05-08 21:19 ` [RFC][PATCH 8/9] sched/clock: Provide local_clock_noinstr() Peter Zijlstra
2023-05-08 21:20 ` [RFC][PATCH 9/9] cpuidle: Use local_clock_noinstr() Peter Zijlstra
2023-05-09 16:18   ` Rafael J. Wysocki
2023-05-09 19:02     ` Peter Zijlstra
2023-05-10 13:43 ` [RFC][PATCH 0/9] local_clock() vs noinstr Sebastian Andrzej Siewior

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZFnkp6dlOuJqm2II@osiris \
    --to=hca@linux.ibm.com \
    --cc=agordeev@linux.ibm.com \
    --cc=bigeasy@linutronix.de \
    --cc=boqun.feng@gmail.com \
    --cc=boris.ostrovsky@oracle.com \
    --cc=borntraeger@linux.ibm.com \
    --cc=bp@alien8.de \
    --cc=bristot@redhat.com \
    --cc=bsegall@google.com \
    --cc=catalin.marinas@arm.com \
    --cc=chenhuacai@kernel.org \
    --cc=daniel.lezcano@linaro.org \
    --cc=dave.hansen@linux.intel.com \
    --cc=decui@microsoft.com \
    --cc=dietmar.eggemann@arm.com \
    --cc=gor@linux.ibm.com \
    --cc=haiyangz@microsoft.com \
    --cc=hpa@zytor.com \
    --cc=jgross@suse.com \
    --cc=john.ogness@linutronix.de \
    --cc=jstultz@google.com \
    --cc=juri.lelli@redhat.com \
    --cc=kernel@xen0n.name \
    --cc=kvm@vger.kernel.org \
    --cc=kys@microsoft.com \
    --cc=linux-hyperv@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=longman@redhat.com \
    --cc=loongarch@lists.linux.dev \
    --cc=mark.rutland@arm.com \
    --cc=maz@kernel.org \
    --cc=mgorman@suse.de \
    --cc=mingo@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peterz@infradead.org \
    --cc=pmladek@suse.com \
    --cc=rafael@kernel.org \
    --cc=rostedt@goodmis.org \
    --cc=sboyd@kernel.org \
    --cc=senozhatsky@chromium.org \
    --cc=svens@linux.ibm.com \
    --cc=tglx@linutronix.de \
    --cc=vincent.guittot@linaro.org \
    --cc=vkuznets@redhat.com \
    --cc=vschneid@redhat.com \
    --cc=wanpengli@tencent.com \
    --cc=wei.liu@kernel.org \
    --cc=will@kernel.org \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.