| From ae3915adb5e544247519546df1411b596e8d6556 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 16 Jul 2021 12:43:09 +1000 |
| Subject: KVM: PPC: Book3S: Fix CONFIG_TRANSACTIONAL_MEM=n crash |
| |
| From: Nicholas Piggin <npiggin@gmail.com> |
| |
| [ Upstream commit bd31ecf44b8e18ccb1e5f6b50f85de6922a60de3 ] |
| |
| When running CPU_FTR_P9_TM_HV_ASSIST, HFSCR[TM] is set for the guest |
| even if the host has CONFIG_TRANSACTIONAL_MEM=n, which causes it to be |
| unprepared to handle guest exits while transactional. |
| |
| Normal guests don't have a problem because the HTM capability will not |
| be advertised, but a rogue or buggy one could crash the host. |
| |
| Fixes: 4bb3c7a0208f ("KVM: PPC: Book3S HV: Work around transactional memory bugs in POWER9") |
| Reported-by: Alexey Kardashevskiy <aik@ozlabs.ru> |
| Signed-off-by: Nicholas Piggin <npiggin@gmail.com> |
| Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> |
| Link: https://lore.kernel.org/r/20210716024310.164448-1-npiggin@gmail.com |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| arch/powerpc/kvm/book3s_hv.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c |
| index 67cc164c4ac1..395f98158e81 100644 |
| --- a/arch/powerpc/kvm/book3s_hv.c |
| +++ b/arch/powerpc/kvm/book3s_hv.c |
| @@ -2445,8 +2445,10 @@ static int kvmppc_core_vcpu_create_hv(struct kvm_vcpu *vcpu) |
| HFSCR_DSCR | HFSCR_VECVSX | HFSCR_FP | HFSCR_PREFIX; |
| if (cpu_has_feature(CPU_FTR_HVMODE)) { |
| vcpu->arch.hfscr &= mfspr(SPRN_HFSCR); |
| +#ifdef CONFIG_PPC_TRANSACTIONAL_MEM |
| if (cpu_has_feature(CPU_FTR_P9_TM_HV_ASSIST)) |
| vcpu->arch.hfscr |= HFSCR_TM; |
| +#endif |
| } |
| if (cpu_has_feature(CPU_FTR_TM_COMP)) |
| vcpu->arch.hfscr |= HFSCR_TM; |
| -- |
| 2.30.2 |
| |