All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marc Zyngier <maz@kernel.org>
To: Will Deacon <will@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>,
	Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>,
	Suzuki Poulose <suzuki.poulose@arm.com>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Stephen Boyd <swboyd@chromium.org>,
	kernel-team@android.com, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH] arm64: errata: Fix handling of 1418040 with late CPU onlining
Date: Fri, 06 Nov 2020 12:15:34 +0000	[thread overview]
Message-ID: <0df3bbc4d9060dbba49ba120d9d88e88@kernel.org> (raw)
In-Reply-To: <20201106114952.10032-1-will@kernel.org>

On 2020-11-06 11:49, Will Deacon wrote:
> In a surprising turn of events, it transpires that CPU capabilities
> configured as ARM64_CPUCAP_WEAK_LOCAL_CPU_FEATURE are never set as the
> result of late-onlining. Therefore our handling of erratum 1418040 does
> not get activated if it is not required by any of the boot CPUs, even
> though we allow late-onlining of an affected CPU.
> 
> In order to get things working again, replace the cpus_have_const_cap()
> invocation with an explicit check for the current CPU using
> this_cpu_has_cap().
> 
> Cc: Marc Zyngier <maz@kernel.org>
> Cc: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
> Cc: Stephen Boyd <swboyd@chromium.org>
> Cc: Catalin Marinas <catalin.marinas@arm.com>
> Cc: Mark Rutland <mark.rutland@arm.com>
> Cc: Suzuki Poulose <suzuki.poulose@arm.com>
> Signed-off-by: Will Deacon <will@kernel.org>
> ---
> 
> Found by code inspection and compile-tested only, so I would really
> appreciate a second look.
> 
>  arch/arm64/include/asm/cpufeature.h | 2 ++
>  arch/arm64/kernel/process.c         | 5 ++---
>  2 files changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/arm64/include/asm/cpufeature.h
> b/arch/arm64/include/asm/cpufeature.h
> index f7e7144af174..c59c16a6ea8b 100644
> --- a/arch/arm64/include/asm/cpufeature.h
> +++ b/arch/arm64/include/asm/cpufeature.h
> @@ -268,6 +268,8 @@ extern struct arm64_ftr_reg arm64_ftr_reg_ctrel0;
>  /*
>   * CPU feature detected at boot time based on feature of one or more 
> CPUs.
>   * All possible conflicts for a late CPU are ignored.
> + * NOTE: this means that a late CPU with the feature will *not* cause 
> the
> + * capability to be advertised by cpus_have_*cap()!
>   */
>  #define ARM64_CPUCAP_WEAK_LOCAL_CPU_FEATURE		\
>  	(ARM64_CPUCAP_SCOPE_LOCAL_CPU		|	\
> diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c
> index 4784011cecac..a47a40ec6ad9 100644
> --- a/arch/arm64/kernel/process.c
> +++ b/arch/arm64/kernel/process.c
> @@ -522,14 +522,13 @@ static void erratum_1418040_thread_switch(struct
> task_struct *prev,
>  	bool prev32, next32;
>  	u64 val;
> 
> -	if (!(IS_ENABLED(CONFIG_ARM64_ERRATUM_1418040) &&
> -	      cpus_have_const_cap(ARM64_WORKAROUND_1418040)))
> +	if (!IS_ENABLED(CONFIG_ARM64_ERRATUM_1418040))
>  		return;
> 
>  	prev32 = is_compat_thread(task_thread_info(prev));
>  	next32 = is_compat_thread(task_thread_info(next));
> 
> -	if (prev32 == next32)
> +	if (prev32 == next32 || !this_cpu_has_cap(ARM64_WORKAROUND_1418040))
>  		return;

It is not going to be cheap to switch between 32 and 64bit.
Hopefully it doesn't happen too often... :-(.

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

         M.
-- 
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

  reply	other threads:[~2020-11-06 12:16 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-06 11:49 [PATCH] arm64: errata: Fix handling of 1418040 with late CPU onlining Will Deacon
2020-11-06 12:15 ` Marc Zyngier [this message]
2020-11-06 12:18 ` Suzuki K Poulose
2020-11-06 12:28   ` Will Deacon
2020-11-06 12:44   ` Catalin Marinas
2020-11-10 10:39     ` Suzuki K Poulose
2020-11-10 12:05       ` Catalin Marinas
2020-11-10 12:14         ` Suzuki K Poulose

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=0df3bbc4d9060dbba49ba120d9d88e88@kernel.org \
    --to=maz@kernel.org \
    --cc=catalin.marinas@arm.com \
    --cc=kernel-team@android.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=mark.rutland@arm.com \
    --cc=saiprakash.ranjan@codeaurora.org \
    --cc=suzuki.poulose@arm.com \
    --cc=swboyd@chromium.org \
    --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.