linux/arch/powerpc/include/asm/kvm_book3s_uvmem.h
<<
>>
Prefs
   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__ */
 101