1. 11 Aug, 2023 1 commit
    • Guo Ren's avatar
      csky: pgtable: Invalidate stale I-cache lines in update_mmu_cache · 1362d15f
      Guo Ren authored
      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: default avatarGuo Ren <guoren@linux.alibaba.com>
      Signed-off-by: default avatarGuo Ren <guoren@kernel.org>
      1362d15f
  2. 29 Jul, 2023 1 commit
  3. 09 Jul, 2023 10 commits
  4. 08 Jul, 2023 28 commits