diff options
author | Alexey Kardashevskiy <aik@ozlabs.ru> | 2017-03-16 20:48:27 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-03-22 07:43:37 -0400 |
commit | 5b34666bd2e70046f9880db01119c7d908e0888d (patch) | |
tree | 47e3102213d5ccd30647bad1102dbfcdc8556680 /arch/powerpc/include | |
parent | 2ba7ef21820ec5cb2376078774e24d6f6a7386b2 (diff) |
powerpc/iommu: Stop using @current in mm_iommu_xxx
[ Upstream commit d7baee6901b34c4895eb78efdbf13a49079d7404 ]
This changes mm_iommu_xxx helpers to take mm_struct as a parameter
instead of getting it from @current which in some situations may
not have a valid reference to mm.
This changes helpers to receive @mm and moves all references to @current
to the caller, including checks for !current and !current->mm;
checks in mm_iommu_preregistered() are removed as there is no caller
yet.
This moves the mm_iommu_adjust_locked_vm() call to the caller as
it receives mm_iommu_table_group_mem_t but it needs mm.
This should cause no behavioral change.
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Acked-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'arch/powerpc/include')
-rw-r--r-- | arch/powerpc/include/asm/mmu_context.h | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/arch/powerpc/include/asm/mmu_context.h b/arch/powerpc/include/asm/mmu_context.h index 424844bc2a57..b9e3f0aca261 100644 --- a/arch/powerpc/include/asm/mmu_context.h +++ b/arch/powerpc/include/asm/mmu_context.h | |||
@@ -19,16 +19,18 @@ extern void destroy_context(struct mm_struct *mm); | |||
19 | struct mm_iommu_table_group_mem_t; | 19 | struct mm_iommu_table_group_mem_t; |
20 | 20 | ||
21 | extern int isolate_lru_page(struct page *page); /* from internal.h */ | 21 | extern int isolate_lru_page(struct page *page); /* from internal.h */ |
22 | extern bool mm_iommu_preregistered(void); | 22 | extern bool mm_iommu_preregistered(struct mm_struct *mm); |
23 | extern long mm_iommu_get(unsigned long ua, unsigned long entries, | 23 | extern long mm_iommu_get(struct mm_struct *mm, |
24 | unsigned long ua, unsigned long entries, | ||
24 | struct mm_iommu_table_group_mem_t **pmem); | 25 | struct mm_iommu_table_group_mem_t **pmem); |
25 | extern long mm_iommu_put(struct mm_iommu_table_group_mem_t *mem); | 26 | extern long mm_iommu_put(struct mm_struct *mm, |
27 | struct mm_iommu_table_group_mem_t *mem); | ||
26 | extern void mm_iommu_init(struct mm_struct *mm); | 28 | extern void mm_iommu_init(struct mm_struct *mm); |
27 | extern void mm_iommu_cleanup(struct mm_struct *mm); | 29 | extern void mm_iommu_cleanup(struct mm_struct *mm); |
28 | extern struct mm_iommu_table_group_mem_t *mm_iommu_lookup(unsigned long ua, | 30 | extern struct mm_iommu_table_group_mem_t *mm_iommu_lookup(struct mm_struct *mm, |
29 | unsigned long size); | 31 | unsigned long ua, unsigned long size); |
30 | extern struct mm_iommu_table_group_mem_t *mm_iommu_find(unsigned long ua, | 32 | extern struct mm_iommu_table_group_mem_t *mm_iommu_find(struct mm_struct *mm, |
31 | unsigned long entries); | 33 | unsigned long ua, unsigned long entries); |
32 | extern long mm_iommu_ua_to_hpa(struct mm_iommu_table_group_mem_t *mem, | 34 | extern long mm_iommu_ua_to_hpa(struct mm_iommu_table_group_mem_t *mem, |
33 | unsigned long ua, unsigned long *hpa); | 35 | unsigned long ua, unsigned long *hpa); |
34 | extern long mm_iommu_mapped_inc(struct mm_iommu_table_group_mem_t *mem); | 36 | extern long mm_iommu_mapped_inc(struct mm_iommu_table_group_mem_t *mem); |