Skip to content

Create 'old' ptes for faultaround mappings on arm64 with hardware access flag

Will Deacon linux-arm-kernel linux-mm lkml 4 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v4 Latest8 patches 15 repliesIn review
  2. v38 patches 14 repliesSuperseded
  3. v23 patches 15 repliesSuperseded
Earlier versions · 1
VersionPostedPatchesRepliesStatus
v12 patches52 repliesSuperseded

Patches in v4 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/8mm: Cleanup faultaround and finish_fault() codepathsfs/xfs/xfs_file.c include/linux/mm.h include/linux/pgtable.h +2 more+213 -1920 replies
2/8mm: Allow architectures to request 'old' entries when prefaultinginclude/linux/mm.h mm/filemap.c mm/memory.c+33 -60 replies
3/8arm64: mm: Implement arch_wants_old_prefaulted_pte()arch/arm64/include/asm/pgtable.h+11 -10 replies
4/8mm: Move immutable fields of 'struct vm_fault' into anonymous structinclude/linux/mm.h+8 -52 replies
5/8mm: Pass 'address' to map to do_set_pte() and drop FAULT_FLAG_PREFAULTinclude/linux/mm.h mm/filemap.c mm/memory.c+14 -240 replies
6/8mm: Avoid modifying vmf.address in __collapse_huge_page_swapin()mm/khugepaged.c+18 -190 replies
7/8mm: Use static initialisers for immutable fields of 'struct vm_fault'mm/shmem.c mm/swapfile.c+9 -82 replies
8/8mm: Mark anonymous struct field of 'struct vm_fault' as 'const'include/linux/mm.h+1 -18 replies

Reviews trailers per patch

1 of 8 patches has a Reviewed-by or Acked-by.

PatchNick Desaulniers
1/8
2/8
3/8
4/8
5/8
6/8
7/8R-b
8/8

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v4 thread

Cover letter [PATCH v4 0/8] Create 'old' ptes for faultaround mappings on arm64 with hardware access flag

Hi all,

This is version four of the patches I previously posted here:

v1: https://lore.kernel.org/r/[email protected]
v2: https://lore.kernel.org/r/[email protected]
v3: https://lore.kernel.org/r/[email protected]

The patches allow architectures to opt-in at runtime for faultaround mappings to be created as 'old' instead of 'young'. Although there have been previous attempts at this, they failed either because the decision was deferred to userspace [1] or because it was done unconditionally and shown to regress benchmarks for particular architectures [2].

The big change since v3 is that the immutable fields of 'struct vm_fault' now live in a 'const' anonymous struct. Although Clang will silently accept modifications to these fields [3], GCC emits an error. The resulting diffstat is _considerably_ more manageable with this approach.

As before, I've also updated this branch:

https://git.kernel.org/pub/scm/linux/kernel/git/will/linux.git/log/?h=faultaround

Cheers,

Will

[1] https://www.spinics.net/lists/linux-mm/msg143831.html
[2] 315d09bf30c2 ("Revert "mm: make faultaround produce old ptes"")
[3] https://bugs.llvm.org/show_bug.cgi?id=48755

Cc Catalin Marinas <[email protected]>
Cc Jan Kara <[email protected]>
Cc Minchan Kim <[email protected]>
Cc Andrew Morton <[email protected]>
Cc Kirill A. Shutemov <[email protected]>
Cc Linus Torvalds <[email protected]>
Cc Vinayak Menon <[email protected]>
Cc Andrew Morton <[email protected]>
Cc Hugh Dickins <[email protected]>
Cc Nick Desaulniers <[email protected]>

--->8

Kirill A. Shutemov (1):
mm: Cleanup faultaround and finish_fault() codepaths

Will Deacon (7):
mm: Allow architectures to request 'old' entries when prefaulting
arm64: mm: Implement arch_wants_old_prefaulted_pte()
mm: Move immutable fields of 'struct vm_fault' into anonymous struct
mm: Pass 'address' to map to do_set_pte() and drop FAULT_FLAG_PREFAULT
mm: Avoid modifying vmf.address in __collapse_huge_page_swapin()
mm: Use static initialisers for immutable fields of 'struct vm_fault'
mm: Mark anonymous struct field of 'struct vm_fault' as 'const'

 arch/arm64/include/asm/pgtable.h |  12 +-
 fs/xfs/xfs_file.c                |   6 +-
 include/linux/mm.h               |  25 ++--
 include/linux/pgtable.h          |  11 ++
 mm/filemap.c                     | 178 ++++++++++++++++++------
 mm/khugepaged.c                  |  37 +++--
 mm/memory.c                      | 223 +++++++++++--------------------
 mm/shmem.c                       |   6 +-
 mm/swapfile.c                    |  11 +-
 9 files changed, 280 insertions(+), 229 deletions(-)
Signature · 1 line
2.30.0.284.gd98b1dd5eaa7-goog