linux/arch/m68k/include/asm
Alexandre Ghiti c4a05cf0ed mm: Introduce flush_cache_vmap_early()
[ Upstream commit 7a92fc8b4d ]

The pcpu setup when using the page allocator sets up a new vmalloc
mapping very early in the boot process, so early that it cannot use the
flush_cache_vmap() function which may depend on structures not yet
initialized (for example in riscv, we currently send an IPI to flush
other cpus TLB).

But on some architectures, we must call flush_cache_vmap(): for example,
in riscv, some uarchs can cache invalid TLB entries so we need to flush
the new established mapping to avoid taking an exception.

So fix this by introducing a new function flush_cache_vmap_early() which
is called right after setting the new page table entry and before
accessing this new mapping. This new function implements a local flush
tlb on riscv and is no-op for other architectures (same as today).

Signed-off-by: Alexandre Ghiti <alexghiti@rivosinc.com>
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Dennis Zhou <dennis@kernel.org>
Stable-dep-of: d9807d60c1 ("riscv: mm: execute local TLB flush after populating vmemmap")
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2024-02-16 19:10:52 +01:00
..
adb_iop.h macintosh/adb-iop: Implement SRQ autopolling 2020-07-26 23:34:24 +10:00
amigahw.h m68k/UAPI: Move Amiga model/chipset definitions to <asm/bootinfo-amiga.h> 2013-11-26 11:09:17 +01:00
amigaints.h m68k,m68knommu: merge header files 2009-01-16 21:58:10 +10:00
amigayle.h m68k: amiga - Amiga Gayle IDE platform device conversion 2010-05-26 19:51:09 +02:00
amipcmcia.h m68k,m68knommu: merge header files 2009-01-16 21:58:10 +10:00
apollohw.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
asm-offsets.h kbuild: move asm-offsets.h to include/generated 2009-12-12 13:08:14 +01:00
asm-prototypes.h m68k: Restore symbol versions for symbols exported from assembly 2017-08-21 11:52:55 +02:00
atari_joystick.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
atari_stdma.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
atari_stram.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
atarihw.h m68k: atari: Rename shifter to shifter_st to avoid conflict 2019-08-19 13:24:10 +02:00
atariints.h m68k/atari: Remove obsolete IRQ_TYPE_* 2015-01-15 13:44:51 +01:00
atarikb.h input/atari: Use the correct mouse interrupt hook 2011-05-19 18:19:11 +02:00
atomic.h locking/atomic: m68k: add preprocessor symbols 2023-06-05 09:57:16 +02:00
bitops.h provide arch_test_bit_acquire for architectures that define test_bit 2022-08-27 09:49:54 -07:00
blinken.h m68k/hp300: Export hp300_ledstate 2011-12-10 19:52:48 +01:00
bootinfo.h m68k: generalize uboot command line support 2016-09-26 12:02:59 +10:00
bootstd.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
bug.h bug.h: work around GCC PR82365 in BUG() 2018-02-21 15:35:43 -08:00
bvme6000hw.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
cache.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
cacheflush.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
cacheflush_mm.h mm: Introduce flush_cache_vmap_early() 2024-02-16 19:10:52 +01:00
cacheflush_no.h m68knommu: use asm-generic/cacheflush.h 2020-06-08 11:05:57 -07:00
checksum.h saner calling conventions for csum_and_copy_..._user() 2020-08-20 15:45:15 -04:00
cmpxchg.h locking/arch: Rename all internal __xchg() names to __arch_xchg() 2023-04-29 09:08:44 +02:00
coldfire.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
config.h m68k: Introduce a virtual m68k machine 2022-04-11 11:48:01 +02:00
contregs.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
current.h m68k: Implement "current_stack_pointer" 2022-02-26 20:32:03 -08:00
delay.h m68k: Implement ndelay() as an inline function to force type checking/casting 2018-05-22 10:31:52 +02:00
div64.h m68k: Define __div64_32() to avoid a warning 2023-08-21 13:27:43 +02:00
dma.h PCI: Move isa_dma_bridge_buggy out of asm/dma.h 2022-07-22 17:24:47 -05:00
dsp56k.h m68k,m68knommu: merge header files 2009-01-16 21:58:10 +10:00
dvma.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
elf.h m68knommu: add definitions to support elf_fdpic program loader 2022-05-16 13:18:30 +10:00
entry.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
fb.h arch/m68k: Implement <asm/fb.h> with generic helpers 2023-04-20 10:04:41 +02:00
fbio.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
flat.h binfmt_flat: provide an asm-generic/flat.h 2019-06-24 09:16:47 +10:00
floppy.h floppy: use symbolic register names in the m68k port 2020-05-12 19:34:52 +03:00
fpu.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
ftrace.h tracing: make CALLER_ADDRx overwriteable 2009-03-02 16:49:37 -05:00
hash.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
hp300hw.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
hwtest.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
idprom.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
intersil.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
io.h m68k: Introduce a virtual m68k machine 2022-04-11 11:48:01 +02:00
io_mm.h asm-generic/iomap.h: remove ARCH_HAS_IOREMAP_xx macros 2023-08-18 10:12:32 -07:00
io_no.h m68knommu: fix use of cpu_to_le() on IO access 2020-07-27 12:32:00 +10:00
irq.h m68k: Introduce a virtual m68k machine 2022-04-11 11:48:01 +02:00
irqflags.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Kbuild m68k: Remove <asm/export.h> 2023-08-21 13:27:43 +02:00
kexec.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
kmap.h asm-generic/iomap.h: remove ARCH_HAS_IOREMAP_xx macros 2023-08-18 10:12:32 -07:00
linkage.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
m52xxacr.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
m53xxacr.h m68knommu: fix overwriting of bits in ColdFire V3 cache control 2020-07-27 12:32:00 +10:00
m53xxsim.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
m54xxacr.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
m54xxgpt.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
m54xxpci.h m68k: Fix typo 'COFNIG_MBAR' 2014-09-29 09:56:19 +10:00
m54xxsim.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
m520xsim.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
m523xsim.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
m525xsim.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
m527xsim.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
m528xsim.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
m5206sim.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
m5272sim.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
m5307sim.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
m5407sim.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
m5441xsim.h m68k: m5441x: add flexcan support 2021-08-23 08:40:04 +10:00
mac_asc.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mac_baboon.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mac_iop.h m68k updates for 4.15 2017-11-13 12:10:24 -08:00
mac_oss.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mac_psc.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mac_via.h m68k: mac: Remove unused rbv_set_video_bpp() 2022-11-01 12:17:55 +01:00
machdep.h More power management updates for 5.19-rc1 2022-05-30 11:37:26 -07:00
machines.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
machw.h mac68k: replace mac68k SCC code with platform device 2010-02-27 18:31:09 +01:00
macintosh.h m68k: Prevent some compiler warnings in Coldfire builds 2019-08-19 13:24:10 +02:00
macints.h m68k/mac: Clean up unused timer definitions 2019-01-21 10:36:53 +01:00
math-emu.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
MC68EZ328.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
MC68VZ328.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
MC68328.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mc146818rtc.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mcf8390.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mcf_pgalloc.h m68k: convert various functions to use ptdescs 2023-08-21 13:37:56 -07:00
mcf_pgtable.h Add x86 shadow stack support 2023-08-31 12:20:12 -07:00
mcfclk.h m68k: coldfire: remove private clk_get/clk_put 2021-06-08 17:00:09 +02:00
mcfdma.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mcfgpio.h gpiolib: remove unused gpio_cansleep() 2023-06-13 16:49:23 +02:00
mcfintc.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mcfmmu.h m68k: move coldfire MMU initialization code 2017-11-06 08:25:20 +10:00
mcfpit.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mcfqspi.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
mcfsim.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mcfslt.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mcftimer.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mcfuart.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mcfwdebug.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mmu.h m68knommu: use asm-generic/mmu.h for nommu setups 2022-05-16 13:18:30 +10:00
mmu_context.h m68k: allow pte_offset_map[_lock]() to fail 2023-06-19 16:19:06 -07:00
module.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
module.lds.h kbuild: preprocess module linker script 2020-09-25 00:36:41 +09:00
motorola_pgalloc.h mm/thp: define default pmd_pgtable() 2021-07-01 11:06:03 -07:00
motorola_pgtable.h Add x86 shadow stack support 2023-08-31 12:20:12 -07:00
movs.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mvme16xhw.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mvme147hw.h m68k: mvme147,mvme16x: Don't wipe PCC timer config bits 2021-04-06 09:33:20 +02:00
natfeat.h m68k: replace gcc specific macros with ones from compiler.h 2017-02-24 17:46:56 -08:00
nettel.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nubus.h m68k: group io mapping definitions and functions 2018-05-28 09:45:26 +10:00
openprom.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
oplib.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
page.h m68k: use asm-generic/memory_model.h for both MMU and !MMU 2023-02-09 16:51:40 -08:00
page_mm.h m68k/mm: Make pfn accessors static inlines 2023-05-29 11:27:08 +02:00
page_no.h m68k/mm: Make pfn accessors static inlines 2023-05-29 11:27:08 +02:00
page_offset.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
parport.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
pci.h PCI: Remove pci_get_legacy_ide_irq() and asm-generic/pci.h 2022-07-22 17:23:45 -05:00
pgalloc.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
pgtable.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
pgtable_mm.h m68k: implement the new page table range API 2023-08-24 16:20:21 -07:00
pgtable_no.h m68k/mm: remove dummy __swp definitions for nommu 2023-02-02 22:33:07 -08:00
processor.h kernel: exit: cleanup release_thread() 2022-09-11 21:55:07 -07:00
ptrace.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
q40_master.h m68k: group io mapping definitions and functions 2018-05-28 09:45:26 +10:00
q40ints.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
quicc_simple.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
raw_io.h m68k: atari: Make Atari ROM port I/O write macros return void 2022-05-22 12:24:14 +02:00
seccomp.h m68k: Add kernel seccomp support 2023-01-30 16:40:15 +01:00
serial.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
setup.h m68k: Introduce a virtual m68k machine 2022-04-11 11:48:01 +02:00
signal.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
smp.h m68k,m68knommu: merge header files 2009-01-16 21:58:10 +10:00
string.h m68k: Add memcmp() declaration 2023-08-21 13:27:44 +02:00
sun3-head.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
sun3_pgalloc.h m68k: convert various functions to use ptdescs 2023-08-21 13:37:56 -07:00
sun3_pgtable.h Add x86 shadow stack support 2023-08-31 12:20:12 -07:00
sun3ints.h m68k,m68knommu: merge header files 2009-01-16 21:58:10 +10:00
sun3mmu.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
sun3x.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
sun3xflop.h m68k: sun3x: Remove unneeded semicolon 2021-04-19 12:11:55 +02:00
sun3xprom.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
switch_to.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
syscall.h m68k: Add kernel seccomp support 2023-01-30 16:40:15 +01:00
thread_info.h m68k: Add kernel seccomp support 2023-01-30 16:40:15 +01:00
timex.h m68k: use fallback for random_get_entropy() instead of zero 2022-05-13 23:59:23 +02:00
tlb.h arch/tlb: Clean up simple architectures 2019-04-03 10:32:54 +02:00
tlbflush.h m68k: Remove set_fs() 2021-09-24 13:35:07 +02:00
traps.h m68k: Leave stack mangling to asm wrapper of sigreturn() 2021-09-24 13:35:03 +02:00
uaccess.h uaccess: generalize access_ok() 2022-02-25 09:36:05 +01:00
ucontext.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
unistd.h m68k: Wire up clone3() syscall 2020-01-12 16:49:20 +01:00
user.h asm/user.h: killed unused macros 2022-01-30 21:17:00 -05:00
vga.h m68k: don't redefine access functions if we have PCI 2018-05-28 09:45:26 +10:00
virt.h m68k: Introduce a virtual m68k machine 2022-04-11 11:48:01 +02:00
virtconvert.h arch/*/: remove CONFIG_VIRT_TO_BUS 2022-06-28 13:20:21 +02: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
zorro.h m68k: group io mapping definitions and functions 2018-05-28 09:45:26 +10:00