]> git.baikalelectronics.ru Git - kernel.git/commit
KVM: PPC: Book3S HV: Fix TLB management on SMT8 POWER9 and POWER10 processors
authorSuraj Jitindar Singh <sjitindarsingh@gmail.com>
Wed, 2 Jun 2021 04:04:41 +0000 (14:04 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Sun, 20 Jun 2021 23:22:34 +0000 (09:22 +1000)
commit138b96c922bceba78eb2f76106c858b0e1740a60
tree96646e55740a14f82c68b88bd399c74ec4b25b53
parent1f111b3d426109513fa2ae14364f8b46210c526e
KVM: PPC: Book3S HV: Fix TLB management on SMT8 POWER9 and POWER10 processors

The POWER9 vCPU TLB management code assumes all threads in a core share
a TLB, and that TLBIEL execued by one thread will invalidate TLBs for
all threads. This is not the case for SMT8 capable POWER9 and POWER10
(big core) processors, where the TLB is split between groups of threads.
This results in TLB multi-hits, random data corruption, etc.

Fix this by introducing cpu_first_tlb_thread_sibling etc., to determine
which siblings share TLBs, and use that in the guest TLB flushing code.

[npiggin@gmail.com: add changelog and comment]

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Fabiano Rosas <farosas@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20210602040441.3984352-1-npiggin@gmail.com
arch/powerpc/include/asm/cputhreads.h
arch/powerpc/kvm/book3s_hv.c
arch/powerpc/kvm/book3s_hv_builtin.c
arch/powerpc/kvm/book3s_hv_rm_mmu.c