linux/arch/riscv/mm
Alexandre Ghiti 01261e24cf
riscv: Only flush the mm icache when setting an exec pte
We used to emit a flush_icache_all() whenever a dirty executable
mapping is set in the page table but we can instead call
flush_icache_mm() which will only send IPIs to cores that currently run
this mm and add a deferred icache flush to the others.

The number of calls to sbi_remote_fence_i() (tested without IPI
support):

With a simple buildroot rootfs:
* Before: ~5k
* After :  4 (!)

Tested on HW, the boot to login is ~4.5% faster.

With an ubuntu rootfs:
* Before: ~24k
* After : ~13k

Signed-off-by: Alexandre Ghiti <alexghiti@rivosinc.com>
Reviewed-by: Charlie Jenkins <charlie@rivosinc.com>
Link: https://lore.kernel.org/r/20240202124711.256146-1-alexghiti@rivosinc.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
2024-03-20 08:56:08 -07:00
..
cache-ops.c riscv: split cache ops out of dma-noncoherent.c 2023-11-07 09:37:42 -08:00
cacheflush.c riscv: Only flush the mm icache when setting an exec pte 2024-03-20 08:56:08 -07:00
context.c membarrier: riscv: Add full memory barrier in switch_mm() 2024-02-15 08:04:11 -08:00
dma-noncoherent.c iommu: Remove struct iommu_ops *iommu from arch_setup_dma_ops() 2023-12-12 10:18:45 +01:00
extable.c riscv: select DCACHE_WORD_ACCESS for efficient unaligned access HW 2024-01-09 20:18:20 -08:00
fault.c RISC-V Patches for the 6.8 Merge Window, Part 1 2024-01-17 10:50:46 -08:00
hugetlbpage.c riscv: Use accessors to page table entries instead of direct dereference 2023-12-20 10:48:15 -08:00
init.c riscv: mm: Update mmap_rnd_bits_max 2024-01-24 07:07:43 -08:00
kasan_init.c percpu: 2024-01-18 15:01:28 -08:00
Makefile riscv: mm: Only compile pgtable.c if MMU 2023-12-20 10:48:14 -08:00
pageattr.c Merge remote-tracking branch 'palmer/fixes' into for-next 2024-01-09 20:10:32 -08:00
pgtable.c riscv: Only flush the mm icache when setting an exec pte 2024-03-20 08:56:08 -07:00
physaddr.c riscv: Use PUD/P4D/PGD pages for the linear mapping 2023-04-18 20:43:04 -07:00
pmem.c RISC-V: capitalise CMO op macros 2023-11-05 09:11:23 -08:00
ptdump.c Merge patch series "Improve PTDUMP and introduce new fields" 2023-11-05 09:41:57 -08:00
tlbflush.c RISC-V Patches for the 6.8 Merge Window, Part 4 2024-01-20 11:06:04 -08:00