mbox series

[00/14] MIPS: MemoryMapID (MMID) & GINVT Support

Message ID 20190202014242.30680-1-paul.burton@mips.com (mailing list archive)
Headers show
Series MIPS: MemoryMapID (MMID) & GINVT Support | expand

Message

Paul Burton Feb. 2, 2019, 1:43 a.m. UTC
This series introduces support for MemoryMapIDs (MMIDs) & GINVT
instructions. These give us a larger, global namespace for address space
IDs & allow for global invalidation of TLB entries without IPIs.

This has been tested on various configurations of the MIPS I6500, which
is the first CPU to support these features.

Applies cleanly atop v5.0-rc4.

Paul Burton (14):
  MIPS: mm: Define activate_mm() using switch_mm()
  MIPS: mm: Remove redundant drop_mmu_context() cpu argument
  MIPS: mm: Remove redundant get_new_mmu_context() cpu argument
  MIPS: mm: Avoid HTW stop/start when dropping an inactive mm
  MIPS: mm: Consolidate drop_mmu_context() has-ASID checks
  MIPS: mm: Move drop_mmu_context() comment into appropriate block
  MIPS: mm: Remove redundant preempt_disable in local_flush_tlb_mm()
  MIPS: mm: Remove local_flush_tlb_mm()
  MIPS: mm: Split obj-y to a file per line
  MIPS: mm: Un-inline get_new_mmu_context
  MIPS: mm: Unify ASID version checks
  MIPS: mm: Add set_cpu_context() for ASID assignments
  MIPS: Add GINVT instruction helpers
  MIPS: MemoryMapID (MMID) Support

 arch/mips/Makefile                   |   2 +
 arch/mips/include/asm/barrier.h      |  19 ++
 arch/mips/include/asm/cpu-features.h |  13 ++
 arch/mips/include/asm/cpu.h          |   1 +
 arch/mips/include/asm/ginvt.h        |  56 ++++++
 arch/mips/include/asm/mipsregs.h     |  11 +
 arch/mips/include/asm/mmu.h          |   6 +-
 arch/mips/include/asm/mmu_context.h  | 139 +++++++------
 arch/mips/include/asm/tlbflush.h     |   5 +-
 arch/mips/kernel/cpu-probe.c         |  55 ++++-
 arch/mips/kernel/smp.c               |  67 ++++++-
 arch/mips/kernel/traps.c             |   4 +-
 arch/mips/kernel/unaligned.c         |   1 +
 arch/mips/kvm/emulate.c              |   8 +-
 arch/mips/kvm/mips.c                 |   5 +
 arch/mips/kvm/trap_emul.c            |  30 +--
 arch/mips/kvm/vz.c                   |   8 +-
 arch/mips/lib/dump_tlb.c             |  22 +-
 arch/mips/mm/Makefile                |  16 +-
 arch/mips/mm/c-r4k.c                 |   8 +-
 arch/mips/mm/context.c               | 288 +++++++++++++++++++++++++++
 arch/mips/mm/init.c                  |   7 +
 arch/mips/mm/tlb-r3k.c               |  14 +-
 arch/mips/mm/tlb-r4k.c               |  71 ++++---
 arch/mips/mm/tlb-r8k.c               |  10 +-
 25 files changed, 698 insertions(+), 168 deletions(-)
 create mode 100644 arch/mips/include/asm/ginvt.h
 create mode 100644 arch/mips/mm/context.c

Comments

Paul Burton Feb. 4, 2019, 9:18 p.m. UTC | #1
Hello,

Paul Burton wrote:
> This series introduces support for MemoryMapIDs (MMIDs) & GINVT
> instructions. These give us a larger, global namespace for address space
> IDs & allow for global invalidation of TLB entries without IPIs.
> 
> This has been tested on various configurations of the MIPS I6500, which
> is the first CPU to support these features.
> 
> Applies cleanly atop v5.0-rc4.
> 
> Paul Burton (14):
> MIPS: mm: Define activate_mm() using switch_mm()
> MIPS: mm: Remove redundant drop_mmu_context() cpu argument
> MIPS: mm: Remove redundant get_new_mmu_context() cpu argument
> MIPS: mm: Avoid HTW stop/start when dropping an inactive mm
> MIPS: mm: Consolidate drop_mmu_context() has-ASID checks
> MIPS: mm: Move drop_mmu_context() comment into appropriate block
> MIPS: mm: Remove redundant preempt_disable in local_flush_tlb_mm()
> MIPS: mm: Remove local_flush_tlb_mm()
> MIPS: mm: Split obj-y to a file per line
> MIPS: mm: Un-inline get_new_mmu_context
> MIPS: mm: Unify ASID version checks
> MIPS: mm: Add set_cpu_context() for ASID assignments
> MIPS: Add GINVT instruction helpers
> MIPS: MemoryMapID (MMID) Support
> 
> arch/mips/Makefile                   |   2 +
> arch/mips/include/asm/barrier.h      |  19 ++
> arch/mips/include/asm/cpu-features.h |  13 ++
> arch/mips/include/asm/cpu.h          |   1 +
> arch/mips/include/asm/ginvt.h        |  56 ++++++
> arch/mips/include/asm/mipsregs.h     |  11 +
> arch/mips/include/asm/mmu.h          |   6 +-
> arch/mips/include/asm/mmu_context.h  | 139 +++++++------
> arch/mips/include/asm/tlbflush.h     |   5 +-
> arch/mips/kernel/cpu-probe.c         |  55 ++++-
> arch/mips/kernel/smp.c               |  67 ++++++-
> arch/mips/kernel/traps.c             |   4 +-
> arch/mips/kernel/unaligned.c         |   1 +
> arch/mips/kvm/emulate.c              |   8 +-
> arch/mips/kvm/mips.c                 |   5 +
> arch/mips/kvm/trap_emul.c            |  30 +--
> arch/mips/kvm/vz.c                   |   8 +-
> arch/mips/lib/dump_tlb.c             |  22 +-
> arch/mips/mm/Makefile                |  16 +-
> arch/mips/mm/c-r4k.c                 |   8 +-
> arch/mips/mm/context.c               | 288 +++++++++++++++++++++++++++
> arch/mips/mm/init.c                  |   7 +
> arch/mips/mm/tlb-r3k.c               |  14 +-
> arch/mips/mm/tlb-r4k.c               |  71 ++++---
> arch/mips/mm/tlb-r8k.c               |  10 +-
> 25 files changed, 698 insertions(+), 168 deletions(-)
> create mode 100644 arch/mips/include/asm/ginvt.h
> create mode 100644 arch/mips/mm/context.c

Series applied to mips-next.

Thanks,
    Paul

[ This message was auto-generated; if you believe anything is incorrect
  then please email paul.burton@mips.com to report it. ]