LKML Archive on lore.kernel.org help / color / mirror / Atom feed
From: Christoph Lameter <clameter@sgi.com> To: akpm@linux-foundation.org Cc: Andrea Arcangeli <andrea@qumranet.com> Cc: Robin Holt <holt@sgi.com>, Avi Kivity <avi@qumranet.com>, Izik Eidus <izike@qumranet.com> Cc: kvm-devel@lists.sourceforge.net Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: steiner@sgi.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: daniel.blueman@quadrics.com Subject: [patch 0/6] MMU Notifiers V6 Date: Fri, 08 Feb 2008 14:06:16 -0800 [thread overview] Message-ID: <20080208220616.089936205@sgi.com> (raw) This is a patchset implementing MMU notifier callbacks based on Andrea's earlier work. These are needed if Linux pages are referenced from something else than tracked by the rmaps of the kernel (an external MMU). MMU notifiers allow us to get rid of the page pinning for RDMA and various other purposes. It gets rid of the broken use of mlock for page pinning. (mlock really does *not* pin pages....) More information on the rationale and the technical details can be found in the first patch and the README provided by that patch in Documentation/mmu_notifiers. The known immediate users are KVM - Establishes a refcount to the page via get_user_pages(). - External references are called spte. - Has page tables to track pages whose refcount was elevated but no reverse maps. GRU - Simple additional hardware TLB (possibly covering multiple instances of Linux) - Needs TLB shootdown when the VM unmaps pages. - Determines page address via follow_page (from interrupt context) but can fall back to get_user_pages(). - No page reference possible since no page status is kept.. XPmem - Allows use of a processes memory by remote instances of Linux. - Provides its own reverse mappings to track remote pte. - Established refcounts on the exported pages. - Must sleep in order to wait for remote acks of ptes that are being cleared. Andrea's mmu_notifier #4 -> RFC V1 - Merge subsystem rmap based with Linux rmap based approach - Move Linux rmap based notifiers out of macro - Try to account for what locks are held while the notifiers are called. - Develop a patch sequence that separates out the different types of hooks so that we can review their use. - Avoid adding include to linux/mm_types.h - Integrate RCU logic suggested by Peter. V1->V2: - Improve RCU support - Use mmap_sem for mmu_notifier register / unregister - Drop invalidate_page from COW, mm/fremap.c and mm/rmap.c since we already have invalidate_range() callbacks there. - Clean compile for !MMU_NOTIFIER - Isolate filemap_xip strangeness into its own diff - Pass a the flag to invalidate_range to indicate if a spinlock is held. - Add invalidate_all() V2->V3: - Further RCU fixes - Fixes from Andrea to fixup aging and move invalidate_range() in do_wp_page and sys_remap_file_pages() after the pte clearing. V3->V4: - Drop locking and synchronize_rcu() on ->release since we know on release that we are the only executing thread. This is also true for invalidate_all() so we could drop off the mmu_notifier there early. Use hlist_del_init instead of hlist_del_rcu. - Do the invalidation as begin/end pairs with the requirement that the driver holds off new references in between. - Fixup filemap_xip.c - Figure out a potential way in which XPmem can deal with locks that are held. - Robin's patches to make the mmu_notifier logic manage the PageRmapExported bit. - Strip cc list down a bit. - Drop Peters new rcu list macro - Add description to the core patch V4->V5: - Provide missing callouts for mremap. - Provide missing callouts for copy_page_range. - Reduce mm_struct space to zero if !MMU_NOTIFIER by #ifdeffing out structure contents. - Get rid of the invalidate_all() callback by moving ->release in place of invalidate_all. - Require holding mmap_sem on register/unregister instead of acquiring it ourselves. In some contexts where we want to register/unregister we are already holding mmap_sem. - Split out the rmap support patch so that there is no need to apply all patches for KVM and GRU. V5->V6: - Provide missing range callouts for mprotect - Fix do_wp_page control path sequencing - Clarify locking conventions - GRU and XPmem confirmed to work with this patchset. - Provide skeleton code for GRU/KVM type callback and for XPmem type. - Rework documentation and put it into Documentation/mmu_notifier. --
next reply other threads:[~2008-02-08 22:07 UTC|newest] Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top 2008-02-08 22:06 Christoph Lameter [this message] 2008-02-08 22:06 ` [patch 1/6] mmu_notifier: Core code Christoph Lameter 2008-02-08 22:06 ` [patch 2/6] mmu_notifier: Callbacks to invalidate address ranges Christoph Lameter 2008-02-08 22:06 ` [patch 3/6] mmu_notifier: invalidate_page callbacks Christoph Lameter 2008-02-08 22:06 ` [patch 4/6] mmu_notifier: Skeleton driver for a simple mmu_notifier Christoph Lameter 2008-02-08 22:06 ` [patch 5/6] mmu_notifier: Support for drivers with revers maps (f.e. for XPmem) Christoph Lameter 2008-02-08 22:06 ` [patch 6/6] mmu_rmap_notifier: Skeleton for complex driver that uses its own rmaps Christoph Lameter 2008-02-08 22:23 ` [patch 0/6] MMU Notifiers V6 Andrew Morton 2008-02-08 23:32 ` Christoph Lameter 2008-02-08 23:36 ` Robin Holt 2008-02-08 23:41 ` Christoph Lameter 2008-02-08 23:43 ` Robin Holt 2008-02-08 23:56 ` Andrew Morton 2008-02-09 0:05 ` Christoph Lameter 2008-02-09 0:12 ` [ofa-general] " Roland Dreier 2008-02-09 0:16 ` Christoph Lameter 2008-02-09 0:22 ` Roland Dreier 2008-02-09 0:36 ` Christoph Lameter 2008-02-09 1:24 ` Andrea Arcangeli 2008-02-09 1:27 ` Christoph Lameter 2008-02-09 1:56 ` Andrea Arcangeli 2008-02-09 2:16 ` Christoph Lameter 2008-02-09 12:55 ` Rik van Riel 2008-02-09 21:46 ` Christoph Lameter 2008-02-11 22:40 ` Demand paging for memory regions (was Re: MMU Notifiers V6) Roland Dreier 2008-02-12 22:01 ` Steve Wise 2008-02-12 22:10 ` Christoph Lameter 2008-02-12 22:41 ` [ofa-general] Re: Demand paging for memory regions Roland Dreier 2008-02-12 23:14 ` Felix Marti 2008-02-13 0:57 ` Christoph Lameter 2008-02-14 15:09 ` Steve Wise 2008-02-14 15:53 ` Robin Holt 2008-02-14 16:23 ` Steve Wise 2008-02-14 17:48 ` Caitlin Bestler 2008-02-14 19:39 ` Christoph Lameter 2008-02-14 20:17 ` Caitlin Bestler 2008-02-14 20:20 ` Christoph Lameter 2008-02-14 22:43 ` Caitlin Bestler 2008-02-14 22:48 ` Christoph Lameter 2008-02-15 1:26 ` Caitlin Bestler 2008-02-15 2:37 ` Christoph Lameter 2008-02-15 18:09 ` Caitlin Bestler 2008-02-15 18:45 ` Christoph Lameter 2008-02-15 18:53 ` Caitlin Bestler 2008-02-15 20:02 ` Christoph Lameter 2008-02-15 20:14 ` Caitlin Bestler 2008-02-15 22:50 ` Christoph Lameter 2008-02-15 23:50 ` Caitlin Bestler 2008-02-12 23:23 ` Jason Gunthorpe 2008-02-13 1:01 ` Christoph Lameter 2008-02-13 1:26 ` Jason Gunthorpe 2008-02-13 1:45 ` Steve Wise 2008-02-13 2:35 ` Christoph Lameter 2008-02-13 3:25 ` Jason Gunthorpe 2008-02-13 3:56 ` Patrick Geoffray 2008-02-13 4:26 ` Jason Gunthorpe 2008-02-13 4:47 ` Patrick Geoffray 2008-02-13 18:51 ` Christoph Lameter 2008-02-13 19:51 ` Jason Gunthorpe 2008-02-13 20:36 ` Christoph Lameter 2008-02-13 4:09 ` Christian Bell 2008-02-13 19:00 ` Christoph Lameter 2008-02-13 19:46 ` Christian Bell 2008-02-13 20:32 ` Christoph Lameter 2008-02-13 22:44 ` Kanoj Sarcar 2008-02-13 23:02 ` Christoph Lameter 2008-02-13 23:43 ` Kanoj Sarcar 2008-02-13 23:48 ` Jesse Barnes 2008-02-14 0:56 ` [ofa-general] " Andrea Arcangeli 2008-02-14 19:35 ` Christoph Lameter 2008-02-13 23:23 ` Pete Wyckoff 2008-02-14 0:01 ` Jason Gunthorpe 2008-02-27 22:11 ` Christoph Lameter 2008-02-13 1:55 ` Christian Bell 2008-02-13 2:19 ` Christoph Lameter 2008-02-13 0:56 ` Christoph Lameter 2008-02-13 12:11 ` Christoph Raisch 2008-02-13 19:02 ` Christoph Lameter 2008-02-09 0:12 ` [patch 0/6] MMU Notifiers V6 Andrew Morton 2008-02-09 0:18 ` Christoph Lameter 2008-02-13 14:31 ` Jack Steiner
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20080208220616.089936205@sgi.com \ --to=clameter@sgi.com \ --cc=akpm@linux-foundation.org \ --cc=andrea@qumranet.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).