.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
---|
1 | 2 | /* |
---|
2 | 3 | * Copyright (C) 2008-2013 Freescale Semiconductor, Inc. All rights reserved. |
---|
3 | 4 | * |
---|
.. | .. |
---|
10 | 11 | * Description: |
---|
11 | 12 | * This file is based on arch/powerpc/kvm/44x_tlb.c, |
---|
12 | 13 | * by Hollis Blanchard <hollisb@us.ibm.com>. |
---|
13 | | - * |
---|
14 | | - * This program is free software; you can redistribute it and/or modify |
---|
15 | | - * it under the terms of the GNU General Public License, version 2, as |
---|
16 | | - * published by the Free Software Foundation. |
---|
17 | 14 | */ |
---|
18 | 15 | |
---|
19 | 16 | #include <linux/kernel.h> |
---|
.. | .. |
---|
358 | 355 | |
---|
359 | 356 | if (tlbsel == 1) { |
---|
360 | 357 | struct vm_area_struct *vma; |
---|
361 | | - down_read(¤t->mm->mmap_sem); |
---|
| 358 | + mmap_read_lock(kvm->mm); |
---|
362 | 359 | |
---|
363 | | - vma = find_vma(current->mm, hva); |
---|
| 360 | + vma = find_vma(kvm->mm, hva); |
---|
364 | 361 | if (vma && hva >= vma->vm_start && |
---|
365 | 362 | (vma->vm_flags & VM_PFNMAP)) { |
---|
366 | 363 | /* |
---|
.. | .. |
---|
425 | 422 | break; |
---|
426 | 423 | } |
---|
427 | 424 | } else if (vma && hva >= vma->vm_start && |
---|
428 | | - (vma->vm_flags & VM_HUGETLB)) { |
---|
| 425 | + is_vm_hugetlb_page(vma)) { |
---|
429 | 426 | unsigned long psize = vma_kernel_pagesize(vma); |
---|
430 | 427 | |
---|
431 | 428 | tsize = (gtlbe->mas1 & MAS1_TSIZE_MASK) >> |
---|
.. | .. |
---|
444 | 441 | tsize = max(BOOK3E_PAGESZ_4K, tsize & ~1); |
---|
445 | 442 | } |
---|
446 | 443 | |
---|
447 | | - up_read(¤t->mm->mmap_sem); |
---|
| 444 | + mmap_read_unlock(kvm->mm); |
---|
448 | 445 | } |
---|
449 | 446 | |
---|
450 | 447 | if (likely(!pfnmap)) { |
---|
.. | .. |
---|
738 | 735 | } |
---|
739 | 736 | |
---|
740 | 737 | int kvm_unmap_hva_range(struct kvm *kvm, unsigned long start, unsigned long end, |
---|
741 | | - bool blockable) |
---|
| 738 | + unsigned flags) |
---|
742 | 739 | { |
---|
743 | 740 | /* kvm_unmap_hva flushes everything anyways */ |
---|
744 | 741 | kvm_unmap_hva(kvm, start); |
---|
.. | .. |
---|
758 | 755 | return 0; |
---|
759 | 756 | } |
---|
760 | 757 | |
---|
761 | | -void kvm_set_spte_hva(struct kvm *kvm, unsigned long hva, pte_t pte) |
---|
| 758 | +int kvm_set_spte_hva(struct kvm *kvm, unsigned long hva, pte_t pte) |
---|
762 | 759 | { |
---|
763 | 760 | /* The page will get remapped properly on its next fault */ |
---|
764 | 761 | kvm_unmap_hva(kvm, hva); |
---|
| 762 | + return 0; |
---|
765 | 763 | } |
---|
766 | 764 | |
---|
767 | 765 | /*****************************************/ |
---|