aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/include/asm
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/include/asm')
-rw-r--r--arch/powerpc/include/asm/kvm.h9
-rw-r--r--arch/powerpc/include/asm/kvm_book3s_64.h2
-rw-r--r--arch/powerpc/include/asm/kvm_host.h9
-rw-r--r--arch/powerpc/include/asm/kvm_ppc.h2
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
25struct kvm_regs { 28struct 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 */
279struct 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
147struct 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
147struct kvm_arch { 155struct 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,
119extern void kvmppc_map_vrma(struct kvm *kvm, 119extern void kvmppc_map_vrma(struct kvm *kvm,
120 struct kvm_userspace_memory_region *mem); 120 struct kvm_userspace_memory_region *mem);
121extern int kvmppc_pseries_do_hcall(struct kvm_vcpu *vcpu); 121extern int kvmppc_pseries_do_hcall(struct kvm_vcpu *vcpu);
122extern long kvm_vm_ioctl_create_spapr_tce(struct kvm *kvm,
123 struct kvm_create_spapr_tce *args);
122extern int kvmppc_core_init_vm(struct kvm *kvm); 124extern int kvmppc_core_init_vm(struct kvm *kvm);
123extern void kvmppc_core_destroy_vm(struct kvm *kvm); 125extern void kvmppc_core_destroy_vm(struct kvm *kvm);
124extern int kvmppc_core_prepare_memory_region(struct kvm *kvm, 126extern int kvmppc_core_prepare_memory_region(struct kvm *kvm,