All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC v3 00/17] Speculative page faults
@ 2017-04-27 15:52 ` Laurent Dufour
  0 siblings, 0 replies; 48+ messages in thread
From: Laurent Dufour @ 2017-04-27 15:52 UTC (permalink / raw)
  To: paulmck, peterz, akpm, kirill, ak, mhocko, dave, jack
  Cc: linux-kernel, linux-mm, haren, khandual, npiggin, bsingharora

This is a port on kernel 4.10 of the work done by Peter Zijlstra to
handle page fault without holding the mm semaphore.

http://linux-kernel.2935.n7.nabble.com/RFC-PATCH-0-6-Another-go-at-speculative-page-faults-tt965642.html#none

This series is functional on x86, but there may be some pending
issues. It's building on top of v4.10.

Compared to the Peter initial work, this series introduces a try spin
lock when dealing with speculative page fault. This is required to
avoid dead lock when handling a page fault while a TLB invalidate is
requested by an other CPU holding the PTE. Another change due to a
lock dependency issue with mapping->i_mmap_rwsem.

This series also protect changes to VMA's data which are read or
change by the page fault handler. The protections is done through the
VMA's sequence number.

Laurent Dufour (11):
  mm: Introduce pte_spinlock
  mm/spf: Try spin lock in speculative path
  mm/spf: Fix fe.sequence init in __handle_mm_fault()
  mm/spf: don't set fault entry's fields if locking failed
  mm/spf; fix lock dependency against mapping->i_mmap_rwsem
  mm/spf: Protect changes to vm_flags
  mm/spf Protect vm_policy's changes against speculative pf
  x86/mm: Update the handle_speculative_fault's path
  mm/spf: Add check on the VMA's flags
  mm: protect madvise vs speculative pf
  mm/spf: protect mremap() against speculative pf

Peter Zijlstra (6):
  mm: Dont assume page-table invariance during faults
  mm: Prepare for FAULT_FLAG_SPECULATIVE
  mm: VMA sequence count
  RCU free VMAs
  mm: Provide speculative fault infrastructure
  mm,x86: Add speculative pagefault handling

 arch/x86/mm/fault.c      |  15 +++
 fs/proc/task_mmu.c       |   2 +
 include/linux/mm.h       |   4 +
 include/linux/mm_types.h |   3 +
 kernel/fork.c            |   1 +
 mm/init-mm.c             |   1 +
 mm/internal.h            |  18 +++
 mm/madvise.c             |   5 +-
 mm/memory.c              | 284 +++++++++++++++++++++++++++++++++++++++--------
 mm/mempolicy.c           |  10 +-
 mm/mlock.c               |   9 +-
 mm/mmap.c                | 121 +++++++++++++++-----
 mm/mprotect.c            |   2 +
 mm/mremap.c              |   7 ++
 14 files changed, 402 insertions(+), 80 deletions(-)

-- 
2.7.4

^ permalink raw reply	[flat|nested] 48+ messages in thread

end of thread, other threads:[~2017-05-03 13:01 UTC | newest]

Thread overview: 48+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-04-27 15:52 [RFC v3 00/17] Speculative page faults Laurent Dufour
2017-04-27 15:52 ` Laurent Dufour
2017-04-27 15:52 ` [RFC v3 01/17] mm: Dont assume page-table invariance during faults Laurent Dufour
2017-04-27 15:52   ` Laurent Dufour
2017-04-27 15:52 ` [RFC v3 02/17] mm: Prepare for FAULT_FLAG_SPECULATIVE Laurent Dufour
2017-04-27 15:52   ` Laurent Dufour
2017-04-27 15:52 ` [RFC v3 03/17] mm: Introduce pte_spinlock Laurent Dufour
2017-04-27 15:52   ` Laurent Dufour
2017-04-30  4:47   ` Matthew Wilcox
2017-04-30  4:47     ` Matthew Wilcox
2017-05-03 13:01     ` Laurent Dufour
2017-05-03 13:01       ` Laurent Dufour
2017-04-27 15:52 ` [RFC v3 04/17] mm: VMA sequence count Laurent Dufour
2017-04-27 15:52   ` Laurent Dufour
2017-04-27 15:52 ` [RFC v3 05/17] RCU free VMAs Laurent Dufour
2017-04-27 15:52   ` Laurent Dufour
2017-04-27 18:28   ` Paul E. McKenney
2017-04-27 18:28     ` Paul E. McKenney
2017-04-30  4:57   ` Matthew Wilcox
2017-04-30  4:57     ` Matthew Wilcox
2017-04-30  5:05   ` Matthew Wilcox
2017-04-30  5:05     ` Matthew Wilcox
2017-05-03  7:23     ` Laurent Dufour
2017-05-03  7:23       ` Laurent Dufour
2017-04-27 15:52 ` [RFC v3 06/17] mm: Provide speculative fault infrastructure Laurent Dufour
2017-04-27 15:52   ` Laurent Dufour
2017-04-27 15:52 ` [RFC v3 07/17] mm,x86: Add speculative pagefault handling Laurent Dufour
2017-04-27 15:52   ` Laurent Dufour
2017-04-27 15:52 ` [RFC v3 08/17] mm/spf: Try spin lock in speculative path Laurent Dufour
2017-04-27 15:52   ` Laurent Dufour
2017-04-27 15:52 ` [RFC v3 09/17] mm/spf: Fix fe.sequence init in __handle_mm_fault() Laurent Dufour
2017-04-27 15:52   ` Laurent Dufour
2017-04-27 15:52 ` [RFC v3 10/17] mm/spf: don't set fault entry's fields if locking failed Laurent Dufour
2017-04-27 15:52   ` Laurent Dufour
2017-04-27 15:52 ` [RFC v3 11/17] mm/spf; fix lock dependency against mapping->i_mmap_rwsem Laurent Dufour
2017-04-27 15:52   ` Laurent Dufour
2017-04-27 15:52 ` [RFC v3 12/17] mm/spf: Protect changes to vm_flags Laurent Dufour
2017-04-27 15:52   ` Laurent Dufour
2017-04-27 15:52 ` [RFC v3 13/17] mm/spf Protect vm_policy's changes against speculative pf Laurent Dufour
2017-04-27 15:52   ` Laurent Dufour
2017-04-27 15:52 ` [RFC v3 14/17] x86/mm: Update the handle_speculative_fault's path Laurent Dufour
2017-04-27 15:52   ` Laurent Dufour
2017-04-27 15:52 ` [RFC v3 15/17] mm/spf: Add check on the VMA's flags Laurent Dufour
2017-04-27 15:52   ` Laurent Dufour
2017-04-27 15:52 ` [RFC v3 16/17] mm: protect madvise vs speculative pf Laurent Dufour
2017-04-27 15:52   ` Laurent Dufour
2017-04-27 15:52 ` [RFC v3 17/17] mm/spf: protect mremap() against " Laurent Dufour
2017-04-27 15:52   ` Laurent Dufour

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.