| From c8c405cdb8388a19ea45e7d1de8020e074432737 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 14 Sep 2020 14:52:17 +1000 |
| Subject: powerpc: select ARCH_WANT_IRQS_OFF_ACTIVATE_MM |
| |
| From: Nicholas Piggin <npiggin@gmail.com> |
| |
| [ Upstream commit 66acd46080bd9e5ad2be4b0eb1d498d5145d058e ] |
| |
| powerpc uses IPIs in some situations to switch a kernel thread away |
| from a lazy tlb mm, which is subject to the TLB flushing race |
| described in the changelog introducing ARCH_WANT_IRQS_OFF_ACTIVATE_MM. |
| |
| Signed-off-by: Nicholas Piggin <npiggin@gmail.com> |
| Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> |
| Link: https://lore.kernel.org/r/20200914045219.3736466-3-npiggin@gmail.com |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| arch/powerpc/Kconfig | 1 + |
| arch/powerpc/include/asm/mmu_context.h | 2 +- |
| 2 files changed, 2 insertions(+), 1 deletion(-) |
| |
| diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig |
| index 2b15b4870565d..857b258de8aa5 100644 |
| --- a/arch/powerpc/Kconfig |
| +++ b/arch/powerpc/Kconfig |
| @@ -148,6 +148,7 @@ config PPC |
| select ARCH_USE_QUEUED_RWLOCKS if PPC_QUEUED_SPINLOCKS |
| select ARCH_USE_QUEUED_SPINLOCKS if PPC_QUEUED_SPINLOCKS |
| select ARCH_WANT_IPC_PARSE_VERSION |
| + select ARCH_WANT_IRQS_OFF_ACTIVATE_MM |
| select ARCH_WEAK_RELEASE_ACQUIRE |
| select BINFMT_ELF |
| select BUILDTIME_TABLE_SORT |
| diff --git a/arch/powerpc/include/asm/mmu_context.h b/arch/powerpc/include/asm/mmu_context.h |
| index 7f3658a973846..e02aa793420b8 100644 |
| --- a/arch/powerpc/include/asm/mmu_context.h |
| +++ b/arch/powerpc/include/asm/mmu_context.h |
| @@ -244,7 +244,7 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, |
| */ |
| static inline void activate_mm(struct mm_struct *prev, struct mm_struct *next) |
| { |
| - switch_mm(prev, next, current); |
| + switch_mm_irqs_off(prev, next, current); |
| } |
| |
| /* We don't currently use enter_lazy_tlb() for anything */ |
| -- |
| 2.27.0 |
| |