WIP FPC-III support
[linux/fpc-iii.git] / arch / powerpc / include / asm / kvm_book3s_uvmem.h
blob0a6319448cb60b706da4fb51cf1a58bbb114f4f0
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __ASM_KVM_BOOK3S_UVMEM_H__
3 #define __ASM_KVM_BOOK3S_UVMEM_H__
5 #ifdef CONFIG_PPC_UV
6 int kvmppc_uvmem_init(void);
7 void kvmppc_uvmem_free(void);
8 bool kvmppc_uvmem_available(void);
9 int kvmppc_uvmem_slot_init(struct kvm *kvm, const struct kvm_memory_slot *slot);
10 void kvmppc_uvmem_slot_free(struct kvm *kvm,
11 const struct kvm_memory_slot *slot);
12 unsigned long kvmppc_h_svm_page_in(struct kvm *kvm,
13 unsigned long gra,
14 unsigned long flags,
15 unsigned long page_shift);
16 unsigned long kvmppc_h_svm_page_out(struct kvm *kvm,
17 unsigned long gra,
18 unsigned long flags,
19 unsigned long page_shift);
20 unsigned long kvmppc_h_svm_init_start(struct kvm *kvm);
21 unsigned long kvmppc_h_svm_init_done(struct kvm *kvm);
22 int kvmppc_send_page_to_uv(struct kvm *kvm, unsigned long gfn);
23 unsigned long kvmppc_h_svm_init_abort(struct kvm *kvm);
24 void kvmppc_uvmem_drop_pages(const struct kvm_memory_slot *free,
25 struct kvm *kvm, bool skip_page_out);
26 int kvmppc_uvmem_memslot_create(struct kvm *kvm,
27 const struct kvm_memory_slot *new);
28 void kvmppc_uvmem_memslot_delete(struct kvm *kvm,
29 const struct kvm_memory_slot *old);
30 #else
31 static inline int kvmppc_uvmem_init(void)
33 return 0;
36 static inline void kvmppc_uvmem_free(void) { }
38 static inline bool kvmppc_uvmem_available(void)
40 return false;
43 static inline int
44 kvmppc_uvmem_slot_init(struct kvm *kvm, const struct kvm_memory_slot *slot)
46 return 0;
49 static inline void
50 kvmppc_uvmem_slot_free(struct kvm *kvm, const struct kvm_memory_slot *slot) { }
52 static inline unsigned long
53 kvmppc_h_svm_page_in(struct kvm *kvm, unsigned long gra,
54 unsigned long flags, unsigned long page_shift)
56 return H_UNSUPPORTED;
59 static inline unsigned long
60 kvmppc_h_svm_page_out(struct kvm *kvm, unsigned long gra,
61 unsigned long flags, unsigned long page_shift)
63 return H_UNSUPPORTED;
66 static inline unsigned long kvmppc_h_svm_init_start(struct kvm *kvm)
68 return H_UNSUPPORTED;
71 static inline unsigned long kvmppc_h_svm_init_done(struct kvm *kvm)
73 return H_UNSUPPORTED;
76 static inline unsigned long kvmppc_h_svm_init_abort(struct kvm *kvm)
78 return H_UNSUPPORTED;
81 static inline int kvmppc_send_page_to_uv(struct kvm *kvm, unsigned long gfn)
83 return -EFAULT;
86 static inline void
87 kvmppc_uvmem_drop_pages(const struct kvm_memory_slot *free,
88 struct kvm *kvm, bool skip_page_out) { }
90 static inline int kvmppc_uvmem_memslot_create(struct kvm *kvm,
91 const struct kvm_memory_slot *new)
93 return H_UNSUPPORTED;
96 static inline void kvmppc_uvmem_memslot_delete(struct kvm *kvm,
97 const struct kvm_memory_slot *old) { }
99 #endif /* CONFIG_PPC_UV */
100 #endif /* __ASM_KVM_BOOK3S_UVMEM_H__ */