Ingo Molnar | 102d832 | 2007-02-19 14:37:47 +0200 | [diff] [blame] | 1 | #ifndef __LINUX_KVM_PARA_H |
| 2 | #define __LINUX_KVM_PARA_H |
| 3 | |
Christian Borntraeger | 5f43238 | 2007-10-11 15:34:17 +0200 | [diff] [blame] | 4 | /* |
| 5 | * This header file provides a method for making a hypercall to the host |
| 6 | * Architectures should define: |
| 7 | * - kvm_hypercall0, kvm_hypercall1... |
| 8 | * - kvm_arch_para_features |
| 9 | * - kvm_para_available |
Anthony Liguori | 7aa81cc | 2007-09-17 14:57:50 -0500 | [diff] [blame] | 10 | */ |
Anthony Liguori | 7aa81cc | 2007-09-17 14:57:50 -0500 | [diff] [blame] | 11 | |
| 12 | /* Return values for hypercalls */ |
| 13 | #define KVM_ENOSYS 1000 |
Marcelo Tosatti | 2f333bc | 2008-02-22 12:21:37 -0500 | [diff] [blame] | 14 | #define KVM_EFAULT EFAULT |
| 15 | #define KVM_E2BIG E2BIG |
Jan Kiszka | 07708c4 | 2009-08-03 18:43:28 +0200 | [diff] [blame] | 16 | #define KVM_EPERM EPERM |
Anthony Liguori | 7aa81cc | 2007-09-17 14:57:50 -0500 | [diff] [blame] | 17 | |
Marcelo Tosatti | 2f333bc | 2008-02-22 12:21:37 -0500 | [diff] [blame] | 18 | #define KVM_HC_VAPIC_POLL_IRQ 1 |
| 19 | #define KVM_HC_MMU_OP 2 |
Alexander Graf | 2a342ed | 2010-07-29 14:47:48 +0200 | [diff] [blame] | 20 | #define KVM_HC_FEATURES 3 |
Alexander Graf | beb03f1 | 2010-07-29 14:47:53 +0200 | [diff] [blame^] | 21 | #define KVM_HC_PPC_MAP_MAGIC_PAGE 4 |
Avi Kivity | b93463a | 2007-10-25 16:52:32 +0200 | [diff] [blame] | 22 | |
Christian Borntraeger | 5f43238 | 2007-10-11 15:34:17 +0200 | [diff] [blame] | 23 | /* |
| 24 | * hypercalls use architecture specific |
Anthony Liguori | 7aa81cc | 2007-09-17 14:57:50 -0500 | [diff] [blame] | 25 | */ |
Christian Borntraeger | 5f43238 | 2007-10-11 15:34:17 +0200 | [diff] [blame] | 26 | #include <asm/kvm_para.h> |
Anthony Liguori | 7aa81cc | 2007-09-17 14:57:50 -0500 | [diff] [blame] | 27 | |
Glauber de Oliveira Costa | a03d7f4 | 2008-01-15 13:10:15 -0200 | [diff] [blame] | 28 | #ifdef __KERNEL__ |
Marcelo Tosatti | 0cf1bfd | 2008-02-22 12:21:36 -0500 | [diff] [blame] | 29 | #ifdef CONFIG_KVM_GUEST |
| 30 | void __init kvm_guest_init(void); |
| 31 | #else |
| 32 | #define kvm_guest_init() do { } while (0) |
| 33 | #endif |
| 34 | |
Anthony Liguori | 7aa81cc | 2007-09-17 14:57:50 -0500 | [diff] [blame] | 35 | static inline int kvm_para_has_feature(unsigned int feature) |
| 36 | { |
Christian Borntraeger | 5f43238 | 2007-10-11 15:34:17 +0200 | [diff] [blame] | 37 | if (kvm_arch_para_features() & (1UL << feature)) |
Anthony Liguori | 7aa81cc | 2007-09-17 14:57:50 -0500 | [diff] [blame] | 38 | return 1; |
| 39 | return 0; |
| 40 | } |
Christian Borntraeger | 5f43238 | 2007-10-11 15:34:17 +0200 | [diff] [blame] | 41 | #endif /* __KERNEL__ */ |
| 42 | #endif /* __LINUX_KVM_PARA_H */ |
Anthony Liguori | 7aa81cc | 2007-09-17 14:57:50 -0500 | [diff] [blame] | 43 | |