diff options
author | Marc Zyngier <maz@kernel.org> | 2021-10-13 13:03:46 +0100 |
---|---|---|
committer | Marc Zyngier <maz@kernel.org> | 2021-10-18 16:57:09 +0100 |
commit | 07305590114af81817148d181f1eb0af294e40d6 (patch) | |
tree | 95bd0a4987ec46ed4d88c6862741fd6082c9a609 /arch/arm64/kvm/hyp/nvhe/switch.c | |
parent | 0c7639cc838263b6e38b3af76755d574f15cdf41 (diff) | |
download | linux-stable-07305590114af81817148d181f1eb0af294e40d6.tar.gz linux-stable-07305590114af81817148d181f1eb0af294e40d6.tar.bz2 linux-stable-07305590114af81817148d181f1eb0af294e40d6.zip |
KVM: arm64: pkvm: Give priority to standard traps over pvm handling
Checking for pvm handling first means that we cannot handle ptrauth
traps or apply any of the workarounds (GICv3 or TX2 #219).
Flip the order around.
Signed-off-by: Marc Zyngier <maz@kernel.org>
Reviewed-by: Fuad Tabba <tabba@google.com>
Tested-by: Fuad Tabba <tabba@google.com>
Link: https://lore.kernel.org/r/20211013120346.2926621-12-maz@kernel.org
Diffstat (limited to 'arch/arm64/kvm/hyp/nvhe/switch.c')
-rw-r--r-- | arch/arm64/kvm/hyp/nvhe/switch.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/arch/arm64/kvm/hyp/nvhe/switch.c b/arch/arm64/kvm/hyp/nvhe/switch.c index 50c7d48e0fa0..c0e3fed26d93 100644 --- a/arch/arm64/kvm/hyp/nvhe/switch.c +++ b/arch/arm64/kvm/hyp/nvhe/switch.c @@ -167,10 +167,13 @@ static void __pmu_switch_to_host(struct kvm_cpu_context *host_ctxt) */ static bool kvm_handle_pvm_sys64(struct kvm_vcpu *vcpu, u64 *exit_code) { - if (kvm_handle_pvm_sysreg(vcpu, exit_code)) - return true; - - return kvm_hyp_handle_sysreg(vcpu, exit_code); + /* + * Make sure we handle the exit for workarounds and ptrauth + * before the pKVM handling, as the latter could decide to + * UNDEF. + */ + return (kvm_hyp_handle_sysreg(vcpu, exit_code) || + kvm_handle_pvm_sysreg(vcpu, exit_code)); } /** |