From: David Daney <ddaney.cavm@gmail.com>
To: Robert Richter <robert.richter@cavium.com>
Cc: marc.zyngier@arm.com, linux@armlinux.org.uk,
catalin.marinas@arm.com, will.deacon@arm.com,
mark.rutland@arm.com, Matthias Brugger <mbrugger@suse.com>,
kvm@vger.kernel.org, suzuki.poulose@arm.com, zlim.lnx@gmail.com,
rkrcmar@redhat.com, david.daney@cavium.com, agraf@suse.de,
linux-kernel@vger.kernel.org, ard.biesheuvel@linaro.org,
lorenzo.pieralisi@arm.com, james.morse@arm.com,
dave.long@linaro.org, pbonzini@redhat.com,
kvmarm@lists.cs.columbia.edu, christoffer.dall@linaro.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH] arm64: Add workaround for Cavium erratum 26026
Date: Thu, 04 Aug 2016 14:40:48 -0700 [thread overview]
Message-ID: <57A3B660.4040309@gmail.com> (raw)
In-Reply-To: <20160804205707.GJ2151@rric.localdomain>
On 08/04/2016 01:57 PM, Robert Richter wrote:
> The patch below is on top of Matthias' patch series:
>
> arm64: Implement IPI based TLB invalidation
>
> The series is used to enable a workaround for Cavium ThunderX pass 1.x
> systems.
Where are the rest of the patches in the series? I would have expected
something like "[PATCH 1/X] arm64:..." with X being greater than one.
>
> -Robert
>
>
>
> From abb99ee83473d9ecffb4fdaae9c69435ca670bc8 Mon Sep 17 00:00:00 2001
> From: Robert Richter <rrichter@cavium.com>
> Date: Fri, 29 Jul 2016 09:40:04 +0200
> Subject: [PATCH] arm64: Add workaround for Cavium erratum 26026
>
> STX may return a wrong status value if the store was successful.
>
> This may happen on ThunderX T88 pass 1.x cpus if a broadcast TLBI is
> executed on another cpu in parallel to an STX. As a result atomic or
> non-blocking implementations can behave incorrectly. Use IPIs that
> call local TLBIs on other cpus to avoid this.
>
> Applies to ThunderX T88 pass 1.x cpus.
>
> Signed-off-by: Robert Richter <rrichter@cavium.com>
> ---
> Documentation/arm64/silicon-errata.txt | 1 +
> arch/arm64/Kconfig | 14 ++++++++++++++
> arch/arm64/kernel/cpu_errata.c | 8 ++++++++
> 3 files changed, 23 insertions(+)
>
> diff --git a/Documentation/arm64/silicon-errata.txt b/Documentation/arm64/silicon-errata.txt
> index 4da60b463995..0d870d934528 100644
> --- a/Documentation/arm64/silicon-errata.txt
> +++ b/Documentation/arm64/silicon-errata.txt
> @@ -58,5 +58,6 @@ stable kernels.
> | Cavium | ThunderX ITS | #22375, #24313 | CAVIUM_ERRATUM_22375 |
> | Cavium | ThunderX ITS | #23144 | CAVIUM_ERRATUM_23144 |
> | Cavium | ThunderX GICv3 | #23154 | CAVIUM_ERRATUM_23154 |
> +| Cavium | ThunderX Core | #26026 | CAVIUM_ERRATUM_26026 |
> | Cavium | ThunderX Core | #27456 | CAVIUM_ERRATUM_27456 |
> | Cavium | ThunderX SMMUv2 | #27704 | N/A |
> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> index 5a0a691d4220..8cbd9043ec6f 100644
> --- a/arch/arm64/Kconfig
> +++ b/arch/arm64/Kconfig
> @@ -457,6 +457,20 @@ config CAVIUM_ERRATUM_23154
>
> If unsure, say Y.
>
> +config CAVIUM_ERRATUM_26026
> + bool "Cavium erratum 26026: STX may return wrong status value"
> + default y
> + help
> + STX may return a wrong status value if the store was
> + successful. This may happen on ThunderX T88 pass 1.x cpus if
> + a broadcast TLBI is executed on another cpu in parallel to
> + an STX. As a result atomic or non-blocking implementations
> + can behave incorrectly. Use IPIs that call local TLBIs on
> + other cpus to avoid this.
> + Applies to ThunderX T88 pass 1.x cpus.
> +
> + If unsure, say Y.
> +
> config CAVIUM_ERRATUM_27456
> bool "Cavium erratum 27456: Broadcast TLBI instructions may cause icache corruption"
> default y
> diff --git a/arch/arm64/kernel/cpu_errata.c b/arch/arm64/kernel/cpu_errata.c
> index af716b65110d..1e1753a6408e 100644
> --- a/arch/arm64/kernel/cpu_errata.c
> +++ b/arch/arm64/kernel/cpu_errata.c
> @@ -90,6 +90,14 @@ const struct arm64_cpu_capabilities arm64_errata[] = {
> MIDR_RANGE(MIDR_THUNDERX, 0x00, 0x01),
> },
> #endif
> +#ifdef CONFIG_CAVIUM_ERRATUM_26026
> + {
> + /* Cavium ThunderX, pass 1.x */
> + .desc = "Cavium erratum 26026",
> + .capability = ARM64_HAS_NO_BCAST_TLBI,
> + MIDR_RANGE(MIDR_THUNDERX, 0x00, 0x01),
> + },
> +#endif
> #ifdef CONFIG_CAVIUM_ERRATUM_27456
> {
> /* Cavium ThunderX, T88 pass 1.x - 2.1 */
>
WARNING: multiple messages have this Message-ID (diff)
From: ddaney.cavm@gmail.com (David Daney)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] arm64: Add workaround for Cavium erratum 26026
Date: Thu, 04 Aug 2016 14:40:48 -0700 [thread overview]
Message-ID: <57A3B660.4040309@gmail.com> (raw)
In-Reply-To: <20160804205707.GJ2151@rric.localdomain>
On 08/04/2016 01:57 PM, Robert Richter wrote:
> The patch below is on top of Matthias' patch series:
>
> arm64: Implement IPI based TLB invalidation
>
> The series is used to enable a workaround for Cavium ThunderX pass 1.x
> systems.
Where are the rest of the patches in the series? I would have expected
something like "[PATCH 1/X] arm64:..." with X being greater than one.
>
> -Robert
>
>
>
> From abb99ee83473d9ecffb4fdaae9c69435ca670bc8 Mon Sep 17 00:00:00 2001
> From: Robert Richter <rrichter@cavium.com>
> Date: Fri, 29 Jul 2016 09:40:04 +0200
> Subject: [PATCH] arm64: Add workaround for Cavium erratum 26026
>
> STX may return a wrong status value if the store was successful.
>
> This may happen on ThunderX T88 pass 1.x cpus if a broadcast TLBI is
> executed on another cpu in parallel to an STX. As a result atomic or
> non-blocking implementations can behave incorrectly. Use IPIs that
> call local TLBIs on other cpus to avoid this.
>
> Applies to ThunderX T88 pass 1.x cpus.
>
> Signed-off-by: Robert Richter <rrichter@cavium.com>
> ---
> Documentation/arm64/silicon-errata.txt | 1 +
> arch/arm64/Kconfig | 14 ++++++++++++++
> arch/arm64/kernel/cpu_errata.c | 8 ++++++++
> 3 files changed, 23 insertions(+)
>
> diff --git a/Documentation/arm64/silicon-errata.txt b/Documentation/arm64/silicon-errata.txt
> index 4da60b463995..0d870d934528 100644
> --- a/Documentation/arm64/silicon-errata.txt
> +++ b/Documentation/arm64/silicon-errata.txt
> @@ -58,5 +58,6 @@ stable kernels.
> | Cavium | ThunderX ITS | #22375, #24313 | CAVIUM_ERRATUM_22375 |
> | Cavium | ThunderX ITS | #23144 | CAVIUM_ERRATUM_23144 |
> | Cavium | ThunderX GICv3 | #23154 | CAVIUM_ERRATUM_23154 |
> +| Cavium | ThunderX Core | #26026 | CAVIUM_ERRATUM_26026 |
> | Cavium | ThunderX Core | #27456 | CAVIUM_ERRATUM_27456 |
> | Cavium | ThunderX SMMUv2 | #27704 | N/A |
> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> index 5a0a691d4220..8cbd9043ec6f 100644
> --- a/arch/arm64/Kconfig
> +++ b/arch/arm64/Kconfig
> @@ -457,6 +457,20 @@ config CAVIUM_ERRATUM_23154
>
> If unsure, say Y.
>
> +config CAVIUM_ERRATUM_26026
> + bool "Cavium erratum 26026: STX may return wrong status value"
> + default y
> + help
> + STX may return a wrong status value if the store was
> + successful. This may happen on ThunderX T88 pass 1.x cpus if
> + a broadcast TLBI is executed on another cpu in parallel to
> + an STX. As a result atomic or non-blocking implementations
> + can behave incorrectly. Use IPIs that call local TLBIs on
> + other cpus to avoid this.
> + Applies to ThunderX T88 pass 1.x cpus.
> +
> + If unsure, say Y.
> +
> config CAVIUM_ERRATUM_27456
> bool "Cavium erratum 27456: Broadcast TLBI instructions may cause icache corruption"
> default y
> diff --git a/arch/arm64/kernel/cpu_errata.c b/arch/arm64/kernel/cpu_errata.c
> index af716b65110d..1e1753a6408e 100644
> --- a/arch/arm64/kernel/cpu_errata.c
> +++ b/arch/arm64/kernel/cpu_errata.c
> @@ -90,6 +90,14 @@ const struct arm64_cpu_capabilities arm64_errata[] = {
> MIDR_RANGE(MIDR_THUNDERX, 0x00, 0x01),
> },
> #endif
> +#ifdef CONFIG_CAVIUM_ERRATUM_26026
> + {
> + /* Cavium ThunderX, pass 1.x */
> + .desc = "Cavium erratum 26026",
> + .capability = ARM64_HAS_NO_BCAST_TLBI,
> + MIDR_RANGE(MIDR_THUNDERX, 0x00, 0x01),
> + },
> +#endif
> #ifdef CONFIG_CAVIUM_ERRATUM_27456
> {
> /* Cavium ThunderX, T88 pass 1.x - 2.1 */
>
next prev parent reply other threads:[~2016-08-04 21:40 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-04 9:15 arm64: Implement IPI based TLB invalidation Matthias Brugger
2016-08-04 9:15 ` Matthias Brugger
2016-08-04 9:15 ` [PATCH 1/4] arm64: insn: Do not disable irqs during patching Matthias Brugger
2016-08-04 9:15 ` Matthias Brugger
2016-08-04 9:15 ` [PATCH 2/4] arm64: Implement IPI based TLB invalidation Matthias Brugger
2016-08-04 9:15 ` Matthias Brugger
2016-08-04 9:15 ` [PATCH 3/4] KVM: arm/arm64: Check for broadcast TLBI support Matthias Brugger
2016-08-04 9:15 ` Matthias Brugger
2016-08-06 7:22 ` kbuild test robot
2016-08-06 7:22 ` kbuild test robot
2016-08-06 7:22 ` kbuild test robot
2016-08-06 7:22 ` kbuild test robot
2016-08-04 9:15 ` [PATCH 4/4] arm64: hibernate: " Matthias Brugger
2016-08-04 9:15 ` Matthias Brugger
2016-08-04 20:57 ` [PATCH] arm64: Add workaround for Cavium erratum 26026 Robert Richter
2016-08-04 20:57 ` Robert Richter
2016-08-04 20:57 ` Robert Richter
2016-08-04 20:57 ` Robert Richter
2016-08-04 21:40 ` David Daney [this message]
2016-08-04 21:40 ` David Daney
2016-08-05 7:00 ` Robert Richter
2016-08-05 7:00 ` Robert Richter
2016-08-05 7:00 ` Robert Richter
2016-08-05 16:37 ` David Daney
2016-08-05 16:37 ` David Daney
2016-08-05 16:37 ` David Daney
2016-08-05 2:35 ` kbuild test robot
2016-08-05 2:35 ` kbuild test robot
2016-08-05 2:35 ` kbuild test robot
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=57A3B660.4040309@gmail.com \
--to=ddaney.cavm@gmail.com \
--cc=agraf@suse.de \
--cc=ard.biesheuvel@linaro.org \
--cc=catalin.marinas@arm.com \
--cc=christoffer.dall@linaro.org \
--cc=dave.long@linaro.org \
--cc=david.daney@cavium.com \
--cc=james.morse@arm.com \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=lorenzo.pieralisi@arm.com \
--cc=marc.zyngier@arm.com \
--cc=mark.rutland@arm.com \
--cc=mbrugger@suse.com \
--cc=pbonzini@redhat.com \
--cc=rkrcmar@redhat.com \
--cc=robert.richter@cavium.com \
--cc=suzuki.poulose@arm.com \
--cc=will.deacon@arm.com \
--cc=zlim.lnx@gmail.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.