Skip to content

mm: Preemptibility -v4

Peter Zijlstra linux-arch lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest20 patches 25 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/20powerpc: Use call_rcu_sched() for pagetablesarch/powerpc/mm/pgtable.c+1 -11 reply
2/20mm: Improve page_lock_anon_vma() commentmm/rmap.c+16 -20 replies
3/20mm: Rename drop_anon_vma to put_anon_vmainclude/linux/rmap.h mm/ksm.c mm/migrate.c +1 more+10 -101 reply
4/20mm: Move anon_vma ref out from under CONFIG_KSMinclude/linux/rmap.h mm/rmap.c+10 -440 replies
5/20mm: Simplify anon_vma refcountsinclude/linux/rmap.h mm/ksm.c mm/rmap.c+38 -561 reply
6/20mm: Use refcounts for page_lock_anon_vma()mm/rmap.c+17 -60 replies
7/20mm: Preemptible mmu_gatherfs/exec.c include/asm-generic/tlb.h include/linux/mm.h +2 more+53 -530 replies
8/20powerpc: Preemptible mmu_gatherarch/powerpc/include/asm/pgalloc.h arch/powerpc/include/asm/thread_info.h arch/powerpc/include/asm/tlb.h +5 more+46 -193 replies
9/20sparc: Preemptible mmu_gatherarch/sparc/include/asm/pgalloc_64.h arch/sparc/include/asm/tlb_64.h arch/sparc/include/asm/tlbflush_64.h +2 more+51 -1120 replies
10/20s390: preemptible mmu_gatherarch/s390/include/asm/tlb.h+25 -180 replies
11/20arm: Preemptible mmu_gatherarch/arm/include/asm/tlb.h+2 -100 replies
12/20sh: Preemptible mmu_gatherarch/sh/include/asm/tlb.h+2 -100 replies
13/20um: Preemptible mmu_gatherarch/um/include/asm/tlb.h+2 -140 replies
14/20ia64: Preemptible mmu_gatherarch/ia64/include/asm/tlb.h+25 -131 reply
15/20mm, powerpc: Move the RCU page-table freeing into generic codearch/powerpc/include/asm/pgalloc.h arch/powerpc/include/asm/tlb.h arch/powerpc/mm/pgtable.c +5 more+149 -1250 replies
16/20lockdep, mutex: Provide mutex_lock_nest_lockinclude/linux/lockdep.h include/linux/mutex.h kernel/mutex.c+29 -80 replies
17/20mutex: Provide mutex_is_contendedinclude/linux/mutex.h+5 -00 replies
18/20mm: Convert i_mmap_lock and anon_vma->lock to mutexesarch/x86/mm/hugetlbpage.c fs/gfs2/main.c fs/hugetlbfs/inode.c +14 more+58 -580 replies
19/20mm: Extended batches for generic mmu_gatherinclude/asm-generic/tlb.h+82 -400 replies
20/20mm: Optimize page_lock_anon_vma() fast-pathmm/rmap.c+61 -40 replies

Reviews trailers per patch

5 of 20 patches have a Reviewed-by or Acked-by.

PatchKOSAKI MotohiroMel GormanNick PigginDavid MillerPekka EnbergBenjamin Herrenschmidt
1/20A-b
2/20R-b A-b
3/20A-b
4/20A-b
5/20A-b
6/20
7/20
8/20
9/20
10/20
11/20
12/20
13/20
14/20
15/20Requested-by
16/20
17/20
18/20
19/20Requested-by
20/20

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 6 reviewers.

Read the v1 thread

Cover letter [PATCH 00/20] mm: Preemptibility -v4

This patch-set makes part of the mm a lot more preemptible. It converts i_mmap_lock and anon_vma->lock to mutexes and makes mmu_gather fully preemptible.

The main motivation was making mm_take_all_locks() preemptible, since it appears people are nesting hundreds of spinlocks there.

The side-effects are that can finally make mmu_gather preemptible, something which lots of people have wanted to do for a long time.

It also gets us anon_vma refcounting, which seems to result in a nice cleanup of the anon_vma lifetime rules wrt KSM and compaction.

This patch-set it build and boot-tested on x86_64 (a previous version was also tested on Dave's Niagra2 machines, and I suppose s390 did too when Martin provided the conversion patch for his arch).

There are no known architectures left unconverted, although some arch code never did see a compiler (superh and ia64 come to mind, I'll try and update my toolchains next week).

Yanmin ran the last posting through the comprehensive Intel test farm and didn't find any regressions.

( Not included in this posting are the 4 Sparc64 patches that implement
gup_fast, those can be applied separately after this series gets anywhere. )

Full series (including the Sparc64 gup_fast bits) also available in -git form from (against Linus' tree as of about an hour ago):

git://git.kernel.org/pub/scm/linux/kernel/git/peterz/linux-2.6-mmu_preempt.git mmu_preempt

Do people feel its ready to get added to -next?