Lines Matching +full:cortex +full:- +full:a57
1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (C) 2015 - ARM Ltd
8 #include <hyp/sysreg-sr.h>
10 #include <linux/arm-smccc.h>
26 #include <asm/debug-monitors.h>
30 /* Non-VHE specific context */
53 struct kvm_cpu_context *ctxt = &vcpu->arch.ctxt; in __activate_traps()
109 /* Save VGICv3 state on non-VHE systems */
113 __vgic_v3_save_state(&vcpu->arch.vgic_cpu.vgic_v3); in __hyp_vgic_save_state()
114 __vgic_v3_deactivate_traps(&vcpu->arch.vgic_cpu.vgic_v3); in __hyp_vgic_save_state()
122 __vgic_v3_activate_traps(&vcpu->arch.vgic_cpu.vgic_v3); in __hyp_vgic_restore_state()
123 __vgic_v3_restore_state(&vcpu->arch.vgic_cpu.vgic_v3); in __hyp_vgic_restore_state()
136 pmu = &host->pmu_events; in __pmu_switch_to_guest()
138 if (pmu->events_host) in __pmu_switch_to_guest()
139 write_sysreg(pmu->events_host, pmcntenclr_el0); in __pmu_switch_to_guest()
141 if (pmu->events_guest) in __pmu_switch_to_guest()
142 write_sysreg(pmu->events_guest, pmcntenset_el0); in __pmu_switch_to_guest()
144 return (pmu->events_host || pmu->events_guest); in __pmu_switch_to_guest()
156 pmu = &host->pmu_events; in __pmu_switch_to_host()
158 if (pmu->events_guest) in __pmu_switch_to_host()
159 write_sysreg(pmu->events_guest, pmcntenclr_el0); in __pmu_switch_to_host()
161 if (pmu->events_host) in __pmu_switch_to_host()
162 write_sysreg(pmu->events_host, pmcntenset_el0); in __pmu_switch_to_host()
165 /* Switch to the guest for legacy non-VHE systems */
184 host_ctxt = &this_cpu_ptr(&kvm_host_data)->host_ctxt; in __kvm_vcpu_run()
185 host_ctxt->__hyp_running_vcpu = vcpu; in __kvm_vcpu_run()
186 guest_ctxt = &vcpu->arch.ctxt; in __kvm_vcpu_run()
193 * We must restore the 32-bit state before the sysregs, thanks in __kvm_vcpu_run()
194 * to erratum #852523 (Cortex-A57) or #853709 (Cortex-A72). in __kvm_vcpu_run()
196 * Also, and in order to be able to deal with erratum #1319537 (A57) in __kvm_vcpu_run()
197 * and #1319367 (A72), we must ensure that all VM-related sysreg are in __kvm_vcpu_run()
203 __load_guest_stage2(kern_hyp_va(vcpu->arch.hw_mmu)); in __kvm_vcpu_run()
228 if (vcpu->arch.flags & KVM_ARM64_FP_ENABLED) in __kvm_vcpu_run()
232 * This must come after restoring the host sysregs, since a non-VHE in __kvm_vcpu_run()
244 host_ctxt->__hyp_running_vcpu = NULL; in __kvm_vcpu_run()
258 host_ctxt = &this_cpu_ptr(&kvm_host_data)->host_ctxt; in hyp_panic()
259 vcpu = host_ctxt->__hyp_running_vcpu; in hyp_panic()