Lines Matching refs:vcpu
30 static void kvm_handle_guest_serror(struct kvm_vcpu *vcpu, u32 esr) in kvm_handle_guest_serror() argument
33 kvm_inject_vabt(vcpu); in kvm_handle_guest_serror()
36 static int handle_hvc(struct kvm_vcpu *vcpu, struct kvm_run *run) in handle_hvc() argument
40 trace_kvm_hvc_arm64(*vcpu_pc(vcpu), vcpu_get_reg(vcpu, 0), in handle_hvc()
41 kvm_vcpu_hvc_get_imm(vcpu)); in handle_hvc()
42 vcpu->stat.hvc_exit_stat++; in handle_hvc()
44 ret = kvm_hvc_call_handler(vcpu); in handle_hvc()
46 vcpu_set_reg(vcpu, 0, ~0UL); in handle_hvc()
53 static int handle_smc(struct kvm_vcpu *vcpu, struct kvm_run *run) in handle_smc() argument
63 vcpu_set_reg(vcpu, 0, ~0UL); in handle_smc()
64 kvm_skip_instr(vcpu, kvm_vcpu_trap_il_is32bit(vcpu)); in handle_smc()
72 static int handle_no_fpsimd(struct kvm_vcpu *vcpu, struct kvm_run *run) in handle_no_fpsimd() argument
74 kvm_inject_undefined(vcpu); in handle_no_fpsimd()
90 static int kvm_handle_wfx(struct kvm_vcpu *vcpu, struct kvm_run *run) in kvm_handle_wfx() argument
92 if (kvm_vcpu_get_hsr(vcpu) & ESR_ELx_WFx_ISS_WFE) { in kvm_handle_wfx()
93 trace_kvm_wfx_arm64(*vcpu_pc(vcpu), true); in kvm_handle_wfx()
94 vcpu->stat.wfe_exit_stat++; in kvm_handle_wfx()
95 kvm_vcpu_on_spin(vcpu, vcpu_mode_priv(vcpu)); in kvm_handle_wfx()
97 trace_kvm_wfx_arm64(*vcpu_pc(vcpu), false); in kvm_handle_wfx()
98 vcpu->stat.wfi_exit_stat++; in kvm_handle_wfx()
99 kvm_vcpu_block(vcpu); in kvm_handle_wfx()
100 kvm_clear_request(KVM_REQ_UNHALT, vcpu); in kvm_handle_wfx()
103 kvm_skip_instr(vcpu, kvm_vcpu_trap_il_is32bit(vcpu)); in kvm_handle_wfx()
120 static int kvm_handle_guest_debug(struct kvm_vcpu *vcpu, struct kvm_run *run) in kvm_handle_guest_debug() argument
122 u32 hsr = kvm_vcpu_get_hsr(vcpu); in kvm_handle_guest_debug()
130 run->debug.arch.far = vcpu->arch.fault.far_el2; in kvm_handle_guest_debug()
147 static int kvm_handle_unknown_ec(struct kvm_vcpu *vcpu, struct kvm_run *run) in kvm_handle_unknown_ec() argument
149 u32 hsr = kvm_vcpu_get_hsr(vcpu); in kvm_handle_unknown_ec()
154 kvm_inject_undefined(vcpu); in kvm_handle_unknown_ec()
158 static int handle_sve(struct kvm_vcpu *vcpu, struct kvm_run *run) in handle_sve() argument
161 kvm_inject_undefined(vcpu); in handle_sve()
175 void kvm_arm_vcpu_ptrauth_trap(struct kvm_vcpu *vcpu) in kvm_arm_vcpu_ptrauth_trap() argument
179 if (vcpu_has_ptrauth(vcpu)) { in kvm_arm_vcpu_ptrauth_trap()
180 vcpu_ptrauth_enable(vcpu); in kvm_arm_vcpu_ptrauth_trap()
181 ctxt = vcpu->arch.host_cpu_context; in kvm_arm_vcpu_ptrauth_trap()
188 kvm_inject_undefined(vcpu); in kvm_arm_vcpu_ptrauth_trap()
196 static int kvm_handle_ptrauth(struct kvm_vcpu *vcpu, struct kvm_run *run) in kvm_handle_ptrauth() argument
198 kvm_arm_vcpu_ptrauth_trap(vcpu); in kvm_handle_ptrauth()
227 static exit_handle_fn kvm_get_exit_handler(struct kvm_vcpu *vcpu) in kvm_get_exit_handler() argument
229 u32 hsr = kvm_vcpu_get_hsr(vcpu); in kvm_get_exit_handler()
241 static int handle_trap_exceptions(struct kvm_vcpu *vcpu, struct kvm_run *run) in handle_trap_exceptions() argument
249 if (!kvm_condition_valid(vcpu)) { in handle_trap_exceptions()
250 kvm_skip_instr(vcpu, kvm_vcpu_trap_il_is32bit(vcpu)); in handle_trap_exceptions()
255 exit_handler = kvm_get_exit_handler(vcpu); in handle_trap_exceptions()
256 handled = exit_handler(vcpu, run); in handle_trap_exceptions()
266 int handle_exit(struct kvm_vcpu *vcpu, struct kvm_run *run, in handle_exit() argument
270 u8 hsr_ec = ESR_ELx_EC(kvm_vcpu_get_hsr(vcpu)); in handle_exit()
279 u32 adj = kvm_vcpu_trap_il_is32bit(vcpu) ? 4 : 2; in handle_exit()
280 *vcpu_pc(vcpu) -= adj; in handle_exit()
294 return handle_trap_exceptions(vcpu, run); in handle_exit()
318 void handle_exit_early(struct kvm_vcpu *vcpu, struct kvm_run *run, in handle_exit_early() argument
323 u64 disr = kvm_vcpu_get_disr(vcpu); in handle_exit_early()
325 kvm_handle_guest_serror(vcpu, disr_to_esr(disr)); in handle_exit_early()
327 kvm_inject_vabt(vcpu); in handle_exit_early()
336 kvm_handle_guest_serror(vcpu, kvm_vcpu_get_hsr(vcpu)); in handle_exit_early()