|  | #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 | 
|  | */ | 
|  | #include <asm/kvm_para.h> | 
|  |  | 
|  | #ifdef __KERNEL__ | 
|  | #ifdef CONFIG_KVM_GUEST | 
|  | void __init kvm_guest_init(void); | 
|  | #else | 
|  | #define kvm_guest_init() do { } while (0) | 
|  | #endif | 
|  |  | 
|  | static inline 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 */ | 
|  |  |