linux/arch/csky
Guo Ren 1362d15ffb csky: pgtable: Invalidate stale I-cache lines in update_mmu_cache
The final icache_flush was in the update_mmu_cache, and update_mmu_cache
is after the set_pte_at. Thus, when CPU0 sets the pte,  the other CPU
would see it before the icache_flush broadcast happens, and their
icaches may have cached stale VIPT cache lines in their I-caches. When
address translation was ready for the new cache line, they will use the
stale data of icache, not the fresh one of the dcache.

The csky instruction cache is VIPT, and it needs an origin virtual
address to invalidate the virtual address index entries of cache ways.
The current implementation uses a temporary mapping mechanism -
kmap_atomic, which returns a new virtual address for invalidation. But,
the original virtual address cache line may still in the I-cache.

So force invalidation I-cache in update_mmu_cache, and prevent
flush_dcache when there is an EXEC page. This bug was detected in the
4*c860 SMP system, and this patch could pass the stress test.

Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
Signed-off-by: Guo Ren <guoren@kernel.org>
2023-08-10 22:09:25 -04:00
..
abiv1 arch/csky patches for 6.4 2023-05-04 12:25:05 -07:00
abiv2 csky: pgtable: Invalidate stale I-cache lines in update_mmu_cache 2023-08-10 22:09:25 -04:00
boot csky: Remove unused $(dtb-y) from boot/Makefile 2022-05-13 14:45:09 +08:00
configs csky: Minimize defconfig to support buildroot config.fragment 2020-02-21 15:43:25 +08:00
include Locking changes for v6.5: 2023-06-27 14:14:30 -07:00
kernel csky: fix old style declaration in module.c 2023-07-29 19:25:46 -04:00
lib csky: delay: Add function alignment 2022-12-29 23:47:52 -05:00
mm csky: fix up lock_mm_and_find_vma() conversion 2023-06-29 23:34:29 -07:00
Kbuild csky: Move $(core-y) into arch/csky/Kbuild 2022-05-13 15:09:28 +08:00
Kconfig Merge branch 'expand-stack' 2023-06-28 20:35:21 -07:00
Kconfig.debug treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
Kconfig.platforms csky/Kconfig: Add Kconfig.platforms to support some drivers 2020-02-21 15:43:24 +08:00
Makefile kbuild: remove head-y syntax 2022-10-02 18:06:03 +09:00