summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDiana Craciun <diana.craciun@nxp.com>2018-12-12 15:03:03 +0100
committerMichael Ellerman <mpe@ellerman.id.au>2018-12-20 12:59:03 +0100
commit98518c4d8728656db349f875fcbbc7c126d4c973 (patch)
treea0291c2161d8120adc257b786e2097160de54441
parentpowerpc/fsl: Fix spectre_v2 mitigations reporting (diff)
downloadlinux-98518c4d8728656db349f875fcbbc7c126d4c973.tar.xz
linux-98518c4d8728656db349f875fcbbc7c126d4c973.zip
powerpc/fsl: Emulate SPRN_BUCSR register
In order to flush the branch predictor the guest kernel performs writes to the BUCSR register which is hypervisor privilleged. However, the branch predictor is flushed at each KVM entry, so the branch predictor has been already flushed, so just return as soon as possible to guest. Signed-off-by: Diana Craciun <diana.craciun@nxp.com> [mpe: Tweak comment formatting] Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
-rw-r--r--arch/powerpc/kvm/e500_emulate.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/powerpc/kvm/e500_emulate.c b/arch/powerpc/kvm/e500_emulate.c
index 3f8189eb56ed..fde1de08b4d7 100644
--- a/arch/powerpc/kvm/e500_emulate.c
+++ b/arch/powerpc/kvm/e500_emulate.c
@@ -277,6 +277,13 @@ int kvmppc_core_emulate_mtspr_e500(struct kvm_vcpu *vcpu, int sprn, ulong spr_va
vcpu->arch.pwrmgtcr0 = spr_val;
break;
+ case SPRN_BUCSR:
+ /*
+ * If we are here, it means that we have already flushed the
+ * branch predictor, so just return to guest.
+ */
+ break;
+
/* extra exceptions */
#ifdef CONFIG_SPE_POSSIBLE
case SPRN_IVOR32: