kvm_riscv_gstage_init(&gstage, kvm);
- spin_lock(&kvm->mmu_lock);
+ write_lock(&kvm->mmu_lock);
flush = kvm_riscv_gstage_wp_range(&gstage, start, end);
- spin_unlock(&kvm->mmu_lock);
+ write_unlock(&kvm->mmu_lock);
if (flush)
kvm_flush_remote_tlbs_memslot(kvm, memslot);
}
if (ret)
goto out;
- spin_lock(&kvm->mmu_lock);
+ write_lock(&kvm->mmu_lock);
ret = kvm_riscv_gstage_set_pte(&gstage, &pcache, &map);
- spin_unlock(&kvm->mmu_lock);
+ write_unlock(&kvm->mmu_lock);
if (ret)
goto out;
kvm_riscv_gstage_init(&gstage, kvm);
- spin_lock(&kvm->mmu_lock);
+ write_lock(&kvm->mmu_lock);
flush = kvm_riscv_gstage_unmap_range(&gstage, gpa, size, false);
- spin_unlock(&kvm->mmu_lock);
+ write_unlock(&kvm->mmu_lock);
if (flush)
kvm_flush_remote_tlbs_range(kvm, gpa >> PAGE_SHIFT,
kvm_riscv_gstage_init(&gstage, kvm);
- spin_lock(&kvm->mmu_lock);
+ write_lock(&kvm->mmu_lock);
flush = kvm_riscv_gstage_unmap_range(&gstage, gpa, size, false);
- spin_unlock(&kvm->mmu_lock);
+ write_unlock(&kvm->mmu_lock);
if (flush)
kvm_flush_remote_tlbs_range(kvm, gpa >> PAGE_SHIFT,
size >> PAGE_SHIFT);
if (logging && !is_write)
writable = false;
- spin_lock(&kvm->mmu_lock);
+ write_lock(&kvm->mmu_lock);
if (mmu_invalidate_retry(kvm, mmu_seq))
goto out_unlock;
out_unlock:
kvm_release_faultin_page(kvm, page, ret && ret != -EEXIST, writable);
- spin_unlock(&kvm->mmu_lock);
+ write_unlock(&kvm->mmu_lock);
return ret;
}
void *pgd = NULL;
bool flush = false;
- spin_lock(&kvm->mmu_lock);
+ write_lock(&kvm->mmu_lock);
if (kvm->arch.pgd) {
kvm_riscv_gstage_init(&gstage, kvm);
flush = kvm_riscv_gstage_unmap_range(&gstage, 0UL,
kvm->arch.pgd_phys = 0;
kvm->arch.pgd_levels = 0;
}
- spin_unlock(&kvm->mmu_lock);
+ write_unlock(&kvm->mmu_lock);
if (flush)
kvm_flush_remote_tlbs(kvm);