From: Beata Michalska <beata.michalska@arm.com>
To: Sasha Levin <sashal@kernel.org>
Cc: stable@vger.kernel.org, Vladimir Murzin <vladimir.murzin@arm.com>,
Will Deacon <will@kernel.org>
Subject: Re: [PATCH 6.12.y 1/2] arm64: errata: Factor out broken AMU const counter cap
Date: Tue, 6 Oct 2026 10:51:16 +0200 [thread overview]
Message-ID: <asS2hPO-vNg8juGW@arm.com> (raw)
In-Reply-To: <20261006002934.3618253-1-sashal@kernel.org>
LGTM. Thank you.
---
BR
Beata
On Mon, Oct 05, 2026 at 08:29:47PM -0400, Sasha Levin wrote:
> From: Beata Michalska <beata.michalska@arm.com>
>
> [ Upstream commit 573371caf7aea8582212da81dcead2c3f48fac4b ]
>
> Move the workaround from the erratum 2457168-specific cpucap to a generic
> broken AMU constant-counter one. This keeps the existing Cortex-A510
> handling unchanged while allowing other errata with similar AMU constant
> counter issue to share the capability bit and call sites.
>
> Signed-off-by: Beata Michalska <beata.michalska@arm.com>
> Reviewed-by: Vladimir Murzin <vladimir.murzin@arm.com>
> Signed-off-by: Will Deacon <will@kernel.org>
>
> Omit the comment-only update to the paired AMU counter reader, which
> is absent here. Retain the shared capability, CPU matching list, and
> the checks in the existing counter-read and frequency-invariance paths.
>
> Stable-dep-of: 45f730467987 ("arm64: errata: Add Cortex-A725 erratum 3821522 workaround")
> Signed-off-by: Sasha Levin <sashal@kernel.org>
> ---
> arch/arm64/Kconfig | 8 ++++++++
> arch/arm64/kernel/cpu_errata.c | 20 ++++++++++++++------
> arch/arm64/kernel/cpufeature.c | 2 +-
> arch/arm64/kernel/topology.c | 2 +-
> arch/arm64/tools/cpucaps | 2 +-
> 5 files changed, 25 insertions(+), 9 deletions(-)
>
> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> index 938bf2f96b1a8..d2901607b4f9e 100644
> --- a/arch/arm64/Kconfig
> +++ b/arch/arm64/Kconfig
> @@ -1023,9 +1023,17 @@ config ARM64_ERRATUM_1902691
>
> If unsure, say Y.
>
> +config ARM64_WORKAROUND_BROKEN_AMU_CONSTCNT
> + bool
> + # Targeting errata affecting AMEVCNTR01, the AMU constant counter.
> + # On affected CPUs the counter may not increment at the expected rate,
> + # making it unreliable. As a result, AMU users should treat it as
> + # unavailable rather than relying on misleading counter values.
> +
> config ARM64_ERRATUM_2457168
> bool "Cortex-A510: 2457168: workaround for AMEVCNTR01 incrementing incorrectly"
> depends on ARM64_AMU_EXTN
> + select ARM64_WORKAROUND_BROKEN_AMU_CONSTCNT
> default y
> help
> This option adds the workaround for ARM Cortex-A510 erratum 2457168.
> diff --git a/arch/arm64/kernel/cpu_errata.c b/arch/arm64/kernel/cpu_errata.c
> index 80e47d3e86af4..1dc2373fc1b9c 100644
> --- a/arch/arm64/kernel/cpu_errata.c
> +++ b/arch/arm64/kernel/cpu_errata.c
> @@ -259,6 +259,16 @@ static const struct arm64_cpu_capabilities arm64_repeat_tlbi_list[] = {
> };
> #endif
>
> +#ifdef CONFIG_ARM64_WORKAROUND_BROKEN_AMU_CONSTCNT
> +static const struct midr_range workaround_amu_constcnt_list[] = {
> +#ifdef CONFIG_ARM64_ERRATUM_2457168
> + /* Cortex-A510 r0p0-r1p1 */
> + MIDR_RANGE(MIDR_CORTEX_A510, 0, 0, 1, 1),
> +#endif
> + {}
> +};
> +#endif /* CONFIG_ARM64_WORKAROUND_BROKEN_AMU_CONSTCNT */
> +
> #ifdef CONFIG_CAVIUM_ERRATUM_23154
> static const struct midr_range cavium_erratum_23154_cpus[] = {
> MIDR_ALL_VERSIONS(MIDR_THUNDERX),
> @@ -750,14 +760,12 @@ const struct arm64_cpu_capabilities arm64_errata[] = {
> ERRATA_MIDR_REV_RANGE(MIDR_CORTEX_A510, 0, 0, 2)
> },
> #endif
> -#ifdef CONFIG_ARM64_ERRATUM_2457168
> +#ifdef CONFIG_ARM64_WORKAROUND_BROKEN_AMU_CONSTCNT
> {
> - .desc = "ARM erratum 2457168",
> - .capability = ARM64_WORKAROUND_2457168,
> + .desc = "Broken AMU AMEVCNTR01 (const counter)",
> + .capability = ARM64_WORKAROUND_BROKEN_AMU_CONSTCNT,
> .type = ARM64_CPUCAP_WEAK_LOCAL_CPU_FEATURE,
> -
> - /* Cortex-A510 r0p0-r1p1 */
> - CAP_MIDR_RANGE(MIDR_CORTEX_A510, 0, 0, 1, 1)
> + CAP_MIDR_RANGE_LIST(workaround_amu_constcnt_list)
> },
> #endif
> #ifdef CONFIG_ARM64_ERRATUM_2038923
> diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
> index 8246015fd2d73..ae4782ce523a6 100644
> --- a/arch/arm64/kernel/cpufeature.c
> +++ b/arch/arm64/kernel/cpufeature.c
> @@ -2070,7 +2070,7 @@ static void cpu_amu_enable(struct arm64_cpu_capabilities const *cap)
> cpumask_set_cpu(smp_processor_id(), &amu_cpus);
>
> /* 0 reference values signal broken/disabled counters */
> - if (!this_cpu_has_cap(ARM64_WORKAROUND_2457168))
> + if (!this_cpu_has_cap(ARM64_WORKAROUND_BROKEN_AMU_CONSTCNT))
> update_freq_counters_refs();
> }
> }
> diff --git a/arch/arm64/kernel/topology.c b/arch/arm64/kernel/topology.c
> index cb180684d10d5..d21b4e963f6b7 100644
> --- a/arch/arm64/kernel/topology.c
> +++ b/arch/arm64/kernel/topology.c
> @@ -271,7 +271,7 @@ static void cpu_read_constcnt(void *val)
> * the counter is disabled. A return value of 0 at counter read is
> * properly handled as an error case by the users of the counter.
> */
> - *(u64 *)val = this_cpu_has_cap(ARM64_WORKAROUND_2457168) ?
> + *(u64 *)val = this_cpu_has_cap(ARM64_WORKAROUND_BROKEN_AMU_CONSTCNT) ?
> 0UL : read_constcnt();
> }
>
> diff --git a/arch/arm64/tools/cpucaps b/arch/arm64/tools/cpucaps
> index eedb5acc21ed9..edb2e35e5e7ee 100644
> --- a/arch/arm64/tools/cpucaps
> +++ b/arch/arm64/tools/cpucaps
> @@ -85,7 +85,6 @@ WORKAROUND_1902691
> WORKAROUND_2038923
> WORKAROUND_2064142
> WORKAROUND_2077057
> -WORKAROUND_2457168
> WORKAROUND_2645198
> WORKAROUND_2658417
> WORKAROUND_AMPERE_AC03_CPU_38
> @@ -105,3 +104,4 @@ WORKAROUND_REPEAT_TLBI
> WORKAROUND_SPECULATIVE_AT
> WORKAROUND_SPECULATIVE_SSBS
> WORKAROUND_SPECULATIVE_UNPRIV_LOAD
> +WORKAROUND_BROKEN_AMU_CONSTCNT
> --
> 2.53.0
>
prev parent reply other threads:[~2026-10-06 8:51 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-05 10:24 FAILED: patch "[PATCH] arm64: errata: Add Cortex-A725 erratum 3821522 workaround" failed to apply to 6.12-stable tree gregkh
2026-10-06 0:29 ` [PATCH 6.12.y 1/2] arm64: errata: Factor out broken AMU const counter cap Sasha Levin
2026-10-06 0:29 ` [PATCH 6.12.y 2/2] arm64: errata: Add Cortex-A725 erratum 3821522 workaround Sasha Levin
2026-10-06 8:52 ` Beata Michalska
2026-10-06 8:51 ` Beata Michalska [this message]
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=asS2hPO-vNg8juGW@arm.com \
--to=beata.michalska@arm.com \
--cc=sashal@kernel.org \
--cc=stable@vger.kernel.org \
--cc=vladimir.murzin@arm.com \
--cc=will@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.