arm.c (09cf57eba304246141367b95c89801fd2047ac96) | arm.c (13aeb9b400c5d7c5e979fdbbf994c787487f7889) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * Copyright (C) 2012 - Virtual Open Systems and Columbia University 4 * Author: Christoffer Dall <c.dall@virtualopensystems.com> 5 */ 6 7#include <linux/bug.h> 8#include <linux/cpu_pm.h> --- 337 unchanged lines hidden (view full) --- 346 kvm_call_hyp(__kvm_tlb_flush_local_vmid, vcpu); 347 *last_ran = vcpu->vcpu_id; 348 } 349 350 vcpu->cpu = cpu; 351 352 kvm_vgic_load(vcpu); 353 kvm_timer_vcpu_load(vcpu); | 1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * Copyright (C) 2012 - Virtual Open Systems and Columbia University 4 * Author: Christoffer Dall <c.dall@virtualopensystems.com> 5 */ 6 7#include <linux/bug.h> 8#include <linux/cpu_pm.h> --- 337 unchanged lines hidden (view full) --- 346 kvm_call_hyp(__kvm_tlb_flush_local_vmid, vcpu); 347 *last_ran = vcpu->vcpu_id; 348 } 349 350 vcpu->cpu = cpu; 351 352 kvm_vgic_load(vcpu); 353 kvm_timer_vcpu_load(vcpu); |
354 kvm_vcpu_load_sysregs(vcpu); | 354 if (has_vhe()) 355 kvm_vcpu_load_sysregs_vhe(vcpu); |
355 kvm_arch_vcpu_load_fp(vcpu); 356 kvm_vcpu_pmu_restore_guest(vcpu); 357 if (kvm_arm_is_pvtime_enabled(&vcpu->arch)) 358 kvm_make_request(KVM_REQ_RECORD_STEAL, vcpu); 359 360 if (single_task_running()) 361 vcpu_clear_wfx_traps(vcpu); 362 else 363 vcpu_set_wfx_traps(vcpu); 364 365 if (vcpu_has_ptrauth(vcpu)) 366 vcpu_ptrauth_disable(vcpu); 367} 368 369void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu) 370{ 371 kvm_arch_vcpu_put_fp(vcpu); | 356 kvm_arch_vcpu_load_fp(vcpu); 357 kvm_vcpu_pmu_restore_guest(vcpu); 358 if (kvm_arm_is_pvtime_enabled(&vcpu->arch)) 359 kvm_make_request(KVM_REQ_RECORD_STEAL, vcpu); 360 361 if (single_task_running()) 362 vcpu_clear_wfx_traps(vcpu); 363 else 364 vcpu_set_wfx_traps(vcpu); 365 366 if (vcpu_has_ptrauth(vcpu)) 367 vcpu_ptrauth_disable(vcpu); 368} 369 370void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu) 371{ 372 kvm_arch_vcpu_put_fp(vcpu); |
372 kvm_vcpu_put_sysregs(vcpu); | 373 if (has_vhe()) 374 kvm_vcpu_put_sysregs_vhe(vcpu); |
373 kvm_timer_vcpu_put(vcpu); 374 kvm_vgic_put(vcpu); 375 kvm_vcpu_pmu_restore_host(vcpu); 376 377 vcpu->cpu = -1; 378} 379 380static void vcpu_power_off(struct kvm_vcpu *vcpu) --- 916 unchanged lines hidden (view full) --- 1297 __kvm_call_hyp((void *)pgd_ptr, hyp_stack_ptr, vector_ptr, tpidr_el2); 1298 1299 /* 1300 * Disabling SSBD on a non-VHE system requires us to enable SSBS 1301 * at EL2. 1302 */ 1303 if (this_cpu_has_cap(ARM64_SSBS) && 1304 arm64_get_ssbd_state() == ARM64_SSBD_FORCE_DISABLE) { | 375 kvm_timer_vcpu_put(vcpu); 376 kvm_vgic_put(vcpu); 377 kvm_vcpu_pmu_restore_host(vcpu); 378 379 vcpu->cpu = -1; 380} 381 382static void vcpu_power_off(struct kvm_vcpu *vcpu) --- 916 unchanged lines hidden (view full) --- 1299 __kvm_call_hyp((void *)pgd_ptr, hyp_stack_ptr, vector_ptr, tpidr_el2); 1300 1301 /* 1302 * Disabling SSBD on a non-VHE system requires us to enable SSBS 1303 * at EL2. 1304 */ 1305 if (this_cpu_has_cap(ARM64_SSBS) && 1306 arm64_get_ssbd_state() == ARM64_SSBD_FORCE_DISABLE) { |
1305 kvm_call_hyp(__kvm_enable_ssbs); | 1307 kvm_call_hyp_nvhe(__kvm_enable_ssbs); |
1306 } 1307} 1308 1309static void cpu_hyp_reset(void) 1310{ 1311 if (!is_kernel_in_hyp_mode()) 1312 __hyp_reset_vectors(); 1313} --- 392 unchanged lines hidden --- | 1308 } 1309} 1310 1311static void cpu_hyp_reset(void) 1312{ 1313 if (!is_kernel_in_hyp_mode()) 1314 __hyp_reset_vectors(); 1315} --- 392 unchanged lines hidden --- |