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
next prev parent 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: linkBe 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.