All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mark Rutland <mark.rutland@arm.com>
To: Marc Zyngier <marc.zyngier@arm.com>
Cc: linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	Russell King <linux@arm.linux.org.uk>,
	Will Deacon <will.deacon@arm.com>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Daniel Lezcano <daniel.lezcano@linaro.org>,
	Wim Van Sebroeck <wim@linux-watchdog.org>,
	Guenter Roeck <linux@roeck-us.net>,
	Valentin Schneider <valentin.schneider@arm.com>
Subject: Re: [PATCH 5/7] clocksource/arm_arch_timer: Drop use of static key in arch_timer_reg_read_stable
Date: Mon, 8 Apr 2019 17:04:34 +0100	[thread overview]
Message-ID: <20190408160433.GQ6139@lakrids.cambridge.arm.com> (raw)
In-Reply-To: <20190408154907.223536-6-marc.zyngier@arm.com>

On Mon, Apr 08, 2019 at 04:49:05PM +0100, Marc Zyngier wrote:
> Let's start with the removal of the arch_timer_read_ool_enabled
> static key in arch_timer_reg_read_stable. IT is not a fast path,

Nit: s/IT/It/

> and we can simplify things a bit.
> 
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>

Acked-by: Mark Rutland <mark.rutland@arm.com>

Mark.

