Message ID | 1498590564-11306-1-git-send-email-leitao@debian.org |
---|---|
State | New |
Headers | show |
On Tue, Jun 27, 2017 at 04:09:24PM -0300, Breno Leitao wrote: > From: Michael Neuling <mikey@neuling.org> > > BugLink: https://bugs.launchpad.net/ubuntu/+bug/1700819 > > On P9 (Nimbus) DD2 and later, in radix mode, the move to the PID > register will implicitly invalidate the user space ERAT entries > and leave the kernel ones alone. Thus the only thing needed is > an isync() to synchronize this with subsequent uaccess's > > Signed-off-by: Michael Neuling <mikey@neuling.org> > Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> > Signed-off-by: Breno Leitao <leitao@debian.org> Note to whoever applies this, this is now commit 74e27c6af56fe6898c3c8c451595746a992f0f0f in linux-next, so it can be applied as a cherry-pick and not a sauce patch. Acked-by: Seth Forshee <seth.forshee@canonical.com> Also cherry picked from linux-next to artful/master-next and unstable/master. Thanks!
On 29.06.2017 23:07, Seth Forshee wrote: > On Tue, Jun 27, 2017 at 04:09:24PM -0300, Breno Leitao wrote: >> From: Michael Neuling <mikey@neuling.org> >> >> BugLink: https://bugs.launchpad.net/ubuntu/+bug/1700819 >> >> On P9 (Nimbus) DD2 and later, in radix mode, the move to the PID >> register will implicitly invalidate the user space ERAT entries >> and leave the kernel ones alone. Thus the only thing needed is >> an isync() to synchronize this with subsequent uaccess's >> >> Signed-off-by: Michael Neuling <mikey@neuling.org> >> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> >> Signed-off-by: Breno Leitao <leitao@debian.org> > > Note to whoever applies this, this is now commit > 74e27c6af56fe6898c3c8c451595746a992f0f0f in linux-next, so it can be > applied as a cherry-pick and not a sauce patch. > > Acked-by: Seth Forshee <seth.forshee@canonical.com> Also ACK from me but with the additional note that this now is upstream (same SHA1) and different (was the same on next) commit msg: "powerpc: Only do ERAT invalidate on radix context switch on P9 DD1" -Stefan > > Also cherry picked from linux-next to artful/master-next and > unstable/master. Thanks! > >
Applied to zesty master-next branch, as a cherry-pick of the upstream commit. Thanks. Cascardo.
diff --git a/arch/powerpc/mm/mmu_context_book3s64.c b/arch/powerpc/mm/mmu_context_book3s64.c index f6976b783b89..371b20f9de95 100644 --- a/arch/powerpc/mm/mmu_context_book3s64.c +++ b/arch/powerpc/mm/mmu_context_book3s64.c @@ -182,10 +182,15 @@ void destroy_context(struct mm_struct *mm) #ifdef CONFIG_PPC_RADIX_MMU void radix__switch_mmu_context(struct mm_struct *prev, struct mm_struct *next) { - asm volatile("isync": : :"memory"); - mtspr(SPRN_PID, next->context.id); - asm volatile("isync \n" - PPC_SLBIA(0x7) - : : :"memory"); + + if (cpu_has_feature(CPU_FTR_POWER9_DD1)) { + isync(); + mtspr(SPRN_PID, next->context.id); + isync(); + asm volatile(PPC_INVALIDATE_ERAT : : :"memory"); + } else { + mtspr(SPRN_PID, next->context.id); + isync(); + } } #endif