WSL2-Linux-Kernel/arch
Sergey Matyukevich 4830750696 riscv: mm: notify remote harts about mmu cache updates
commit 4bd1d80efb upstream.

Current implementation of update_mmu_cache function performs local TLB
flush. It does not take into account ASID information. Besides, it does
not take into account other harts currently running the same mm context
or possible migration of the running context to other harts. Meanwhile
TLB flush is not performed for every context switch if ASID support
is enabled.

Patch [1] proposed to add ASID support to update_mmu_cache to avoid
flushing local TLB entirely. This patch takes into account other
harts currently running the same mm context as well as possible
migration of this context to other harts.

For this purpose the approach from flush_icache_mm is reused. Remote
harts currently running the same mm context are informed via SBI calls
that they need to flush their local TLBs. All the other harts are marked
as needing a deferred TLB flush when this mm context runs on them.

[1] https://lore.kernel.org/linux-riscv/20220821013926.8968-1-tjytimi@163.com/

Signed-off-by: Sergey Matyukevich <sergey.matyukevich@syntacore.com>
Fixes: 65d4b9c530 ("RISC-V: Implement ASID allocator")
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/linux-riscv/20220829205219.283543-1-geomatsi@gmail.com/#t
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-01-12 11:58:58 +01:00
..
alpha alpha: fix syscall entry in !AUDUT_SYSCALL case 2022-12-31 13:14:01 +01:00
arc arc: iounmap() arg is volatile 2022-11-03 23:59:15 +09:00
arm ARM: 9256/1: NWFPE: avoid compiler-generated __aeabi_uldivmod 2023-01-12 11:58:55 +01:00
arm64 arm64: dts: qcom: sdm850-lenovo-yoga-c630: correct I2C12 pins drive strength 2023-01-12 11:58:51 +01:00
csky csky/kprobe: reclaim insn_slot on kprobe unregistration 2022-08-25 11:40:38 +02:00
h8300 Merge branch 'akpm' (patches from Andrew) 2021-09-08 12:55:35 -07:00
hexagon uaccess: fix integer overflow on access_ok() 2022-03-28 09:58:45 +02:00
ia64 ia64: export memory_add_physaddr_to_nid to fix cxl build error 2022-10-26 12:34:59 +02:00
m68k m68k: coldfire/device.c: protect FLEXCAN blocks 2022-08-25 11:40:05 +02:00
microblaze uaccess: fix nios2 and microblaze get_user_8() 2022-04-08 14:23:18 +02:00
mips MIPS: OCTEON: warn only once if deprecated link status is being used 2022-12-31 13:14:05 +01:00
nds32 nds32: fix access_ok() checks in get/put_user 2022-03-28 09:58:46 +02:00
nios2 nios2: add FORCE for vmlinuz.gz 2022-12-02 17:41:08 +01:00
openrisc openrisc: io: Define iounmap argument as volatile 2022-08-25 11:40:38 +02:00
parisc parisc: Avoid printing the hardware path twice 2022-11-10 18:15:40 +01:00
powerpc powerpc/rtas: avoid scheduling in rtas_os_term() 2023-01-12 11:58:46 +01:00
riscv riscv: mm: notify remote harts about mmu cache updates 2023-01-12 11:58:58 +01:00
s390 KVM: s390: vsie: Fix the initialization of the epoch extension (epdx) field 2022-12-14 11:37:20 +01:00
sh sh: machvec: Use char[] for section boundaries 2022-10-26 12:34:36 +02:00
sparc signal: Deliver SIGTRAP on perf event asynchronously if blocked 2022-06-09 10:22:48 +02:00
um UM: cpuinfo: Fix a warning for CONFIG_CPUMASK_OFFSTACK 2022-10-26 12:34:23 +02:00
x86 x86/kprobes: Fix optprobe optimization check with CONFIG_RETHUNK 2023-01-12 11:58:54 +01:00
xtensa xtensa: iss: fix handling error cases in iss_net_configure() 2022-08-17 14:23:52 +02:00
.gitignore
Kconfig arch: make TRACE_IRQFLAGS_NMI_SUPPORT generic 2022-08-17 14:23:00 +02:00