Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #ifndef __ASM_KVM_BOOK3S_UVMEM_H__
0003 #define __ASM_KVM_BOOK3S_UVMEM_H__
0004 
0005 #ifdef CONFIG_PPC_UV
0006 int kvmppc_uvmem_init(void);
0007 void kvmppc_uvmem_free(void);
0008 bool kvmppc_uvmem_available(void);
0009 int kvmppc_uvmem_slot_init(struct kvm *kvm, const struct kvm_memory_slot *slot);
0010 void kvmppc_uvmem_slot_free(struct kvm *kvm,
0011                 const struct kvm_memory_slot *slot);
0012 unsigned long kvmppc_h_svm_page_in(struct kvm *kvm,
0013                    unsigned long gra,
0014                    unsigned long flags,
0015                    unsigned long page_shift);
0016 unsigned long kvmppc_h_svm_page_out(struct kvm *kvm,
0017                     unsigned long gra,
0018                     unsigned long flags,
0019                     unsigned long page_shift);
0020 unsigned long kvmppc_h_svm_init_start(struct kvm *kvm);
0021 unsigned long kvmppc_h_svm_init_done(struct kvm *kvm);
0022 int kvmppc_send_page_to_uv(struct kvm *kvm, unsigned long gfn);
0023 unsigned long kvmppc_h_svm_init_abort(struct kvm *kvm);
0024 void kvmppc_uvmem_drop_pages(const struct kvm_memory_slot *free,
0025                  struct kvm *kvm, bool skip_page_out);
0026 int kvmppc_uvmem_memslot_create(struct kvm *kvm,
0027         const struct kvm_memory_slot *new);
0028 void kvmppc_uvmem_memslot_delete(struct kvm *kvm,
0029         const struct kvm_memory_slot *old);
0030 #else
0031 static inline int kvmppc_uvmem_init(void)
0032 {
0033     return 0;
0034 }
0035 
0036 static inline void kvmppc_uvmem_free(void) { }
0037 
0038 static inline bool kvmppc_uvmem_available(void)
0039 {
0040     return false;
0041 }
0042 
0043 static inline int
0044 kvmppc_uvmem_slot_init(struct kvm *kvm, const struct kvm_memory_slot *slot)
0045 {
0046     return 0;
0047 }
0048 
0049 static inline void
0050 kvmppc_uvmem_slot_free(struct kvm *kvm, const struct kvm_memory_slot *slot) { }
0051 
0052 static inline unsigned long
0053 kvmppc_h_svm_page_in(struct kvm *kvm, unsigned long gra,
0054              unsigned long flags, unsigned long page_shift)
0055 {
0056     return H_UNSUPPORTED;
0057 }
0058 
0059 static inline unsigned long
0060 kvmppc_h_svm_page_out(struct kvm *kvm, unsigned long gra,
0061               unsigned long flags, unsigned long page_shift)
0062 {
0063     return H_UNSUPPORTED;
0064 }
0065 
0066 static inline unsigned long kvmppc_h_svm_init_start(struct kvm *kvm)
0067 {
0068     return H_UNSUPPORTED;
0069 }
0070 
0071 static inline unsigned long kvmppc_h_svm_init_done(struct kvm *kvm)
0072 {
0073     return H_UNSUPPORTED;
0074 }
0075 
0076 static inline unsigned long kvmppc_h_svm_init_abort(struct kvm *kvm)
0077 {
0078     return H_UNSUPPORTED;
0079 }
0080 
0081 static inline int kvmppc_send_page_to_uv(struct kvm *kvm, unsigned long gfn)
0082 {
0083     return -EFAULT;
0084 }
0085 
0086 static inline void
0087 kvmppc_uvmem_drop_pages(const struct kvm_memory_slot *free,
0088             struct kvm *kvm, bool skip_page_out) { }
0089 
0090 static inline int  kvmppc_uvmem_memslot_create(struct kvm *kvm,
0091         const struct kvm_memory_slot *new)
0092 {
0093     return H_UNSUPPORTED;
0094 }
0095 
0096 static inline void  kvmppc_uvmem_memslot_delete(struct kvm *kvm,
0097         const struct kvm_memory_slot *old) { }
0098 
0099 #endif /* CONFIG_PPC_UV */
0100 #endif /* __ASM_KVM_BOOK3S_UVMEM_H__ */