]> git.karo-electronics.de Git - karo-tx-linux.git/commit
mm: mmu_notifier: have mmu_notifiers use a global SRCU so they may safely schedule
authorSagi Grimberg <sagig@mellanox.co.il>
Fri, 7 Sep 2012 00:23:14 +0000 (10:23 +1000)
committerStephen Rothwell <sfr@canb.auug.org.au>
Mon, 10 Sep 2012 06:18:00 +0000 (16:18 +1000)
commita146dc5bc3cc217f02bf1d8636582d1f301f0cf6
tree1d64f9db2512e6f8d946118261706f06a347c47f
parent5a25d308fee5b0361571ba85614c295dec63ff77
mm: mmu_notifier: have mmu_notifiers use a global SRCU so they may safely schedule

With an RCU based mmu_notifier implementation, any callout to
mmu_notifier_invalidate_range_start(), mmu_notifier_invalidate_range_end()
or mmu_notifier_invalidate_page() would not be allowed to call schedule()
as that could potentially allow a modification to the mmu_notifier
structure while it is currently being used.

Since srcu allocs 4 machine words per instance per cpu, we may end up with
memory exhaustion if we use srcu per mm.  So all mms share a global srcu.
Note that during large mmu_notifier activity exit & unregister paths might
hang for longer periods, but it is tolerable for current mmu_notifier
clients.

Signed-off-by: Sagi Grimberg <sagig@mellanox.co.il>
Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Haggai Eran <haggaie@mellanox.com>
Cc: "Paul E. McKenney" <paulmck@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
include/linux/mmu_notifier.h
mm/mmu_notifier.c