cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

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