Lines Matching +full:el3 +full:-
1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (C) 2012,2013 - ARM Ltd
7 * Copyright (C) 2012 - Virtual Open Systems and Columbia University
21 #include <asm/debug-monitors.h>
42 vcpu->stat.hvc_exit_stat++; in handle_hvc()
67 * "If an SMC instruction executed at Non-secure EL1 is in handle_smc()
72 * otherwise return to the same address. Furthermore, pre-incrementing in handle_smc()
90 * Note that on ARMv8.3, even if EL3 is not implemented, SMC executed in handle_smc()
91 * at Non-secure EL1 is trapped to EL2 if HCR_EL2.TSC==1, rather than in handle_smc()
116 * kvm_handle_wfx - handle a wait-for-interrupts or wait-for-event
124 * world-switches and schedule other host processes until there is an
140 vcpu->stat.wfe_exit_stat++; in kvm_handle_wfx()
143 vcpu->stat.wfi_exit_stat++; in kvm_handle_wfx()
176 * kvm_handle_guest_debug - handle a debug exception instruction
182 * userspace to re-inject the correct exception for guest delivery.
184 * @return: 0 (while setting vcpu->run->exit_reason)
188 struct kvm_run *run = vcpu->run; in kvm_handle_guest_debug()
191 if (!vcpu->guest_debug && forward_debug_exception(vcpu)) in kvm_handle_guest_debug()
194 run->exit_reason = KVM_EXIT_DEBUG; in kvm_handle_guest_debug()
195 run->debug.arch.hsr = lower_32_bits(esr); in kvm_handle_guest_debug()
196 run->debug.arch.hsr_high = upper_32_bits(esr); in kvm_handle_guest_debug()
197 run->flags = KVM_DEBUG_ARCH_HSR_HIGH_VALID; in kvm_handle_guest_debug()
201 run->debug.arch.far = vcpu->arch.fault.far_el2; in kvm_handle_guest_debug()
215 kvm_pr_unimpl("Unknown exception class: esr: %#016llx -- %s\n", in kvm_handle_unknown_ec()
238 * - Guest usage of a ptrauth instruction (which the guest EL1 did not
243 * - Running an L2 NV guest while L1 has left HCR_EL2.API==0, and for
275 * - the guest is in EL2, and we need to fully emulate ERET in kvm_handle_eret()
277 * - the guest is in EL1, and we need to reinject the in kvm_handle_eret()
305 if (kvm_has_feat(vcpu->kvm, ID_AA64PFR1_EL1, GCS, IMP)) in kvm_handle_gcs()
318 struct kvm *kvm = vcpu->kvm; in handle_other()
323 * - the feature is disabled, and the only outcome is to in handle_other()
326 * - the feature is enabled, but a NV guest wants to trap the in handle_other()
330 * What we don't expect is to end-up here if the guest is in handle_other()
411 * We may be single-stepping an emulated instruction. If the emulation
443 struct kvm_run *run = vcpu->run; in handle_exit()
448 * survives it will re-execute the original instruction. in handle_exit()
464 * EL2 has been reset to the hyp-stub. This happens when a guest in handle_exit()
465 * is pre-emptied by kvm_reboot()'s shutdown call. in handle_exit()
467 run->exit_reason = KVM_EXIT_FAIL_ENTRY; in handle_exit()
474 run->exit_reason = KVM_EXIT_FAIL_ENTRY; in handle_exit()
475 return -EINVAL; in handle_exit()
479 run->exit_reason = KVM_EXIT_INTERNAL_ERROR; in handle_exit()
524 u64 hyp_offset = elr_in_kimg - kaslr_offset() - elr_virt; in nvhe_hyp_panic_handler()