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) 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) 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) in handle_no_fpsimd() argument
74 kvm_inject_undefined(vcpu); in handle_no_fpsimd()
90 static int kvm_handle_wfx(struct kvm_vcpu *vcpu) in kvm_handle_wfx() argument
92 if (kvm_vcpu_get_esr(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()
119 static int kvm_handle_guest_debug(struct kvm_vcpu *vcpu) in kvm_handle_guest_debug() argument
121 struct kvm_run *run = vcpu->run; in kvm_handle_guest_debug()
122 u32 esr = kvm_vcpu_get_esr(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) in kvm_handle_unknown_ec() argument
149 u32 esr = kvm_vcpu_get_esr(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) in handle_sve() argument
161 kvm_inject_undefined(vcpu); in handle_sve()
170 static int kvm_handle_ptrauth(struct kvm_vcpu *vcpu) in kvm_handle_ptrauth() argument
172 kvm_inject_undefined(vcpu); in kvm_handle_ptrauth()
201 static exit_handle_fn kvm_get_exit_handler(struct kvm_vcpu *vcpu) in kvm_get_exit_handler() argument
203 u32 esr = kvm_vcpu_get_esr(vcpu); in kvm_get_exit_handler()
215 static int handle_trap_exceptions(struct kvm_vcpu *vcpu) in handle_trap_exceptions() argument
223 if (!kvm_condition_valid(vcpu)) { in handle_trap_exceptions()
224 kvm_skip_instr(vcpu, kvm_vcpu_trap_il_is32bit(vcpu)); in handle_trap_exceptions()
229 exit_handler = kvm_get_exit_handler(vcpu); in handle_trap_exceptions()
230 handled = exit_handler(vcpu); in handle_trap_exceptions()
240 int handle_exit(struct kvm_vcpu *vcpu, int exception_index) in handle_exit() argument
242 struct kvm_run *run = vcpu->run; in handle_exit()
245 u8 esr_ec = ESR_ELx_EC(kvm_vcpu_get_esr(vcpu)); in handle_exit()
254 u32 adj = kvm_vcpu_trap_il_is32bit(vcpu) ? 4 : 2; in handle_exit()
255 *vcpu_pc(vcpu) -= adj; in handle_exit()
269 return handle_trap_exceptions(vcpu); in handle_exit()
293 void handle_exit_early(struct kvm_vcpu *vcpu, int exception_index) in handle_exit_early() argument
297 u64 disr = kvm_vcpu_get_disr(vcpu); in handle_exit_early()
299 kvm_handle_guest_serror(vcpu, disr_to_esr(disr)); in handle_exit_early()
301 kvm_inject_vabt(vcpu); in handle_exit_early()
310 kvm_handle_guest_serror(vcpu, kvm_vcpu_get_esr(vcpu)); in handle_exit_early()