1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __ASM_KVM_BOOK3S_UVMEM_H__
3 #define __ASM_KVM_BOOK3S_UVMEM_H__
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
,
15 unsigned long page_shift
);
16 unsigned long kvmppc_h_svm_page_out(struct kvm
*kvm
,
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
);
31 static inline int kvmppc_uvmem_init(void)
36 static inline void kvmppc_uvmem_free(void) { }
38 static inline bool kvmppc_uvmem_available(void)
44 kvmppc_uvmem_slot_init(struct kvm
*kvm
, const struct kvm_memory_slot
*slot
)
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
)
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
)
66 static inline unsigned long kvmppc_h_svm_init_start(struct kvm
*kvm
)
71 static inline unsigned long kvmppc_h_svm_init_done(struct kvm
*kvm
)
76 static inline unsigned long kvmppc_h_svm_init_abort(struct kvm
*kvm
)
81 static inline int kvmppc_send_page_to_uv(struct kvm
*kvm
, unsigned long gfn
)
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)
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__ */