> ---
>  arch/arm64/include/asm/arch_timer.h | 42 +++++++++++++++++++----------
>  1 file changed, 28 insertions(+), 14 deletions(-)
> 
> diff --git a/arch/arm64/include/asm/arch_timer.h b/arch/arm64/include/asm/arch_timer.h
> index c3762ffcc933..4a06d46def7e 100644
> --- a/arch/arm64/include/asm/arch_timer.h
> +++ b/arch/arm64/include/asm/arch_timer.h
> @@ -77,23 +77,37 @@ struct arch_timer_erratum_workaround {
>  DECLARE_PER_CPU(const struct arch_timer_erratum_workaround *,
>  		timer_unstable_counter_workaround);
>  
> +/* inline sysreg accessors that make erratum_handler() work */
> +static inline notrace u32 arch_timer_read_cntp_tval_el0(void)
> +{
> +	return read_sysreg(cntp_tval_el0);
> +}
> +
> +static inline notrace u32 arch_timer_read_cntv_tval_el0(void)
> +{
> +	return read_sysreg(cntv_tval_el0);
> +}
> +
> +static inline notrace u64 arch_timer_read_cntpct_el0(void)
> +{
> +	return read_sysreg(cntpct_el0);
> +}
> +
> +static inline notrace u64 arch_timer_read_cntvct_el0(void)
> +{
> +	return read_sysreg(cntvct_el0);
> +}
> +
>  #define arch_timer_reg_read_stable(reg)					\
> -({									\
> -	u64 _val;							\
> -	if (needs_unstable_timer_counter_workaround()) {		\
> -		const struct arch_timer_erratum_workaround *wa;		\
> +	({								\
> +		u64 _val;						\
> +									\
>  		preempt_disable_notrace();				\
> -		wa = __this_cpu_read(timer_unstable_counter_workaround); \
> -		if (wa && wa->read_##reg)				\
> -			_val = wa->read_##reg();			\
> -		else							\
> -			_val = read_sysreg(reg);			\
> +		_val = erratum_handler(read_ ## reg)();			\
>  		preempt_enable_notrace();				\
> -	} else {							\
> -		_val = read_sysreg(reg);				\
> -	}								\
> -	_val;								\
> -})
> +									\
> +		_val;							\
> +	})
>  
>  /*
>   * These register accessors are marked inline so the compiler can
> -- 
> 2.20.1
> 

WARNING: multiple messages have this Message-ID (diff)
From: Mark Rutland <mark.rutland@arm.com>
To: Marc Zyngier <marc.zyngier@arm.com>
Cc: Russell King <linux@arm.linux.org.uk>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Daniel Lezcano <daniel.lezcano@linaro.org>,
	Will Deacon <will.deacon@arm.com>,
	linux-kernel@vger.kernel.org, Guenter Roeck <linux@roeck-us.net>,
	Wim Van Sebroeck <wim@linux-watchdog.org>,
	Valentin Schneider <valentin.schneider@arm.com>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 5/7] clocksource/arm_arch_timer: Drop use of static key in arch_timer_reg_read_stable
Date: Mon, 8 Apr 2019 17:04:34 +0100	[thread overview]
Message-ID: <20190408160433.GQ6139@lakrids.cambridge.arm.com> (raw)
In-Reply-To: <20190408154907.223536-6-marc.zyngier@arm.com>

On Mon, Apr 08, 2019 at 04:49:05PM +0100, Marc Zyngier wrote:
> Let's start with the removal of the arch_timer_read_ool_enabled
> static key in arch_timer_reg_read_stable. IT is not a fast path,

Nit: s/IT/It/

> and we can simplify things a bit.
> 
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>

Acked-by: Mark Rutland <mark.rutland@arm.com>

Mark.

> ---
>  arch/arm64/include/asm/arch_timer.h | 42 +++++++++++++++++++----------
>  1 file changed, 28 insertions(+), 14 deletions(-)
> 
> diff --git a/arch/arm64/include/asm/arch_timer.h b/arch/arm64/include/asm/arch_timer.h
> index c3762ffcc933..4a06d46def7e 100644
> --- a/arch/arm64/include/asm/arch_timer.h
> +++ b/arch/arm64/include/asm/arch_timer.h
> @@ -77,23 +77,37 @@ struct arch_timer_erratum_workaround {
>  DECLARE_PER_CPU(const struct arch_timer_erratum_workaround *,
>  		timer_unstable_counter_workaround);
>  
> +/* inline sysreg accessors that make erratum_handler() work */
> +static inline notrace u32 arch_timer_read_cntp_tval_el0(void)
> +{
> +	return read_sysreg(cntp_tval_el0);
> +}
> +
> +static inline notrace u32 arch_timer_read_cntv_tval_el0(void)
> +{
> +	return read_sysreg(cntv_tval_el0);
> +}
> +
> +static inline notrace u64 arch_timer_read_cntpct_el0(void)
> +{
> +	return read_sysreg(cntpct_el0);
> +}
> +
> +static inline notrace u64 arch_timer_read_cntvct_el0(void)
> +{
> +	return read_sysreg(cntvct_el0);
> +}
> +
>  #define arch_timer_reg_read_stable(reg)					\
> -({									\
> -	u64 _val;							\
> -	if (needs_unstable_timer_counter_workaround()) {		\
> -		const struct arch_timer_erratum_workaround *wa;		\
> +	({								\
> +		u64 _val;						\
> +									\
>  		preempt_disable_notrace();				\
> -		wa = __this_cpu_read(timer_unstable_counter_workaround); \
> -		if (wa && wa->read_##reg)				\
> -			_val = wa->read_##reg();			\
> -		else							\
> -			_val = read_sysreg(reg);			\
> +		_val = erratum_handler(read_ ## reg)();			\
>  		preempt_enable_notrace();				\
> -	} else {							\
> -		_val = read_sysreg(reg);				\
> -	}								\
> -	_val;								\
> -})
> +									\
> +		_val;							\
> +	})
>  
>  /*
>   * These register accessors are marked inline so the compiler can
> -- 
> 2.20.1
> 

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2019-04-08 16:04 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-08 15:49 [PATCH 0/7] clocksource/arm_arch_timer: Removing the static branch on errata handling Marc Zyngier
2019-04-08 15:49 ` Marc Zyngier
2019-04-08 15:49 ` [PATCH 1/7] ARM: vdso: Remove dependency with the arch_timer driver internals Marc Zyngier
2019-04-08 15:49   ` Marc Zyngier
2019-04-08 15:58   ` Mark Rutland
2019-04-08 15:58     ` Mark Rutland
2019-04-15 10:46   ` Marc Zyngier
2019-04-15 10:46     ` Marc Zyngier
2019-04-30 14:23   ` Will Deacon
2019-04-30 14:23     ` Will Deacon
2019-04-08 15:49 ` [PATCH 2/7] watchdog/sbsa: Use arch_timer_read_counter instead of arch_counter_get_cntvct Marc Zyngier
2019-04-08 15:49   ` Marc Zyngier
2019-04-08 15:59   ` Mark Rutland
2019-04-08 15:59     ` Mark Rutland
2019-04-08 18:07   ` Guenter Roeck
2019-04-08 18:07     ` Guenter Roeck
2019-04-09  7:43     ` Marc Zyngier
2019-04-09  7:43       ` Marc Zyngier
2019-04-08 15:49 ` [PATCH 3/7] arm64: " Marc Zyngier
2019-04-08 15:49   ` Marc Zyngier
2019-04-08 15:59   ` Mark Rutland
2019-04-08 15:59     ` Mark Rutland
2019-04-08 15:49 ` [PATCH 4/7] clocksource/arm_arch_timer: Direcly assign set_next_event workaround Marc Zyngier
2019-04-08 15:49   ` Marc Zyngier
2019-04-08 16:02   ` Mark Rutland
2019-04-08 16:02     ` Mark Rutland
2019-04-11 17:17   ` Daniel Lezcano
2019-04-11 17:17     ` Daniel Lezcano
2019-04-15 10:18     ` Marc Zyngier
2019-04-15 10:18       ` Marc Zyngier
2019-04-08 15:49 ` [PATCH 5/7] clocksource/arm_arch_timer: Drop use of static key in arch_timer_reg_read_stable Marc Zyngier
2019-04-08 15:49   ` Marc Zyngier
2019-04-08 16:04   ` Mark Rutland [this message]
2019-04-08 16:04     ` Mark Rutland
2019-04-15 11:04   ` Daniel Lezcano
2019-04-15 11:04     ` Daniel Lezcano
2019-04-08 15:49 ` [PATCH 6/7] clocksource/arm_arch_timer: Remove use of workaround static key Marc Zyngier
2019-04-08 15:49   ` Marc Zyngier
2019-04-08 16:05   ` Mark Rutland
2019-04-08 16:05     ` Mark Rutland
2019-04-15 11:07   ` Daniel Lezcano
2019-04-15 11:07     ` Daniel Lezcano
2019-04-08 15:49 ` [PATCH 7/7] clocksource/arm_arch_timer: Use arch_timer_read_counter to access stable counters Marc Zyngier
2019-04-08 15:49   ` Marc Zyngier
2019-04-08 16:08   ` Mark Rutland
2019-04-08 16:08     ` Mark Rutland
2019-04-15 12:16   ` Daniel Lezcano
2019-04-15 12:16     ` Daniel Lezcano
2019-04-30 15:27     ` Marc Zyngier
2019-04-30 15:27       ` Marc Zyngier
2019-04-30 15:39       ` Valentin Schneider
2019-04-30 15:39         ` Valentin Schneider
2019-05-03 20:32         ` Daniel Lezcano
2019-05-03 20:32           ` Daniel Lezcano
2019-05-03 20:31       ` Daniel Lezcano
2019-05-03 20:31         ` Daniel Lezcano

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=20190408160433.GQ6139@lakrids.cambridge.arm.com \
    --to=mark.rutland@arm.com \
    --cc=catalin.marinas@arm.com \
    --cc=daniel.lezcano@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=linux@roeck-us.net \
    --cc=marc.zyngier@arm.com \
    --cc=valentin.schneider@arm.com \
    --cc=will.deacon@arm.com \
    --cc=wim@linux-watchdog.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.