aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/include
diff options
context:
space:
mode:
authorAlexey Kardashevskiy <aik@ozlabs.ru>2017-03-16 20:48:27 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-03-22 07:43:37 -0400
commit5b34666bd2e70046f9880db01119c7d908e0888d (patch)
tree47e3102213d5ccd30647bad1102dbfcdc8556680 /arch/powerpc/include
parent2ba7ef21820ec5cb2376078774e24d6f6a7386b2 (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.h16
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);
19struct mm_iommu_table_group_mem_t; 19struct mm_iommu_table_group_mem_t;
20 20
21extern int isolate_lru_page(struct page *page); /* from internal.h */ 21extern int isolate_lru_page(struct page *page); /* from internal.h */
22extern bool mm_iommu_preregistered(void); 22extern bool mm_iommu_preregistered(struct mm_struct *mm);
23extern long mm_iommu_get(unsigned long ua, unsigned long entries, 23extern 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);
25extern long mm_iommu_put(struct mm_iommu_table_group_mem_t *mem); 26extern long mm_iommu_put(struct mm_struct *mm,
27 struct mm_iommu_table_group_mem_t *mem);
26extern void mm_iommu_init(struct mm_struct *mm); 28extern void mm_iommu_init(struct mm_struct *mm);
27extern void mm_iommu_cleanup(struct mm_struct *mm); 29extern void mm_iommu_cleanup(struct mm_struct *mm);
28extern struct mm_iommu_table_group_mem_t *mm_iommu_lookup(unsigned long ua, 30extern 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);
30extern struct mm_iommu_table_group_mem_t *mm_iommu_find(unsigned long ua, 32extern 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);
32extern long mm_iommu_ua_to_hpa(struct mm_iommu_table_group_mem_t *mem, 34extern 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);
34extern long mm_iommu_mapped_inc(struct mm_iommu_table_group_mem_t *mem); 36extern long mm_iommu_mapped_inc(struct mm_iommu_table_group_mem_t *mem);