From: Marc Zyngier <marc.zyngier@arm.com>
To: Andrew Murray <andrew.murray@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Daniel Lezcano <daniel.lezcano@linaro.org>,
Will Deacon <will.deacon@arm.com>,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v2] clocksource/arm_arch_timer: extract elf_hwcap use to arch-helper
Date: Thu, 13 Jun 2019 14:03:53 +0100 [thread overview]
Message-ID: <86imt9bps6.wl-marc.zyngier@arm.com> (raw)
In-Reply-To: <20190613125102.23879-1-andrew.murray@arm.com>
+ Daniel
On Thu, 13 Jun 2019 13:51:02 +0100,
Andrew Murray <andrew.murray@arm.com> wrote:
>
> Different mechanisms are used to test and set elf_hwcaps between ARM
> and ARM64, this results in the use of ifdeferry in this file when
> setting/testing for the EVTSTRM hwcap.
>
> Let's improve readability by extracting this to an arch helper.
>
> Signed-off-by: Andrew Murray <andrew.murray@arm.com>
> Acked-by: Mark Rutland <mark.rutland@arm.com>
> Acked-by: Will Deacon <will.deacon@arm.com>
Acked-by: Marc Zyngier <marc.zyngier@arm.com>
Daniel, can you please take this though the clocksource tree?
Thanks,
M.
> ---
> arch/arm/include/asm/arch_timer.h | 10 ++++++++++
> arch/arm64/include/asm/arch_timer.h | 13 +++++++++++++
> drivers/clocksource/arm_arch_timer.c | 15 ++-------------
> 3 files changed, 25 insertions(+), 13 deletions(-)
>
> diff --git a/arch/arm/include/asm/arch_timer.h b/arch/arm/include/asm/arch_timer.h
> index 4b66ecd6be99..ae533caec1e9 100644
> --- a/arch/arm/include/asm/arch_timer.h
> +++ b/arch/arm/include/asm/arch_timer.h
> @@ -4,6 +4,7 @@
>
> #include <asm/barrier.h>
> #include <asm/errno.h>
> +#include <asm/hwcap.h>
> #include <linux/clocksource.h>
> #include <linux/init.h>
> #include <linux/types.h>
> @@ -124,6 +125,15 @@ static inline void arch_timer_set_cntkctl(u32 cntkctl)
> isb();
> }
>
> +static inline bool arch_timer_set_evtstrm_feature(void)
> +{
> + elf_hwcap |= HWCAP_EVTSTRM;
> +}
> +
> +static inline bool arch_timer_have_evtstrm_feature(void)
> +{
> + return elf_hwcap & HWCAP_EVTSTRM;
> +}
> #endif
>
> #endif
> diff --git a/arch/arm64/include/asm/arch_timer.h b/arch/arm64/include/asm/arch_timer.h
> index 50b3ab7ded4f..a847a3ee6cab 100644
> --- a/arch/arm64/include/asm/arch_timer.h
> +++ b/arch/arm64/include/asm/arch_timer.h
> @@ -20,6 +20,7 @@
> #define __ASM_ARCH_TIMER_H
>
> #include <asm/barrier.h>
> +#include <asm/hwcap.h>
> #include <asm/sysreg.h>
>
> #include <linux/bug.h>
> @@ -240,4 +241,16 @@ static inline int arch_timer_arch_init(void)
> return 0;
> }
>
> +static inline void arch_timer_set_evtstrm_feature(void)
> +{
> + cpu_set_named_feature(EVTSTRM);
> +#ifdef CONFIG_COMPAT
> + compat_elf_hwcap |= COMPAT_HWCAP_EVTSTRM;
> +#endif
> +}
> +
> +static inline bool arch_timer_have_evtstrm_feature(void)
> +{
> + return cpu_have_named_feature(EVTSTRM);
> +}
> #endif
> diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c
> index b2a951a798e2..3583a92ad960 100644
> --- a/drivers/clocksource/arm_arch_timer.c
> +++ b/drivers/clocksource/arm_arch_timer.c
> @@ -804,14 +804,7 @@ static void arch_timer_evtstrm_enable(int divider)
> cntkctl |= (divider << ARCH_TIMER_EVT_TRIGGER_SHIFT)
> | ARCH_TIMER_VIRT_EVT_EN;
> arch_timer_set_cntkctl(cntkctl);
> -#ifdef CONFIG_ARM64
> - cpu_set_named_feature(EVTSTRM);
> -#else
> - elf_hwcap |= HWCAP_EVTSTRM;
> -#endif
> -#ifdef CONFIG_COMPAT
> - compat_elf_hwcap |= COMPAT_HWCAP_EVTSTRM;
> -#endif
> + arch_timer_set_evtstrm_feature();
> cpumask_set_cpu(smp_processor_id(), &evtstrm_available);
> }
>
> @@ -1040,11 +1033,7 @@ static int arch_timer_cpu_pm_notify(struct notifier_block *self,
> } else if (action == CPU_PM_ENTER_FAILED || action == CPU_PM_EXIT) {
> arch_timer_set_cntkctl(__this_cpu_read(saved_cntkctl));
>
> -#ifdef CONFIG_ARM64
> - if (cpu_have_named_feature(EVTSTRM))
> -#else
> - if (elf_hwcap & HWCAP_EVTSTRM)
> -#endif
> + if (arch_timer_have_evtstrm_feature())
> cpumask_set_cpu(smp_processor_id(), &evtstrm_available);
> }
> return NOTIFY_OK;
> --
> 2.21.0
>
--
Jazz is not dead, it just smells funny.
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: Marc Zyngier <marc.zyngier@arm.com>
To: Andrew Murray <andrew.murray@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will.deacon@arm.com>, <linux-kernel@vger.kernel.org>,
<linux-arm-kernel@lists.infradead.org>,
Daniel Lezcano <daniel.lezcano@linaro.org>
Subject: Re: [PATCH v2] clocksource/arm_arch_timer: extract elf_hwcap use to arch-helper
Date: Thu, 13 Jun 2019 14:03:53 +0100 [thread overview]
Message-ID: <86imt9bps6.wl-marc.zyngier@arm.com> (raw)
In-Reply-To: <20190613125102.23879-1-andrew.murray@arm.com>
+ Daniel
On Thu, 13 Jun 2019 13:51:02 +0100,
Andrew Murray <andrew.murray@arm.com> wrote:
>
> Different mechanisms are used to test and set elf_hwcaps between ARM
> and ARM64, this results in the use of ifdeferry in this file when
> setting/testing for the EVTSTRM hwcap.
>
> Let's improve readability by extracting this to an arch helper.
>
> Signed-off-by: Andrew Murray <andrew.murray@arm.com>
> Acked-by: Mark Rutland <mark.rutland@arm.com>
> Acked-by: Will Deacon <will.deacon@arm.com>
Acked-by: Marc Zyngier <marc.zyngier@arm.com>
Daniel, can you please take this though the clocksource tree?
Thanks,
M.
> ---
> arch/arm/include/asm/arch_timer.h | 10 ++++++++++
> arch/arm64/include/asm/arch_timer.h | 13 +++++++++++++
> drivers/clocksource/arm_arch_timer.c | 15 ++-------------
> 3 files changed, 25 insertions(+), 13 deletions(-)
>
> diff --git a/arch/arm/include/asm/arch_timer.h b/arch/arm/include/asm/arch_timer.h
> index 4b66ecd6be99..ae533caec1e9 100644
> --- a/arch/arm/include/asm/arch_timer.h
> +++ b/arch/arm/include/asm/arch_timer.h
> @@ -4,6 +4,7 @@
>
> #include <asm/barrier.h>
> #include <asm/errno.h>
> +#include <asm/hwcap.h>
> #include <linux/clocksource.h>
> #include <linux/init.h>
> #include <linux/types.h>
> @@ -124,6 +125,15 @@ static inline void arch_timer_set_cntkctl(u32 cntkctl)
> isb();
> }
>
> +static inline bool arch_timer_set_evtstrm_feature(void)
> +{
> + elf_hwcap |= HWCAP_EVTSTRM;
> +}
> +
> +static inline bool arch_timer_have_evtstrm_feature(void)
> +{
> + return elf_hwcap & HWCAP_EVTSTRM;
> +}
> #endif
>
> #endif
> diff --git a/arch/arm64/include/asm/arch_timer.h b/arch/arm64/include/asm/arch_timer.h
> index 50b3ab7ded4f..a847a3ee6cab 100644
> --- a/arch/arm64/include/asm/arch_timer.h
> +++ b/arch/arm64/include/asm/arch_timer.h
> @@ -20,6 +20,7 @@
> #define __ASM_ARCH_TIMER_H
>
> #include <asm/barrier.h>
> +#include <asm/hwcap.h>
> #include <asm/sysreg.h>
>
> #include <linux/bug.h>
> @@ -240,4 +241,16 @@ static inline int arch_timer_arch_init(void)
> return 0;
> }
>
> +static inline void arch_timer_set_evtstrm_feature(void)
> +{
> + cpu_set_named_feature(EVTSTRM);
> +#ifdef CONFIG_COMPAT
> + compat_elf_hwcap |= COMPAT_HWCAP_EVTSTRM;
> +#endif
> +}
> +
> +static inline bool arch_timer_have_evtstrm_feature(void)
> +{
> + return cpu_have_named_feature(EVTSTRM);
> +}
> #endif
> diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c
> index b2a951a798e2..3583a92ad960 100644
> --- a/drivers/clocksource/arm_arch_timer.c
> +++ b/drivers/clocksource/arm_arch_timer.c
> @@ -804,14 +804,7 @@ static void arch_timer_evtstrm_enable(int divider)
> cntkctl |= (divider << ARCH_TIMER_EVT_TRIGGER_SHIFT)
> | ARCH_TIMER_VIRT_EVT_EN;
> arch_timer_set_cntkctl(cntkctl);
> -#ifdef CONFIG_ARM64
> - cpu_set_named_feature(EVTSTRM);
> -#else
> - elf_hwcap |= HWCAP_EVTSTRM;
> -#endif
> -#ifdef CONFIG_COMPAT
> - compat_elf_hwcap |= COMPAT_HWCAP_EVTSTRM;
> -#endif
> + arch_timer_set_evtstrm_feature();
> cpumask_set_cpu(smp_processor_id(), &evtstrm_available);
> }
>
> @@ -1040,11 +1033,7 @@ static int arch_timer_cpu_pm_notify(struct notifier_block *self,
> } else if (action == CPU_PM_ENTER_FAILED || action == CPU_PM_EXIT) {
> arch_timer_set_cntkctl(__this_cpu_read(saved_cntkctl));
>
> -#ifdef CONFIG_ARM64
> - if (cpu_have_named_feature(EVTSTRM))
> -#else
> - if (elf_hwcap & HWCAP_EVTSTRM)
> -#endif
> + if (arch_timer_have_evtstrm_feature())
> cpumask_set_cpu(smp_processor_id(), &evtstrm_available);
> }
> return NOTIFY_OK;
> --
> 2.21.0
>
--
Jazz is not dead, it just smells funny.
next prev parent reply other threads:[~2019-06-13 13:04 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-13 12:51 [PATCH v2] clocksource/arm_arch_timer: extract elf_hwcap use to arch-helper Andrew Murray
2019-06-13 12:51 ` Andrew Murray
2019-06-13 13:03 ` Marc Zyngier [this message]
2019-06-13 13:03 ` Marc Zyngier
2019-06-13 13:08 ` Daniel Lezcano
2019-06-13 13:08 ` 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=86imt9bps6.wl-marc.zyngier@arm.com \
--to=marc.zyngier@arm.com \
--cc=andrew.murray@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=mark.rutland@arm.com \
--cc=will.deacon@arm.com \
/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.