[GIT PULL] ARC changes for 5.15-rc1

From: Vineet Gupta
Date: Sat Sep 04 2021 - 23:20:31 EST


Hi Linus,

Finally a big pile of changes for ARC (atomics/mm). These are from our internal arc64 tree, preparing mainline for eventual arc64 support. I'm spreading them to avoid tsunami of patches in one release. Please pull.

Thx,
-Vineet
--------------->

The following changes since commit e22ce8eb631bdc47a4a4ea7ecf4e4ba499db4f93:

  Linux 5.14-rc7 (2021-08-22 14:24:56 -0700)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc.git/ tags/arc-5.15-rc1

for you to fetch changes up to 56809a28d45fcad94b28cfd614600568c0d46545:

  ARC: mm: vmalloc sync from kernel to user table to update PMD ... (2021-08-26 13:43:19 -0700)

----------------------------------------------------------------
ARC changes for v5.15-rc1

 - MM rework
   + Implementing up to 4 paging levels (needed in MMUv6)
   + Enable STRICT_MM_TYPECHECK
   + switch pgtable_t back to struct page *

 - Atomics rework / implementing relaxed accessors

 - Retiring support for legacy ARC750 cores and MMUv1,v2

 - A few other build errors, typos

----------------------------------------------------------------
Changcheng Deng (1):
      arch/arc/kernel/: fix misspellings using codespell tool

Randy Dunlap (1):
      ARC: export clear_user_page() for modules

Vineet Gupta (31):
      ARC: atomics: disintegrate header
      ARC: atomic: !LLSC: remove hack in atomic_set() for for UP
      ARC: atomic: !LLSC: use int data type consistently
      ARC: atomic64: LLSC: elide unused atomic_{and,or,xor,andnot}_return
      ARC: atomics: implement relaxed variants
      ARC: switch to generic bitops
      ARC: bitops: fls/ffs to take int (vs long) per asm-generic defines
      ARC: xchg: !LLSC: remove UP micro-optimization/hack
      ARC: cmpxchg/xchg: rewrite as macros to make type safe
      ARC: cmpxchg/xchg: implement relaxed variants (LLSC config only)
      ARC: atomic_cmpxchg/atomic_xchg: implement relaxed variants
      ARC: retire ARC750 support
      ARC: retire MMUv1 and MMUv2 support
      ARC: mm: use SCRATCH_DATA0 register for caching pgdir in ARCv2 only
      ARC: mm: remove tlb paranoid code
      ARC: mm: move mmu/cache externs out to setup.h
      ARC: mm: Fixes to allow STRICT_MM_TYPECHECKS
      ARC: mm: Enable STRICT_MM_TYPECHECKS
      ARC: ioremap: use more commonly used PAGE_KERNEL based uncached flag
      ARC: mm: pmd_populate* to use the canonical set_pmd (and drop pmd_set)
      ARC: mm: non-functional code movement/cleanup
      ARC: mm: move MMU specific bits out of ASID allocator
      ARC: mm: move MMU specific bits out of entry code ...
      ARC: mm: disintegrate mmu.h (arcv2 bits out)
      ARC: mm: disintegrate pgtable.h into levels and flags
      ARC: mm: hack to allow 2 level build with 4 level code
      ARC: mm: switch pgtable_t back to struct page *
      ARC: mm: switch to asm-generic/pgalloc.h
      ARC: mm: support 3 levels of page tables
      ARC: mm: support 4 levels of page tables
      ARC: mm: vmalloc sync from kernel to user table to update PMD ...

 arch/arc/Kconfig |  41 +--
 arch/arc/include/asm/atomic-llsc.h |  97 +++++++
 arch/arc/include/asm/atomic-spinlock.h | 102 +++++++
 arch/arc/include/asm/atomic.h | 444 ++----------------------------
 arch/arc/include/asm/atomic64-arcv2.h | 250 +++++++++++++++++
 arch/arc/include/asm/bitops.h | 188 +------------
 arch/arc/include/asm/cache.h |   4 -
 arch/arc/include/asm/cmpxchg.h | 233 ++++++++--------
 arch/arc/include/asm/entry-compact.h |   8 -
 arch/arc/include/asm/hugepage.h |   8 -
 arch/arc/include/asm/mmu-arcv2.h | 103 +++++++
 arch/arc/include/asm/mmu.h |  87 +-----
 arch/arc/include/asm/mmu_context.h |  28 +-
 arch/arc/include/asm/page.h |  74 +++--
 arch/arc/include/asm/pgalloc.h |  81 ++----
 arch/arc/include/asm/pgtable-bits-arcv2.h | 149 ++++++++++
 arch/arc/include/asm/pgtable-levels.h | 189 +++++++++++++
 arch/arc/include/asm/pgtable.h | 339 +----------------------
 arch/arc/include/asm/processor.h |   2 +-
 arch/arc/include/asm/setup.h |  12 +-
 arch/arc/include/asm/smp.h |  14 -
 arch/arc/include/asm/tlb-mmu1.h | 101 -------
 arch/arc/kernel/entry-arcv2.S |   1 +
 arch/arc/kernel/entry.S |   7 +-
 arch/arc/kernel/intc-compact.c |   2 +-
 arch/arc/kernel/smp.c |   4 +-
 arch/arc/kernel/stacktrace.c |   2 +-
 arch/arc/mm/cache.c | 112 +-------
 arch/arc/mm/fault.c |  20 +-
 arch/arc/mm/init.c |   5 +
 arch/arc/mm/ioremap.c |   3 +-
 arch/arc/mm/tlb.c | 268 +++---------------
 arch/arc/mm/tlbex.S |  84 ++----
 33 files changed, 1226 insertions(+), 1836 deletions(-)
 create mode 100644 arch/arc/include/asm/atomic-llsc.h
 create mode 100644 arch/arc/include/asm/atomic-spinlock.h
 create mode 100644 arch/arc/include/asm/atomic64-arcv2.h
 create mode 100644 arch/arc/include/asm/mmu-arcv2.h
 create mode 100644 arch/arc/include/asm/pgtable-bits-arcv2.h
 create mode 100644 arch/arc/include/asm/pgtable-levels.h
 delete mode 100644 arch/arc/include/asm/tlb-mmu1.h