189b0e7deSChristoffer Dall /* SPDX-License-Identifier: GPL-2.0 */ 289b0e7deSChristoffer Dall #ifndef __ARM64_KVM_NESTED_H 389b0e7deSChristoffer Dall #define __ARM64_KVM_NESTED_H 489b0e7deSChristoffer Dall 589b0e7deSChristoffer Dall #include <linux/kvm_host.h> 689b0e7deSChristoffer Dall vcpu_has_nv(const struct kvm_vcpu * vcpu)789b0e7deSChristoffer Dallstatic inline bool vcpu_has_nv(const struct kvm_vcpu *vcpu) 889b0e7deSChristoffer Dall { 989b0e7deSChristoffer Dall return (!__is_defined(__KVM_NVHE_HYPERVISOR__) && 1089b0e7deSChristoffer Dall cpus_have_final_cap(ARM64_HAS_NESTED_VIRT) && 1189b0e7deSChristoffer Dall test_bit(KVM_ARM_VCPU_HAS_EL2, vcpu->arch.features)); 1289b0e7deSChristoffer Dall } 1389b0e7deSChristoffer Dall 14*e58ec47bSMarc Zyngier extern bool __check_nv_sr_forward(struct kvm_vcpu *vcpu); 15*e58ec47bSMarc Zyngier 169f75b6d4SMarc Zyngier struct sys_reg_params; 179f75b6d4SMarc Zyngier struct sys_reg_desc; 189f75b6d4SMarc Zyngier 199f75b6d4SMarc Zyngier void access_nested_id_reg(struct kvm_vcpu *v, struct sys_reg_params *p, 209f75b6d4SMarc Zyngier const struct sys_reg_desc *r); 219f75b6d4SMarc Zyngier 2289b0e7deSChristoffer Dall #endif /* __ARM64_KVM_NESTED_H */ 23