[PATCH v3 16/28] KVM: arm64: Split NV-specific exit fixups from the non-NV handling
Yao Yuan
yaoyuan at linux.alibaba.com
Thu Jul 23 23:11:35 PDT 2026
On Wed, Jul 22, 2026 at 08:42:22AM +0800, Marc Zyngier wrote:
> In order to facilitate further changes, move the NV handling of
> early fixups in its own helper. This also makes the code slightly
> simpler to parse.
Reviewed-by: Yuan Yao <yaoyuan at linux.alibaba.com>
>
> Signed-off-by: Marc Zyngier <maz at kernel.org>
> ---
> arch/arm64/kvm/hyp/vhe/switch.c | 18 +++++++++++-------
> 1 file changed, 11 insertions(+), 7 deletions(-)
>
> diff --git a/arch/arm64/kvm/hyp/vhe/switch.c b/arch/arm64/kvm/hyp/vhe/switch.c
> index a8da40568a048..53af19212895d 100644
> --- a/arch/arm64/kvm/hyp/vhe/switch.c
> +++ b/arch/arm64/kvm/hyp/vhe/switch.c
> @@ -539,18 +539,15 @@ static const exit_handler_fn hyp_exit_handlers[] = {
> [0x3F] = kvm_hyp_handle_impdef,
> };
>
> -static inline bool fixup_guest_exit(struct kvm_vcpu *vcpu, u64 *exit_code)
> +static void fixup_nv_guest_exit(struct kvm_vcpu *vcpu)
> {
> - synchronize_vcpu_pstate(vcpu);
> -
> /*
> * If we were in HYP context on entry, adjust the PSTATE view
> * so that the usual helpers work correctly. This enforces our
> * invariant that the guest's HYP context status is preserved
> * across a run.
> */
> - if (vcpu_has_nv(vcpu) &&
> - unlikely(host_data_test_flag(VCPU_IN_HYP_CONTEXT))) {
> + if (unlikely(host_data_test_flag(VCPU_IN_HYP_CONTEXT))) {
> u64 mode = *vcpu_cpsr(vcpu) & (PSR_MODE_MASK | PSR_MODE32_BIT);
>
> switch (mode) {
> @@ -567,8 +564,15 @@ static inline bool fixup_guest_exit(struct kvm_vcpu *vcpu, u64 *exit_code)
> }
>
> /* Apply extreme paranoia! */
> - BUG_ON(vcpu_has_nv(vcpu) &&
> - !!host_data_test_flag(VCPU_IN_HYP_CONTEXT) != is_hyp_ctxt(vcpu));
> + BUG_ON(!!host_data_test_flag(VCPU_IN_HYP_CONTEXT) != is_hyp_ctxt(vcpu));
> +}
> +
> +static bool fixup_guest_exit(struct kvm_vcpu *vcpu, u64 *exit_code)
> +{
> + synchronize_vcpu_pstate(vcpu);
> +
> + if (vcpu_has_nv(vcpu))
> + fixup_nv_guest_exit(vcpu);
>
> return __fixup_guest_exit(vcpu, exit_code, hyp_exit_handlers);
> }
> --
> 2.47.3
More information about the linux-arm-kernel
mailing list