#ifndef __LINUX_KVM_PARA_H #define __LINUX_KVM_PARA_H /* * This header file provides a method for making a hypercall to the host * Architectures should define: * - kvm_hypercall0, kvm_hypercall1... * - kvm_arch_para_features * - kvm_para_available */ /* Return values for hypercalls */ #define KVM_ENOSYS 1000 #define KVM_EFAULT EFAULT #define KVM_E2BIG E2BIG #define KVM_EPERM EPERM #define KVM_HC_VAPIC_POLL_IRQ 1 #define KVM_HC_MMU_OP 2 /* * hypercalls use architecture specific */ #ifdef _KERNEL #ifdef CONFIG_KVM_GUEST void __init kvm_guest_init(void); #else #define kvm_guest_init() do { } while (0) #endif static unsigned int kvm_arch_para_features(void) { return cpuid_eax(KVM_CPUID_FEATURES); } static int kvm_para_has_feature(unsigned int feature) { if (kvm_arch_para_features() & (1UL << feature)) return 1; return 0; } #endif /* _KERNEL */ #endif /* __LINUX_KVM_PARA_H */