blob: 9e1308f9734c38ea1815c8a363abcd34d882b2f8 [file] [log] [blame]
Ben Gardon531810c2021-02-02 10:57:24 -08001// SPDX-License-Identifier: GPL-2.0-only
2
3#ifndef KVM_MMU_LOCK_H
4#define KVM_MMU_LOCK_H 1
5
6/*
7 * Architectures can choose whether to use an rwlock or spinlock
8 * for the mmu_lock. These macros, for use in common code
9 * only, avoids using #ifdefs in places that must deal with
10 * multiple architectures.
11 */
12
13#ifdef KVM_HAVE_MMU_RWLOCK
14#define KVM_MMU_LOCK_INIT(kvm) rwlock_init(&(kvm)->mmu_lock)
15#define KVM_MMU_LOCK(kvm) write_lock(&(kvm)->mmu_lock)
16#define KVM_MMU_UNLOCK(kvm) write_unlock(&(kvm)->mmu_lock)
17#else
18#define KVM_MMU_LOCK_INIT(kvm) spin_lock_init(&(kvm)->mmu_lock)
19#define KVM_MMU_LOCK(kvm) spin_lock(&(kvm)->mmu_lock)
20#define KVM_MMU_UNLOCK(kvm) spin_unlock(&(kvm)->mmu_lock)
21#endif /* KVM_HAVE_MMU_RWLOCK */
22
23#endif