[PATCH 00/10] arm64 switch_mm improvements

Will Deacon will.deacon at arm.com
Thu Sep 17 05:50:09 PDT 2015


Hello,

This series aims to improve out switch_mm implementation and bring the
ASID allocator up-to-speed with what we already have for arch/arm/.

In particular, this series:

  - Introduces routines for CPU-local I-cache and TLB invalidation, and
    converts relevant callers to use these in preference to the
    inner-shareable variants

  - Rewrites the ASID allocator to use the bitmap algorithm implemented
    for arch/arm/ plus the new relaxed atomics introduced with 4.3 (a
    subsequent patch series will optimise these for arm64).

  - Degrades fullm TLB flushing on exit/execve to a NOP, since the ASID
    allocator will never re-allocate a dirty ASID

  - Kills mm_cpumask, as it is no longer used and therefore doesn't need
    to be kept up-to-date

  - Removes some redundant DSB instructions for synchronising page-table
    updates

Feedback (particularly as a result of testing!) is more than welcome.

Will

--->8

Will Deacon (10):
  arm64: mm: remove unused cpu_set_idmap_tcr_t0sz function
  arm64: proc: de-scope TLBI operation during cold boot
  arm64: flush: use local TLB and I-cache invalidation
  arm64: mm: rewrite ASID allocator and MM context-switching code
  arm64: tlbflush: remove redundant ASID casts to (unsigned long)
  arm64: tlbflush: avoid flushing when fullmm == 1
  arm64: switch_mm: simplify mm and CPU checks
  arm64: mm: kill mm_cpumask usage
  arm64: tlb: remove redundant barrier from __flush_tlb_pgtable
  arm64: mm: remove dsb from update_mmu_cache

 arch/arm64/include/asm/cacheflush.h  |   7 ++
 arch/arm64/include/asm/mmu.h         |  10 +-
 arch/arm64/include/asm/mmu_context.h | 113 ++++-------------
 arch/arm64/include/asm/pgtable.h     |   6 +-
 arch/arm64/include/asm/thread_info.h |   1 -
 arch/arm64/include/asm/tlb.h         |  26 ++--
 arch/arm64/include/asm/tlbflush.h    |  18 ++-
 arch/arm64/kernel/asm-offsets.c      |   2 +-
 arch/arm64/kernel/efi.c              |   5 +-
 arch/arm64/kernel/smp.c              |   9 +-
 arch/arm64/kernel/suspend.c          |   2 +-
 arch/arm64/mm/context.c              | 236 +++++++++++++++++++++--------------
 arch/arm64/mm/mmu.c                  |   2 +-
 arch/arm64/mm/proc.S                 |   6 +-
 14 files changed, 217 insertions(+), 226 deletions(-)

-- 
2.1.4




More information about the linux-arm-kernel mailing list