0001
0002
0003 #ifndef __KVM_MM_H__
0004 #define __KVM_MM_H__ 1
0005
0006
0007
0008
0009
0010
0011
0012
0013 #ifdef KVM_HAVE_MMU_RWLOCK
0014 #define KVM_MMU_LOCK_INIT(kvm) rwlock_init(&(kvm)->mmu_lock)
0015 #define KVM_MMU_LOCK(kvm) write_lock(&(kvm)->mmu_lock)
0016 #define KVM_MMU_UNLOCK(kvm) write_unlock(&(kvm)->mmu_lock)
0017 #define KVM_MMU_READ_LOCK(kvm) read_lock(&(kvm)->mmu_lock)
0018 #define KVM_MMU_READ_UNLOCK(kvm) read_unlock(&(kvm)->mmu_lock)
0019 #else
0020 #define KVM_MMU_LOCK_INIT(kvm) spin_lock_init(&(kvm)->mmu_lock)
0021 #define KVM_MMU_LOCK(kvm) spin_lock(&(kvm)->mmu_lock)
0022 #define KVM_MMU_UNLOCK(kvm) spin_unlock(&(kvm)->mmu_lock)
0023 #define KVM_MMU_READ_LOCK(kvm) spin_lock(&(kvm)->mmu_lock)
0024 #define KVM_MMU_READ_UNLOCK(kvm) spin_unlock(&(kvm)->mmu_lock)
0025 #endif
0026
0027 kvm_pfn_t hva_to_pfn(unsigned long addr, bool atomic, bool *async,
0028 bool write_fault, bool *writable);
0029
0030 #ifdef CONFIG_HAVE_KVM_PFNCACHE
0031 void gfn_to_pfn_cache_invalidate_start(struct kvm *kvm,
0032 unsigned long start,
0033 unsigned long end,
0034 bool may_block);
0035 #else
0036 static inline void gfn_to_pfn_cache_invalidate_start(struct kvm *kvm,
0037 unsigned long start,
0038 unsigned long end,
0039 bool may_block)
0040 {
0041 }
0042 #endif
0043
0044 #endif