All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marc Zyngier <maz@kernel.org>
To: dann frazier <dann.frazier@canonical.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>,
	Will Deacon <will@kernel.org>,
	Suzuki K Poulose <suzuki.poulose@arm.com>,
	Mark Brown <broonie@kernel.org>,
	linux-arm-kernel@lists.infradead.org,
	Mark Rutland <mark.rutland@arm.com>
Subject: Re: [PATCH] arm64: Restore forced disabling of KPTI on ThunderX
Date: Wed, 22 Sep 2021 19:59:59 +0100	[thread overview]
Message-ID: <874kacv3kg.wl-maz@kernel.org> (raw)
In-Reply-To: <20210922135924.3109291-1-dann.frazier@canonical.com>

On Wed, 22 Sep 2021 14:59:24 +0100,
dann frazier <dann.frazier@canonical.com> wrote:
> 
> A noted side-effect of commit 0c6c2d3615ef ("arm64: Generate cpucaps.h")
> is that cpucaps are now sorted, changing the enumeration order. This
> assumed no dependencies between cpucaps, which turned out not to be true
> in one case. UNMAP_KERNEL_AT_EL0 currently needs to be processed after
> WORKAROUND_CAVIUM_27456. ThunderX systems are incompatible with KPTI, so
> unmap_kernel_at_el0() bails if WORKAROUND_CAVIUM_27456 is set. But because
> of the sorting, WORKAROUND_CAVIUM_27456 will not yet have been considered
> when unmap_kernel_at_el0() checks for it, so the kernel tries to
> run w/ KPTI - and quickly falls over.
> 
> Because all ThunderX implementations have homogeneous CPUs, we can remove
> this dependency by just checking the current CPU for the erratum.
> 
> Fixes: 0c6c2d3615ef ("arm64: Generate cpucaps.h")
> Suggested-by: Suzuki K Poulose <suzuki.poulose@arm.com>
> Cc: stable@vger.kernel.org # 5.13+
> Signed-off-by: dann frazier <dann.frazier@canonical.com>
> ---
>  arch/arm64/kernel/cpufeature.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
> index f8a3067d10c6..7275b49034f3 100644
> --- a/arch/arm64/kernel/cpufeature.c
> +++ b/arch/arm64/kernel/cpufeature.c
> @@ -1528,7 +1528,7 @@ static bool unmap_kernel_at_el0(const struct arm64_cpu_capabilities *entry,
>  	 * ThunderX leads to apparent I-cache corruption of kernel text, which
>  	 * ends as well as you might imagine. Don't even try.
>  	 */
> -	if (cpus_have_const_cap(ARM64_WORKAROUND_CAVIUM_27456)) {
> +	if (this_cpu_has_cap(ARM64_WORKAROUND_CAVIUM_27456)) {
>  		str = "ARM64_WORKAROUND_CAVIUM_27456";
>  		__kpti_forced = -1;
>  	}

Ouch, nice catch. Hopefully, nobody will build a big-little system
using TX1 in this instance of the universe.

Acked-by: Marc Zyngier <maz@kernel.org>

	M.

-- 
Without deviation from the norm, progress is not possible.

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

  parent reply	other threads:[~2021-09-22 19:02 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-22 13:59 [PATCH] arm64: Restore forced disabling of KPTI on ThunderX dann frazier
2021-09-22 14:11 ` Mark Brown
2021-09-22 18:59 ` Marc Zyngier [this message]
2021-09-23  9:41 ` Suzuki K Poulose
2021-09-23 14:45   ` dann frazier

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=874kacv3kg.wl-maz@kernel.org \
    --to=maz@kernel.org \
    --cc=broonie@kernel.org \
    --cc=catalin.marinas@arm.com \
    --cc=dann.frazier@canonical.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=mark.rutland@arm.com \
    --cc=suzuki.poulose@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.