xref: /openbmc/linux/arch/arm64/include/asm/kvm_nested.h (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
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 Dall static 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