Linux Audio

Check our new training course

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__ */