linux/arch/xtensa/include/asm
Linus Torvalds edd7ab7684 The new preemtible kmap_local() implementation:
- Consolidate all kmap_atomic() internals into a generic implementation
     which builds the base for the kmap_local() API and make the
     kmap_atomic() interface wrappers which handle the disabling/enabling of
     preemption and pagefaults.
 
   - Switch the storage from per-CPU to per task and provide scheduler
     support for clearing mapping when scheduling out and restoring them
     when scheduling back in.
 
   - Merge the migrate_disable/enable() code, which is also part of the
     scheduler pull request. This was required to make the kmap_local()
     interface available which does not disable preemption when a mapping
     is established. It has to disable migration instead to guarantee that
     the virtual address of the mapped slot is the same accross preemption.
 
   - Provide better debug facilities: guard pages and enforced utilization
     of the mapping mechanics on 64bit systems when the architecture allows
     it.
 
   - Provide the new kmap_local() API which can now be used to cleanup the
     kmap_atomic() usage sites all over the place. Most of the usage sites
     do not require the implicit disabling of preemption and pagefaults so
     the penalty on 64bit and 32bit non-highmem systems is removed and quite
     some of the code can be simplified. A wholesale conversion is not
     possible because some usage depends on the implicit side effects and
     some need to be cleaned up because they work around these side effects.
 
     The migrate disable side effect is only effective on highmem systems
     and when enforced debugging is enabled. On 64bit and 32bit non-highmem
     systems the overhead is completely avoided.
 -----BEGIN PGP SIGNATURE-----
 
 iQJHBAABCgAxFiEEQp8+kY+LLUocC4bMphj1TA10mKEFAl/XyQwTHHRnbHhAbGlu
 dXRyb25peC5kZQAKCRCmGPVMDXSYoUolD/9+R+BX96fGir+I8rG9dc3cbLw5meSi
 0I/Nq3PToZMs2Iqv50DsoaPYHHz/M6fcAO9LRIgsE9jRbnY93GnsBM0wU9Y8yQaT
 4wUzOG5WHaLDfqIkx/CN9coUl458oEiwOEbn79A2FmPXFzr7IpkufnV3ybGDwzwP
 p73bjMJMPPFrsa9ig87YiYfV/5IAZHi82PN8Cq1v4yNzgXRP3Tg6QoAuCO84ZnWF
 RYlrfKjcJ2xPdn+RuYyXolPtxr1hJQ0bOUpe4xu/UfeZjxZ7i1wtwLN9kWZe8CKH
 +x4Lz8HZZ5QMTQ9sCHOLtKzu2MceMcpISzoQH4/aFQCNMgLn1zLbS790XkYiQCuR
 ne9Cua+IqgYfGMG8cq8+bkU9HCNKaXqIBgPEKE/iHYVmqzCOqhW5Cogu4KFekf6V
 Wi7pyyUdX2en8BAWpk5NHc8de9cGcc+HXMq2NIcgXjVWvPaqRP6DeITERTZLJOmz
 XPxq5oPLGl7wdm7z+ICIaNApy8zuxpzb6sPLNcn7l5OeorViORlUu08AN8587wAj
 FiVjp6ZYomg+gyMkiNkDqFOGDH5TMENpOFoB0hNNEyJwwS0xh6CgWuwZcv+N8aPO
 HuS/P+tNANbD8ggT4UparXYce7YCtgOf3IG4GA3JJYvYmJ6pU+AZOWRoDScWq4o+
 +jlfoJhMbtx5Gg==
 =n71I
 -----END PGP SIGNATURE-----

Merge tag 'core-mm-2020-12-14' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull kmap updates from Thomas Gleixner:
 "The new preemtible kmap_local() implementation:

   - Consolidate all kmap_atomic() internals into a generic
     implementation which builds the base for the kmap_local() API and
     make the kmap_atomic() interface wrappers which handle the
     disabling/enabling of preemption and pagefaults.

   - Switch the storage from per-CPU to per task and provide scheduler
     support for clearing mapping when scheduling out and restoring them
     when scheduling back in.

   - Merge the migrate_disable/enable() code, which is also part of the
     scheduler pull request. This was required to make the kmap_local()
     interface available which does not disable preemption when a
     mapping is established. It has to disable migration instead to
     guarantee that the virtual address of the mapped slot is the same
     across preemption.

   - Provide better debug facilities: guard pages and enforced
     utilization of the mapping mechanics on 64bit systems when the
     architecture allows it.

   - Provide the new kmap_local() API which can now be used to cleanup
     the kmap_atomic() usage sites all over the place. Most of the usage
     sites do not require the implicit disabling of preemption and
     pagefaults so the penalty on 64bit and 32bit non-highmem systems is
     removed and quite some of the code can be simplified. A wholesale
     conversion is not possible because some usage depends on the
     implicit side effects and some need to be cleaned up because they
     work around these side effects.

     The migrate disable side effect is only effective on highmem
     systems and when enforced debugging is enabled. On 64bit and 32bit
     non-highmem systems the overhead is completely avoided"

