vcpu->arch.hcr_el2 &= ~(HCR_API | HCR_APK);
 }
 
-static inline void vcpu_ptrauth_setup_lazy(struct kvm_vcpu *vcpu)
-{
-       if (vcpu_has_ptrauth(vcpu))
-               vcpu_ptrauth_disable(vcpu);
-}
-
 static inline unsigned long vcpu_get_vsesr(struct kvm_vcpu *vcpu)
 {
        return vcpu->arch.vsesr_el2;
 
        preempt_enable();
 }
 
+#define __ptrauth_save_key(regs, key)                                          \
+({                                                                             \
+       regs[key ## KEYLO_EL1] = read_sysreg_s(SYS_ ## key ## KEYLO_EL1);       \
+       regs[key ## KEYHI_EL1] = read_sysreg_s(SYS_ ## key ## KEYHI_EL1);       \
+})
+
 void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
 {
        int *last_ran;
        else
                vcpu_set_wfx_traps(vcpu);
 
-       vcpu_ptrauth_setup_lazy(vcpu);
+       if (vcpu_has_ptrauth(vcpu)) {
+               struct kvm_cpu_context *ctxt = vcpu->arch.host_cpu_context;
+
+               __ptrauth_save_key(ctxt->sys_regs, APIA);
+               __ptrauth_save_key(ctxt->sys_regs, APIB);
+               __ptrauth_save_key(ctxt->sys_regs, APDA);
+               __ptrauth_save_key(ctxt->sys_regs, APDB);
+               __ptrauth_save_key(ctxt->sys_regs, APGA);
+
+               vcpu_ptrauth_disable(vcpu);
+       }
 }
 
 void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu)
 
        return 1;
 }
 
-#define __ptrauth_save_key(regs, key)                                          \
-({                                                                             \
-       regs[key ## KEYLO_EL1] = read_sysreg_s(SYS_ ## key ## KEYLO_EL1);       \
-       regs[key ## KEYHI_EL1] = read_sysreg_s(SYS_ ## key ## KEYHI_EL1);       \
-})
-
 /*
  * Handle the guest trying to use a ptrauth instruction, or trying to access a
  * ptrauth register.
  */
 void kvm_arm_vcpu_ptrauth_trap(struct kvm_vcpu *vcpu)
 {
-       struct kvm_cpu_context *ctxt;
-
-       if (vcpu_has_ptrauth(vcpu)) {
+       if (vcpu_has_ptrauth(vcpu))
                vcpu_ptrauth_enable(vcpu);
-               ctxt = vcpu->arch.host_cpu_context;
-               __ptrauth_save_key(ctxt->sys_regs, APIA);
-               __ptrauth_save_key(ctxt->sys_regs, APIB);
-               __ptrauth_save_key(ctxt->sys_regs, APDA);
-               __ptrauth_save_key(ctxt->sys_regs, APDB);
-               __ptrauth_save_key(ctxt->sys_regs, APGA);
-       } else {
+       else
                kvm_inject_undefined(vcpu);
-       }
 }
 
 /*