kvm_book3s_uvmem.h (2738B)
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__ */