* tag 'core-mm-2020-12-14' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (33 commits)
  ARM: highmem: Fix cache_is_vivt() reference
  x86/crashdump/32: Simplify copy_oldmem_page()
  io-mapping: Provide iomap_local variant
  mm/highmem: Provide kmap_local*
  sched: highmem: Store local kmaps in task struct
  x86: Support kmap_local() forced debugging
  mm/highmem: Provide CONFIG_DEBUG_KMAP_LOCAL_FORCE_MAP
  mm/highmem: Provide and use CONFIG_DEBUG_KMAP_LOCAL
  microblaze/mm/highmem: Add dropped #ifdef back
  xtensa/mm/highmem: Make generic kmap_atomic() work correctly
  mm/highmem: Take kmap_high_get() properly into account
  highmem: High implementation details and document API
  Documentation/io-mapping: Remove outdated blurb
  io-mapping: Cleanup atomic iomap
  mm/highmem: Remove the old kmap_atomic cruft
  highmem: Get rid of kmap_types.h
  xtensa/mm/highmem: Switch to generic kmap atomic
  sparc/mm/highmem: Switch to generic kmap atomic
  powerpc/mm/highmem: Switch to generic kmap atomic
  nds32/mm/highmem: Switch to generic kmap atomic
  ...
2020-12-14 18:35:53 -08:00
..
asm-offsets.h
asm-uaccess.h get rid of legacy 'get_ds()' function 2019-03-04 10:50:14 -08:00
asmmacro.h xtensa: move fast exception handlers close to vectors 2020-02-04 21:53:39 -08:00
atomic.h locking/atomic: Move ATOMIC_INIT into linux/types.h 2020-07-29 16:14:18 +02:00
barrier.h xtensa: add exclusive atomics support 2019-05-07 10:36:31 -07:00
bitops.h xtensa: use "m" constraint instead of "a" in bitops.h assembly 2019-11-26 11:33:38 -08:00
bootparam.h xtensa: split bootparam and kernel meminfo 2014-04-02 01:35:51 +04:00
bugs.h
cache.h xtensa: add XIP kernel support 2019-11-26 11:33:38 -08:00
cacheasm.h xtensa: increase ranges in ___invalidate_{i,d}cache_all 2018-08-13 20:08:01 -07:00
cacheflush.h xtensa: implement flush_icache_user_range 2020-06-08 11:05:58 -07:00
checksum.h xtensa: propagate the calling conventions change down into csum_partial_copy_generic() 2020-08-20 15:45:21 -04:00
cmpxchg.h xtensa: use "m" constraint instead of "a" in cmpxchg.h assembly 2019-11-26 11:33:39 -08:00
coprocessor.h xtensa: replace variant/core.h with asm/core.h 2019-05-06 17:48:55 -07:00
core.h xtensa: clean up optional XCHAL_* definitions 2020-02-01 00:43:28 -08:00
current.h xtensa: consolidate kernel stack size related definitions 2017-12-10 14:48:55 -08:00
delay.h xtensa: implement ndelay 2014-01-15 00:28:11 +04:00
dma.h
elf.h xtensa: enable CORE_DUMP_USE_REGSET 2018-12-17 13:48:22 -08:00
fixmap.h xtensa/mm/highmem: Make generic kmap_atomic() work correctly 2020-11-16 21:19:24 +01:00
flat.h binfmt_flat: remove the persistent argument from flat_get_addr_from_rp 2019-06-24 09:16:47 +10:00
ftrace.h ftrace: Make CALLER_ADDRx macros more generic 2014-05-21 03:10:32 -04:00
futex.h futex: arch_futex_atomic_op_inuser() calling conventions change 2020-03-27 23:58:51 -04:00
highmem.h xtensa/mm/highmem: Make generic kmap_atomic() work correctly 2020-11-16 21:19:24 +01:00
hw_breakpoint.h perf/hw_breakpoint: Remove default hw_breakpoint_arch_parse() 2018-06-26 09:07:58 +02:00
initialize_mmu.h xtensa: initialize_mmu.h: fix a duplicated word 2020-07-28 00:57:06 -07:00
io.h arch: rely on asm-generic/io.h for default ioremap_* definitions 2019-11-11 21:18:19 +01:00
irq.h xtensa: replace variant/core.h with asm/core.h 2019-05-06 17:48:55 -07:00
irqflags.h xtensa: replace CONFIG_DEBUG_KERNEL with CONFIG_DEBUG_MISC 2019-05-14 19:52:50 -07:00
jump_label.h xtensa: implement jump_label support 2018-12-20 14:44:38 -08:00
kasan.h xtensa: fix build with KASAN 2018-02-11 09:18:12 -08:00
Kbuild xtensa: add seccomp support 2020-07-28 00:57:06 -07:00
kmem_layout.h xtensa: move XCHAL_KIO_* definitions to kmem_layout.h 2019-10-20 23:48:28 -07:00
linkage.h xtensa: clean up functions in assembly code 2017-12-10 14:48:54 -08:00
mmu_context.h mm: reorder includes after introduction of linux/pgtable.h 2020-06-09 09:39:13 -07:00
mmu.h xtensa: add SMP support 2014-01-14 10:19:58 -08:00
mxregs.h xtensa: add MX irqchip 2014-01-14 10:19:58 -08:00
nommu_context.h xtensa: extract init_kio 2017-12-16 22:37:10 -08:00
page.h mm/vma: define a default value for VM_DATA_DEFAULT_FLAGS 2020-04-10 15:36:21 -07:00
pci-bridge.h xtensa: drop ifdef __KERNEL__ from kernel-only headers 2019-05-06 17:48:54 -07:00
pci.h xtensa: drop ifdef __KERNEL__ from kernel-only headers 2019-05-06 17:48:54 -07:00
perf_event.h xtensa: enable HAVE_PERF_EVENTS 2014-01-15 00:27:03 +04:00
pgalloc.h asm-generic: pgalloc: provide generic pgd_free() 2020-08-07 11:33:26 -07:00
pgtable.h xtensa: fix TLBTEMP area placement 2020-11-16 02:13:15 -08:00
platform.h xtensa: clean up platform headers 2020-01-31 12:17:25 -08:00
processor.h xtensa: clean up optional XCHAL_* definitions 2020-02-01 00:43:28 -08:00
ptrace.h xtensa: replace variant/core.h with asm/core.h 2019-05-06 17:48:55 -07:00
regs.h xtensa: clean up PS_WOE_BIT usage 2019-09-01 13:11:57 -07:00
serial.h
shmparam.h
signal.h consolidate kernel-side struct sigaction declarations 2013-02-03 15:09:22 -05:00
smp.h xtensa: implement CPU hotplug 2014-01-14 10:19:59 -08:00
spinlock_types.h xtensa: use generic spinlock/rwlock implementation 2019-02-07 12:24:20 -08:00
spinlock.h xtensa: use generic spinlock/rwlock implementation 2019-02-07 12:24:20 -08:00
stackprotector.h xtensa: enable stack protector 2017-12-16 22:37:07 -08:00
stacktrace.h xtensa: move oprofile stack tracing to stacktrace.c 2015-08-17 07:32:49 +03:00
string.h xtensa: shut up gcc-8 warnings 2018-01-02 03:25:41 -08:00
switch_to.h
syscall.h xtensa: clean up system_call/xtensa_rt_sigreturn interaction 2019-11-29 19:37:12 -08:00
sysmem.h xtensa: drop sysmem and switch to memblock 2016-07-24 06:34:00 +03:00
thread_info.h xtensa: add missing exclusive access state management 2020-07-31 14:15:57 -07:00
timex.h xtensa: clean up WSR*/RSR*/get_sr/set_sr 2018-12-04 14:08:11 -08:00
tlb.h arch/tlb: Clean up simple architectures 2019-04-03 10:32:54 +02:00
tlbflush.h mm: remove quicklist page table caches 2019-09-24 15:54:09 -07:00
traps.h xtensa: drop unused field from the struct exc_table 2018-12-03 01:39:22 -08:00
uaccess.h xtensa: uaccess: Add missing __user to strncpy_from_user() prototype 2020-11-17 05:09:28 -08:00
ucontext.h
unaligned.h
unistd.h arch: handle arches who do not yet define clone3 2019-06-21 01:54:53 +02:00
vectors.h xtensa: reorganize vectors placement 2020-02-04 21:57:02 -08:00
vermagic.h arch: split MODULE_ARCH_VERMAGIC definitions out to <asm/vermagic.h> 2020-04-23 10:50:26 +09:00
vmalloc.h mm/vmalloc: Add empty <asm/vmalloc.h> headers and use them from <linux/vmalloc.h> 2019-12-10 10:12:55 +01:00