* [PATCH 0/2] arm64: Allow erratum 1418040 for late CPUs
@ 2020-07-28 9:21 Marc Zyngier
2020-07-28 9:21 ` [PATCH 1/2] arm64: Move handling of erratum 1418040 into C code Marc Zyngier
2020-07-28 9:21 ` [PATCH 2/2] arm64: Allow booting of late CPUs affected by erratum 1418040 Marc Zyngier
0 siblings, 2 replies; 10+ messages in thread
From: Marc Zyngier @ 2020-07-28 9:21 UTC (permalink / raw)
To: linux-arm-kernel
Cc: swboyd, Sai Prakash Ranjan, kernel-team, Suzuki K Poulose,
Catalin Marinas, dianders, Will Deacon
Erratum 1418040 currently prevents a late CPU from booting if none
of the early CPUs are affected by it. This is because the handling
is implemented as alternatives, and we have already got rid of them
by the time userspace onlines a new CPU.
A solution to this is to move everything into C code, and rely on
static keys instead. Once this is done, the feature can be allowed
for late CPUs.
Note that CPUs affected by 1418040 also tend to miss AArch32-EL1,
meaning they cannot be used as late CPUs when KVM is enabled and
that their sibblings have AArch32-EL1.
Marc Zyngier (2):
arm64: Move handling of erratum 1418040 into C code
arm64: Allow booting of late CPUs affected by erratum 1418040
arch/arm64/kernel/cpu_errata.c | 2 ++
arch/arm64/kernel/entry.S | 21 ---------------------
arch/arm64/kernel/process.c | 29 +++++++++++++++++++++++++++++
3 files changed, 31 insertions(+), 21 deletions(-)
--
2.27.0
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 1/2] arm64: Move handling of erratum 1418040 into C code
2020-07-28 9:21 [PATCH 0/2] arm64: Allow erratum 1418040 for late CPUs Marc Zyngier
@ 2020-07-28 9:21 ` Marc Zyngier
2020-07-28 11:04 ` Sai Prakash Ranjan
` (2 more replies)
2020-07-28 9:21 ` [PATCH 2/2] arm64: Allow booting of late CPUs affected by erratum 1418040 Marc Zyngier
1 sibling, 3 replies; 10+ messages in thread
From: Marc Zyngier @ 2020-07-28 9:21 UTC (permalink / raw)
To: linux-arm-kernel
Cc: swboyd, Sai Prakash Ranjan, kernel-team, Suzuki K Poulose,
Catalin Marinas, dianders, Will Deacon
Instead of dealing with erratum 1418040 on each entry and exit,
let's move the handling to __switch_to() instead, which has
several advantages:
- It can be applied when it matters (switching between 32 and 64
bit tasks).
- It is written in C (yay!)
- It can rely on static keys rather than alternatives
Signed-off-by: Marc Zyngier <maz@kernel.org>
---
arch/arm64/kernel/entry.S | 21 ---------------------
arch/arm64/kernel/process.c | 29 +++++++++++++++++++++++++++++
2 files changed, 29 insertions(+), 21 deletions(-)
diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S
index 35de8ba60e3d..44445d471442 100644
--- a/arch/arm64/kernel/entry.S
+++ b/arch/arm64/kernel/entry.S
@@ -169,19 +169,6 @@ alternative_cb_end
stp x28, x29, [sp, #16 * 14]
.if \el == 0
- .if \regsize == 32
- /*
- * If we're returning from a 32-bit task on a system affected by
- * 1418040 then re-enable userspace access to the virtual counter.
- */
-#ifdef CONFIG_ARM64_ERRATUM_1418040
-alternative_if ARM64_WORKAROUND_1418040
- mrs x0, cntkctl_el1
- orr x0, x0, #2 // ARCH_TIMER_USR_VCT_ACCESS_EN
- msr cntkctl_el1, x0
-alternative_else_nop_endif
-#endif
- .endif
clear_gp_regs
mrs x21, sp_el0
ldr_this_cpu tsk, __entry_task, x20
@@ -337,14 +324,6 @@ alternative_else_nop_endif
tst x22, #PSR_MODE32_BIT // native task?
b.eq 3f
-#ifdef CONFIG_ARM64_ERRATUM_1418040
-alternative_if ARM64_WORKAROUND_1418040
- mrs x0, cntkctl_el1
- bic x0, x0, #2 // ARCH_TIMER_USR_VCT_ACCESS_EN
- msr cntkctl_el1, x0
-alternative_else_nop_endif
-#endif
-
#ifdef CONFIG_ARM64_ERRATUM_845719
alternative_if ARM64_WORKAROUND_845719
#ifdef CONFIG_PID_IN_CONTEXTIDR
diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c
index 6089638c7d43..87c33f7c536b 100644
--- a/arch/arm64/kernel/process.c
+++ b/arch/arm64/kernel/process.c
@@ -515,6 +515,34 @@ static void entry_task_switch(struct task_struct *next)
__this_cpu_write(__entry_task, next);
}
+static void erratum_1418040_thread_switch(struct task_struct *prev,
+ struct task_struct *next)
+{
+ bool prev32, next32;
+ u64 val;
+
+ if (!(IS_ENABLED(CONFIG_ARM64_ERRATUM_1418040) &&
+ cpus_have_const_cap(ARM64_WORKAROUND_1418040)))
+ return;
+
+ prev32 = (!(prev->flags & PF_KTHREAD) &&
+ is_compat_thread(task_thread_info(prev)));
+ next32 = (!(next->flags & PF_KTHREAD) &&
+ is_compat_thread(task_thread_info(next)));
+
+ if (prev32 == next32)
+ return;
+
+ val = read_sysreg(cntkctl_el1);
+
+ if (prev32 & !next32)
+ val |= ARCH_TIMER_USR_VCT_ACCESS_EN;
+ else
+ val &= ~ARCH_TIMER_USR_VCT_ACCESS_EN;
+
+ write_sysreg(val, cntkctl_el1);
+}
+
/*
* Thread switching.
*/
@@ -530,6 +558,7 @@ __notrace_funcgraph struct task_struct *__switch_to(struct task_struct *prev,
entry_task_switch(next);
uao_thread_switch(next);
ssbs_thread_switch(next);
+ erratum_1418040_thread_switch(prev, next);
/*
* Complete any pending TLB or cache maintenance on this CPU in case
--
2.27.0
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/2] arm64: Allow booting of late CPUs affected by erratum 1418040
2020-07-28 9:21 [PATCH 0/2] arm64: Allow erratum 1418040 for late CPUs Marc Zyngier
2020-07-28 9:21 ` [PATCH 1/2] arm64: Move handling of erratum 1418040 into C code Marc Zyngier
@ 2020-07-28 9:21 ` Marc Zyngier
2020-07-28 11:05 ` Sai Prakash Ranjan
` (2 more replies)
1 sibling, 3 replies; 10+ messages in thread
From: Marc Zyngier @ 2020-07-28 9:21 UTC (permalink / raw)
To: linux-arm-kernel
Cc: swboyd, Sai Prakash Ranjan, kernel-team, Suzuki K Poulose,
Catalin Marinas, dianders, Will Deacon
As we can now switch from a system that isn't affected by 1418040
to a system that globally is affected, let's allow affected CPUs
to come in at a later time.
Signed-off-by: Marc Zyngier <maz@kernel.org>
---
arch/arm64/kernel/cpu_errata.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/arch/arm64/kernel/cpu_errata.c b/arch/arm64/kernel/cpu_errata.c
index 79728bfb5351..2c0b82db825b 100644
--- a/arch/arm64/kernel/cpu_errata.c
+++ b/arch/arm64/kernel/cpu_errata.c
@@ -910,6 +910,8 @@ const struct arm64_cpu_capabilities arm64_errata[] = {
.desc = "ARM erratum 1418040",
.capability = ARM64_WORKAROUND_1418040,
ERRATA_MIDR_RANGE_LIST(erratum_1418040_list),
+ .type = (ARM64_CPUCAP_SCOPE_LOCAL_CPU |
+ ARM64_CPUCAP_PERMITTED_FOR_LATE_CPU),
},
#endif
#ifdef CONFIG_ARM64_WORKAROUND_SPECULATIVE_AT
--
2.27.0
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] arm64: Move handling of erratum 1418040 into C code
2020-07-28 9:21 ` [PATCH 1/2] arm64: Move handling of erratum 1418040 into C code Marc Zyngier
@ 2020-07-28 11:04 ` Sai Prakash Ranjan
2020-07-28 20:04 ` Stephen Boyd
2020-07-29 17:12 ` Catalin Marinas
2 siblings, 0 replies; 10+ messages in thread
From: Sai Prakash Ranjan @ 2020-07-28 11:04 UTC (permalink / raw)
To: Marc Zyngier
Cc: swboyd, kernel-team, Suzuki K Poulose, Catalin Marinas, dianders,
Will Deacon, linux-arm-kernel
On 2020-07-28 14:51, Marc Zyngier wrote:
> Instead of dealing with erratum 1418040 on each entry and exit,
> let's move the handling to __switch_to() instead, which has
> several advantages:
>
> - It can be applied when it matters (switching between 32 and 64
> bit tasks).
> - It is written in C (yay!)
> - It can rely on static keys rather than alternatives
>
> Signed-off-by: Marc Zyngier <maz@kernel.org>
> ---
> arch/arm64/kernel/entry.S | 21 ---------------------
> arch/arm64/kernel/process.c | 29 +++++++++++++++++++++++++++++
> 2 files changed, 29 insertions(+), 21 deletions(-)
>
Thanks Marc, tested the series on SC7180 and SM8150 SoCs which are
affected by this erratum.
Tested-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a
member
of Code Aurora Forum, hosted by The Linux Foundation
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] arm64: Allow booting of late CPUs affected by erratum 1418040
2020-07-28 9:21 ` [PATCH 2/2] arm64: Allow booting of late CPUs affected by erratum 1418040 Marc Zyngier
@ 2020-07-28 11:05 ` Sai Prakash Ranjan
2020-07-28 20:04 ` Stephen Boyd
2020-07-29 9:34 ` Suzuki K Poulose
2 siblings, 0 replies; 10+ messages in thread
From: Sai Prakash Ranjan @ 2020-07-28 11:05 UTC (permalink / raw)
To: Marc Zyngier
Cc: swboyd, kernel-team, Suzuki K Poulose, Catalin Marinas, dianders,
Will Deacon, linux-arm-kernel
On 2020-07-28 14:51, Marc Zyngier wrote:
> As we can now switch from a system that isn't affected by 1418040
> to a system that globally is affected, let's allow affected CPUs
> to come in at a later time.
>
> Signed-off-by: Marc Zyngier <maz@kernel.org>
> ---
> arch/arm64/kernel/cpu_errata.c | 2 ++
> 1 file changed, 2 insertions(+)
>
Tested-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
Thanks,
Sai
--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a
member
of Code Aurora Forum, hosted by The Linux Foundation
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] arm64: Move handling of erratum 1418040 into C code
2020-07-28 9:21 ` [PATCH 1/2] arm64: Move handling of erratum 1418040 into C code Marc Zyngier
2020-07-28 11:04 ` Sai Prakash Ranjan
@ 2020-07-28 20:04 ` Stephen Boyd
2020-07-29 9:00 ` Marc Zyngier
2020-07-29 17:12 ` Catalin Marinas
2 siblings, 1 reply; 10+ messages in thread
From: Stephen Boyd @ 2020-07-28 20:04 UTC (permalink / raw)
To: Marc Zyngier, linux-arm-kernel
Cc: swboyd, Sai Prakash Ranjan, Will Deacon, Suzuki K Poulose,
Catalin Marinas, dianders, kernel-team
Quoting Marc Zyngier (2020-07-28 02:21:11)
> diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S
> index 35de8ba60e3d..44445d471442 100644
> --- a/arch/arm64/kernel/entry.S
> +++ b/arch/arm64/kernel/entry.S
> @@ -169,19 +169,6 @@ alternative_cb_end
> stp x28, x29, [sp, #16 * 14]
>
> .if \el == 0
> - .if \regsize == 32
> - /*
> - * If we're returning from a 32-bit task on a system affected by
> - * 1418040 then re-enable userspace access to the virtual counter.
> - */
Can this comment go above the function in C?
> -#ifdef CONFIG_ARM64_ERRATUM_1418040
> -alternative_if ARM64_WORKAROUND_1418040
> - mrs x0, cntkctl_el1
> - orr x0, x0, #2 // ARCH_TIMER_USR_VCT_ACCESS_EN
> - msr cntkctl_el1, x0
> -alternative_else_nop_endif
> -#endif
> - .endif
> clear_gp_regs
> mrs x21, sp_el0
> ldr_this_cpu tsk, __entry_task, x20
> @@ -337,14 +324,6 @@ alternative_else_nop_endif
> tst x22, #PSR_MODE32_BIT // native task?
> b.eq 3f
>
> -#ifdef CONFIG_ARM64_ERRATUM_1418040
> -alternative_if ARM64_WORKAROUND_1418040
> - mrs x0, cntkctl_el1
> - bic x0, x0, #2 // ARCH_TIMER_USR_VCT_ACCESS_EN
> - msr cntkctl_el1, x0
> -alternative_else_nop_endif
> -#endif
> -
> #ifdef CONFIG_ARM64_ERRATUM_845719
> alternative_if ARM64_WORKAROUND_845719
> #ifdef CONFIG_PID_IN_CONTEXTIDR
> diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c
> index 6089638c7d43..87c33f7c536b 100644
> --- a/arch/arm64/kernel/process.c
> +++ b/arch/arm64/kernel/process.c
> @@ -515,6 +515,34 @@ static void entry_task_switch(struct task_struct *next)
> __this_cpu_write(__entry_task, next);
> }
>
> +static void erratum_1418040_thread_switch(struct task_struct *prev,
Should it be marked __always_inline so that the cpus_have_const_cap()
check can avoid the branch to this function when there's nothing to do?
> + struct task_struct *next)
> +{
> + bool prev32, next32;
> + u64 val;
> +
> + if (!(IS_ENABLED(CONFIG_ARM64_ERRATUM_1418040) &&
> + cpus_have_const_cap(ARM64_WORKAROUND_1418040)))
> + return;
> +
> + prev32 = (!(prev->flags & PF_KTHREAD) &&
> + is_compat_thread(task_thread_info(prev)));
> + next32 = (!(next->flags & PF_KTHREAD) &&
> + is_compat_thread(task_thread_info(next)));
> +
> + if (prev32 == next32)
> + return;
> +
> + val = read_sysreg(cntkctl_el1);
> +
> + if (prev32 & !next32)
> + val |= ARCH_TIMER_USR_VCT_ACCESS_EN;
> + else
> + val &= ~ARCH_TIMER_USR_VCT_ACCESS_EN;
> +
> + write_sysreg(val, cntkctl_el1);
> +}
> +
> /*
> * Thread switching.
> */
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] arm64: Allow booting of late CPUs affected by erratum 1418040
2020-07-28 9:21 ` [PATCH 2/2] arm64: Allow booting of late CPUs affected by erratum 1418040 Marc Zyngier
2020-07-28 11:05 ` Sai Prakash Ranjan
@ 2020-07-28 20:04 ` Stephen Boyd
2020-07-29 9:34 ` Suzuki K Poulose
2 siblings, 0 replies; 10+ messages in thread
From: Stephen Boyd @ 2020-07-28 20:04 UTC (permalink / raw)
To: Marc Zyngier, linux-arm-kernel
Cc: swboyd, Sai Prakash Ranjan, Will Deacon, Suzuki K Poulose,
Catalin Marinas, dianders, kernel-team
Quoting Marc Zyngier (2020-07-28 02:21:12)
> As we can now switch from a system that isn't affected by 1418040
> to a system that globally is affected, let's allow affected CPUs
> to come in at a later time.
>
> Signed-off-by: Marc Zyngier <maz@kernel.org>
> ---
Reviewed-by: Stephen Boyd <swboyd@chromium.org>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] arm64: Move handling of erratum 1418040 into C code
2020-07-28 20:04 ` Stephen Boyd
@ 2020-07-29 9:00 ` Marc Zyngier
0 siblings, 0 replies; 10+ messages in thread
From: Marc Zyngier @ 2020-07-29 9:00 UTC (permalink / raw)
To: Stephen Boyd
Cc: swboyd, Sai Prakash Ranjan, Will Deacon, Suzuki K Poulose,
Catalin Marinas, dianders, kernel-team, linux-arm-kernel
Hi Stephen,
On 2020-07-28 21:04, Stephen Boyd wrote:
> Quoting Marc Zyngier (2020-07-28 02:21:11)
>> diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S
>> index 35de8ba60e3d..44445d471442 100644
>> --- a/arch/arm64/kernel/entry.S
>> +++ b/arch/arm64/kernel/entry.S
>> @@ -169,19 +169,6 @@ alternative_cb_end
>> stp x28, x29, [sp, #16 * 14]
>>
>> .if \el == 0
>> - .if \regsize == 32
>> - /*
>> - * If we're returning from a 32-bit task on a system affected
>> by
>> - * 1418040 then re-enable userspace access to the virtual
>> counter.
>> - */
>
> Can this comment go above the function in C?
It will have to be a slightly different comment, as the logic changes.
Something like:
/*
* ARM erratum 1418040 handling affecting the 32bit view of CNTVCT.
*
* Assuming the virtual counter is enabled at the beginning of times:
* - disable access when switching from a 64bit task to a 32bit task
* - enable access when switching from a 32bit task to a 64bit task
*/
>
>> -#ifdef CONFIG_ARM64_ERRATUM_1418040
>> -alternative_if ARM64_WORKAROUND_1418040
>> - mrs x0, cntkctl_el1
>> - orr x0, x0, #2 // ARCH_TIMER_USR_VCT_ACCESS_EN
>> - msr cntkctl_el1, x0
>> -alternative_else_nop_endif
>> -#endif
>> - .endif
>> clear_gp_regs
>> mrs x21, sp_el0
>> ldr_this_cpu tsk, __entry_task, x20
>> @@ -337,14 +324,6 @@ alternative_else_nop_endif
>> tst x22, #PSR_MODE32_BIT // native task?
>> b.eq 3f
>>
>> -#ifdef CONFIG_ARM64_ERRATUM_1418040
>> -alternative_if ARM64_WORKAROUND_1418040
>> - mrs x0, cntkctl_el1
>> - bic x0, x0, #2 //
>> ARCH_TIMER_USR_VCT_ACCESS_EN
>> - msr cntkctl_el1, x0
>> -alternative_else_nop_endif
>> -#endif
>> -
>> #ifdef CONFIG_ARM64_ERRATUM_845719
>> alternative_if ARM64_WORKAROUND_845719
>> #ifdef CONFIG_PID_IN_CONTEXTIDR
>> diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c
>> index 6089638c7d43..87c33f7c536b 100644
>> --- a/arch/arm64/kernel/process.c
>> +++ b/arch/arm64/kernel/process.c
>> @@ -515,6 +515,34 @@ static void entry_task_switch(struct task_struct
>> *next)
>> __this_cpu_write(__entry_task, next);
>> }
>>
>> +static void erratum_1418040_thread_switch(struct task_struct *prev,
>
> Should it be marked __always_inline so that the cpus_have_const_cap()
> check can avoid the branch to this function when there's nothing to do?
I'd expect the compiler to directly inline this (in my experience it
does, as with most of the other functions called from __switch_to()).
It probably doesn't hurt though, so I'll do that.
Thanks,
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
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] arm64: Allow booting of late CPUs affected by erratum 1418040
2020-07-28 9:21 ` [PATCH 2/2] arm64: Allow booting of late CPUs affected by erratum 1418040 Marc Zyngier
2020-07-28 11:05 ` Sai Prakash Ranjan
2020-07-28 20:04 ` Stephen Boyd
@ 2020-07-29 9:34 ` Suzuki K Poulose
2 siblings, 0 replies; 10+ messages in thread
From: Suzuki K Poulose @ 2020-07-29 9:34 UTC (permalink / raw)
To: maz, linux-arm-kernel
Cc: swboyd, saiprakash.ranjan, kernel-team, catalin.marinas, dianders, will
On 07/28/2020 10:21 AM, Marc Zyngier wrote:
> As we can now switch from a system that isn't affected by 1418040
> to a system that globally is affected, let's allow affected CPUs
> to come in at a later time.
>
> Signed-off-by: Marc Zyngier <maz@kernel.org>
> ---
> arch/arm64/kernel/cpu_errata.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/arch/arm64/kernel/cpu_errata.c b/arch/arm64/kernel/cpu_errata.c
> index 79728bfb5351..2c0b82db825b 100644
> --- a/arch/arm64/kernel/cpu_errata.c
> +++ b/arch/arm64/kernel/cpu_errata.c
> @@ -910,6 +910,8 @@ const struct arm64_cpu_capabilities arm64_errata[] = {
> .desc = "ARM erratum 1418040",
> .capability = ARM64_WORKAROUND_1418040,
> ERRATA_MIDR_RANGE_LIST(erratum_1418040_list),
> + .type = (ARM64_CPUCAP_SCOPE_LOCAL_CPU |
> + ARM64_CPUCAP_PERMITTED_FOR_LATE_CPU),
> },
> #endif
> #ifdef CONFIG_ARM64_WORKAROUND_SPECULATIVE_AT
>
Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] arm64: Move handling of erratum 1418040 into C code
2020-07-28 9:21 ` [PATCH 1/2] arm64: Move handling of erratum 1418040 into C code Marc Zyngier
2020-07-28 11:04 ` Sai Prakash Ranjan
2020-07-28 20:04 ` Stephen Boyd
@ 2020-07-29 17:12 ` Catalin Marinas
2 siblings, 0 replies; 10+ messages in thread
From: Catalin Marinas @ 2020-07-29 17:12 UTC (permalink / raw)
To: Marc Zyngier
Cc: swboyd, Sai Prakash Ranjan, Suzuki K Poulose, kernel-team,
dianders, Will Deacon, linux-arm-kernel
On Tue, Jul 28, 2020 at 10:21:11AM +0100, Marc Zyngier wrote:
> diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c
> index 6089638c7d43..87c33f7c536b 100644
> --- a/arch/arm64/kernel/process.c
> +++ b/arch/arm64/kernel/process.c
> @@ -515,6 +515,34 @@ static void entry_task_switch(struct task_struct *next)
> __this_cpu_write(__entry_task, next);
> }
>
> +static void erratum_1418040_thread_switch(struct task_struct *prev,
> + struct task_struct *next)
> +{
> + bool prev32, next32;
> + u64 val;
> +
> + if (!(IS_ENABLED(CONFIG_ARM64_ERRATUM_1418040) &&
> + cpus_have_const_cap(ARM64_WORKAROUND_1418040)))
> + return;
> +
> + prev32 = (!(prev->flags & PF_KTHREAD) &&
> + is_compat_thread(task_thread_info(prev)));
> + next32 = (!(next->flags & PF_KTHREAD) &&
> + is_compat_thread(task_thread_info(next)));
I don't think we need to test PF_KTHREAD. is_compat_thread() checks for
TIF_32BIT and we never set this on kernel threads (they are cloned from
kthreadd).
--
Catalin
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2020-07-29 17:13 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-28 9:21 [PATCH 0/2] arm64: Allow erratum 1418040 for late CPUs Marc Zyngier
2020-07-28 9:21 ` [PATCH 1/2] arm64: Move handling of erratum 1418040 into C code Marc Zyngier
2020-07-28 11:04 ` Sai Prakash Ranjan
2020-07-28 20:04 ` Stephen Boyd
2020-07-29 9:00 ` Marc Zyngier
2020-07-29 17:12 ` Catalin Marinas
2020-07-28 9:21 ` [PATCH 2/2] arm64: Allow booting of late CPUs affected by erratum 1418040 Marc Zyngier
2020-07-28 11:05 ` Sai Prakash Ranjan
2020-07-28 20:04 ` Stephen Boyd
2020-07-29 9:34 ` Suzuki K Poulose
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.