Commit fa794199 authored by Cliff Wickman's avatar Cliff Wickman Committed by Linus Torvalds

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: default avatarCliff Wickman <cpw@sgi.com>
Acked-by: default avatarRobin Holt <holt@sgi.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 240aadee
...@@ -172,6 +172,7 @@ void __mmu_notifier_invalidate_range_start(struct mm_struct *mm, ...@@ -172,6 +172,7 @@ void __mmu_notifier_invalidate_range_start(struct mm_struct *mm,
} }
srcu_read_unlock(&srcu, id); srcu_read_unlock(&srcu, id);
} }
EXPORT_SYMBOL_GPL(__mmu_notifier_invalidate_range_start);
void __mmu_notifier_invalidate_range_end(struct mm_struct *mm, void __mmu_notifier_invalidate_range_end(struct mm_struct *mm,
unsigned long start, unsigned long end) unsigned long start, unsigned long end)
...@@ -187,6 +188,7 @@ void __mmu_notifier_invalidate_range_end(struct mm_struct *mm, ...@@ -187,6 +188,7 @@ void __mmu_notifier_invalidate_range_end(struct mm_struct *mm,
} }
srcu_read_unlock(&srcu, id); srcu_read_unlock(&srcu, id);
} }
EXPORT_SYMBOL_GPL(__mmu_notifier_invalidate_range_end);
static int do_mmu_notifier_register(struct mmu_notifier *mn, static int do_mmu_notifier_register(struct mmu_notifier *mn,
struct mm_struct *mm, struct mm_struct *mm,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment