diff options
Diffstat (limited to 'arch/powerpc/include/asm')
-rw-r--r-- | arch/powerpc/include/asm/kvm.h | 9 | ||||
-rw-r--r-- | arch/powerpc/include/asm/kvm_book3s_64.h | 2 | ||||
-rw-r--r-- | arch/powerpc/include/asm/kvm_host.h | 9 | ||||
-rw-r--r-- | arch/powerpc/include/asm/kvm_ppc.h | 2 |
4 files changed, 22 insertions, 0 deletions
diff --git a/arch/powerpc/include/asm/kvm.h b/arch/powerpc/include/asm/kvm.h index d2ca5ed3877..c3ec990daf4 100644 --- a/arch/powerpc/include/asm/kvm.h +++ b/arch/powerpc/include/asm/kvm.h | |||
@@ -22,6 +22,9 @@ | |||
22 | 22 | ||
23 | #include <linux/types.h> | 23 | #include <linux/types.h> |
24 | 24 | ||
25 | /* Select powerpc specific features in <linux/kvm.h> */ | ||
26 | #define __KVM_HAVE_SPAPR_TCE | ||
27 | |||
25 | struct kvm_regs { | 28 | struct kvm_regs { |
26 | __u64 pc; | 29 | __u64 pc; |
27 | __u64 cr; | 30 | __u64 cr; |
@@ -272,4 +275,10 @@ struct kvm_guest_debug_arch { | |||
272 | #define KVM_INTERRUPT_UNSET -2U | 275 | #define KVM_INTERRUPT_UNSET -2U |
273 | #define KVM_INTERRUPT_SET_LEVEL -3U | 276 | #define KVM_INTERRUPT_SET_LEVEL -3U |
274 | 277 | ||
278 | /* for KVM_CAP_SPAPR_TCE */ | ||
279 | struct kvm_create_spapr_tce { | ||
280 | __u64 liobn; | ||
281 | __u32 window_size; | ||
282 | }; | ||
283 | |||
275 | #endif /* __LINUX_KVM_POWERPC_H */ | 284 | #endif /* __LINUX_KVM_POWERPC_H */ |
diff --git a/arch/powerpc/include/asm/kvm_book3s_64.h b/arch/powerpc/include/asm/kvm_book3s_64.h index 5f73388ea0a..e43fe42b987 100644 --- a/arch/powerpc/include/asm/kvm_book3s_64.h +++ b/arch/powerpc/include/asm/kvm_book3s_64.h | |||
@@ -27,4 +27,6 @@ static inline struct kvmppc_book3s_shadow_vcpu *to_svcpu(struct kvm_vcpu *vcpu) | |||
27 | } | 27 | } |
28 | #endif | 28 | #endif |
29 | 29 | ||
30 | #define SPAPR_TCE_SHIFT 12 | ||
31 | |||
30 | #endif /* __ASM_KVM_BOOK3S_64_H__ */ | 32 | #endif /* __ASM_KVM_BOOK3S_64_H__ */ |
diff --git a/arch/powerpc/include/asm/kvm_host.h b/arch/powerpc/include/asm/kvm_host.h index 6ebf1721680..5616e39a7fa 100644 --- a/arch/powerpc/include/asm/kvm_host.h +++ b/arch/powerpc/include/asm/kvm_host.h | |||
@@ -144,6 +144,14 @@ struct kvmppc_pginfo { | |||
144 | atomic_t refcnt; | 144 | atomic_t refcnt; |
145 | }; | 145 | }; |
146 | 146 | ||
147 | struct kvmppc_spapr_tce_table { | ||
148 | struct list_head list; | ||
149 | struct kvm *kvm; | ||
150 | u64 liobn; | ||
151 | u32 window_size; | ||
152 | struct page *pages[0]; | ||
153 | }; | ||
154 | |||
147 | struct kvm_arch { | 155 | struct kvm_arch { |
148 | #ifdef CONFIG_KVM_BOOK3S_64_HV | 156 | #ifdef CONFIG_KVM_BOOK3S_64_HV |
149 | unsigned long hpt_virt; | 157 | unsigned long hpt_virt; |
@@ -157,6 +165,7 @@ struct kvm_arch { | |||
157 | unsigned long sdr1; | 165 | unsigned long sdr1; |
158 | unsigned long host_sdr1; | 166 | unsigned long host_sdr1; |
159 | int tlbie_lock; | 167 | int tlbie_lock; |
168 | struct list_head spapr_tce_tables; | ||
160 | unsigned short last_vcpu[NR_CPUS]; | 169 | unsigned short last_vcpu[NR_CPUS]; |
161 | #endif /* CONFIG_KVM_BOOK3S_64_HV */ | 170 | #endif /* CONFIG_KVM_BOOK3S_64_HV */ |
162 | }; | 171 | }; |
diff --git a/arch/powerpc/include/asm/kvm_ppc.h b/arch/powerpc/include/asm/kvm_ppc.h index 2afe92e6f62..99f6fcf4cf8 100644 --- a/arch/powerpc/include/asm/kvm_ppc.h +++ b/arch/powerpc/include/asm/kvm_ppc.h | |||
@@ -119,6 +119,8 @@ extern long kvmppc_prepare_vrma(struct kvm *kvm, | |||
119 | extern void kvmppc_map_vrma(struct kvm *kvm, | 119 | extern void kvmppc_map_vrma(struct kvm *kvm, |
120 | struct kvm_userspace_memory_region *mem); | 120 | struct kvm_userspace_memory_region *mem); |
121 | extern int kvmppc_pseries_do_hcall(struct kvm_vcpu *vcpu); | 121 | extern int kvmppc_pseries_do_hcall(struct kvm_vcpu *vcpu); |
122 | extern long kvm_vm_ioctl_create_spapr_tce(struct kvm *kvm, | ||
123 | struct kvm_create_spapr_tce *args); | ||
122 | extern int kvmppc_core_init_vm(struct kvm *kvm); | 124 | extern int kvmppc_core_init_vm(struct kvm *kvm); |
123 | extern void kvmppc_core_destroy_vm(struct kvm *kvm); | 125 | extern void kvmppc_core_destroy_vm(struct kvm *kvm); |
124 | extern int kvmppc_core_prepare_memory_region(struct kvm *kvm, | 126 | extern int kvmppc_core_prepare_memory_region(struct kvm *kvm, |