aboutsummaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
authorCliff Wickman <cpw@sgi.com>2013-02-22 19:35:58 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2013-02-23 20:50:23 -0500
commitfa794199e36a13063913e75487001b3038316e51 (patch)
tree2b3b250e0706e40978a6b8611b49f276517271aa /mm
parent240aadeedc4a89fc44623f8ce4ca46bda73db07e (diff)
mm: export mmu notifier invalidates
We at SGI have a need to address some very high physical address ranges with our GRU (global reference unit), sometimes across partitioned machine boundaries and sometimes with larger addresses than the cpu supports. We do this with the aid of our own 'extended vma' module which mimics the vma. When something (either unmap or exit) frees an 'extended vma' we use the mmu notifiers to clean them up. We had been able to mimic the functions __mmu_notifier_invalidate_range_start() and __mmu_notifier_invalidate_range_end() by locking the per-mm lock and walking the per-mm notifier list. But with the change to a global srcu lock (static in mmu_notifier.c) we can no longer do that. Our module has no access to that lock. So we request that these two functions be exported. Signed-off-by: Cliff Wickman <cpw@sgi.com> Acked-by: Robin Holt <holt@sgi.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm')
-rw-r--r--mm/mmu_notifier.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/mm/mmu_notifier.c b/mm/mmu_notifier.c
index f5c3d968d8c6..2175fb0d501c 100644
--- a/mm/mmu_notifier.c
+++ b/mm/mmu_notifier.c
@@ -172,6 +172,7 @@ void __mmu_notifier_invalidate_range_start(struct mm_struct *mm,
172 } 172 }
173 srcu_read_unlock(&srcu, id); 173 srcu_read_unlock(&srcu, id);
174} 174}
175EXPORT_SYMBOL_GPL(__mmu_notifier_invalidate_range_start);
175 176
176void __mmu_notifier_invalidate_range_end(struct mm_struct *mm, 177void __mmu_notifier_invalidate_range_end(struct mm_struct *mm,
177 unsigned long start, unsigned long end) 178 unsigned long start, unsigned long end)
@@ -187,6 +188,7 @@ void __mmu_notifier_invalidate_range_end(struct mm_struct *mm,
187 } 188 }
188 srcu_read_unlock(&srcu, id); 189 srcu_read_unlock(&srcu, id);
189} 190}
191EXPORT_SYMBOL_GPL(__mmu_notifier_invalidate_range_end);
190 192
191static int do_mmu_notifier_register(struct mmu_notifier *mn, 193static int do_mmu_notifier_register(struct mmu_notifier *mn,
192 struct mm_struct *mm, 194 struct mm_struct *mm,