Loading...
1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef __ASM_KVM_BOOK3S_UVMEM_H__
3#define __ASM_KVM_BOOK3S_UVMEM_H__
4
5#ifdef CONFIG_PPC_UV
6int kvmppc_uvmem_init(void);
7void kvmppc_uvmem_free(void);
8bool kvmppc_uvmem_available(void);
9int kvmppc_uvmem_slot_init(struct kvm *kvm, const struct kvm_memory_slot *slot);
10void kvmppc_uvmem_slot_free(struct kvm *kvm,
11 const struct kvm_memory_slot *slot);
12unsigned long kvmppc_h_svm_page_in(struct kvm *kvm,
13 unsigned long gra,
14 unsigned long flags,
15 unsigned long page_shift);
16unsigned long kvmppc_h_svm_page_out(struct kvm *kvm,
17 unsigned long gra,
18 unsigned long flags,
19 unsigned long page_shift);
20unsigned long kvmppc_h_svm_init_start(struct kvm *kvm);
21unsigned long kvmppc_h_svm_init_done(struct kvm *kvm);
22int kvmppc_send_page_to_uv(struct kvm *kvm, unsigned long gfn);
23unsigned long kvmppc_h_svm_init_abort(struct kvm *kvm);
24void kvmppc_uvmem_drop_pages(const struct kvm_memory_slot *free,
25 struct kvm *kvm, bool skip_page_out);
26int kvmppc_uvmem_memslot_create(struct kvm *kvm,
27 const struct kvm_memory_slot *new);
28void kvmppc_uvmem_memslot_delete(struct kvm *kvm,
29 const struct kvm_memory_slot *old);
30#else
31static inline int kvmppc_uvmem_init(void)
32{
33 return 0;
34}
35
36static inline void kvmppc_uvmem_free(void) { }
37
38static inline bool kvmppc_uvmem_available(void)
39{
40 return false;
41}
42
43static inline int
44kvmppc_uvmem_slot_init(struct kvm *kvm, const struct kvm_memory_slot *slot)
45{
46 return 0;
47}
48
49static inline void
50kvmppc_uvmem_slot_free(struct kvm *kvm, const struct kvm_memory_slot *slot) { }
51
52static inline unsigned long
53kvmppc_h_svm_page_in(struct kvm *kvm, unsigned long gra,
54 unsigned long flags, unsigned long page_shift)
55{
56 return H_UNSUPPORTED;
57}
58
59static inline unsigned long
60kvmppc_h_svm_page_out(struct kvm *kvm, unsigned long gra,
61 unsigned long flags, unsigned long page_shift)
62{
63 return H_UNSUPPORTED;
64}
65
66static inline unsigned long kvmppc_h_svm_init_start(struct kvm *kvm)
67{
68 return H_UNSUPPORTED;
69}
70
71static inline unsigned long kvmppc_h_svm_init_done(struct kvm *kvm)
72{
73 return H_UNSUPPORTED;
74}
75
76static inline unsigned long kvmppc_h_svm_init_abort(struct kvm *kvm)
77{
78 return H_UNSUPPORTED;
79}
80
81static inline int kvmppc_send_page_to_uv(struct kvm *kvm, unsigned long gfn)
82{
83 return -EFAULT;
84}
85
86static inline void
87kvmppc_uvmem_drop_pages(const struct kvm_memory_slot *free,
88 struct kvm *kvm, bool skip_page_out) { }
89
90static inline int kvmppc_uvmem_memslot_create(struct kvm *kvm,
91 const struct kvm_memory_slot *new)
92{
93 return H_UNSUPPORTED;
94}
95
96static inline void kvmppc_uvmem_memslot_delete(struct kvm *kvm,
97 const struct kvm_memory_slot *old) { }
98
99#endif /* CONFIG_PPC_UV */
100#endif /* __ASM_KVM_BOOK3S_UVMEM_H__ */