• Alexandre Ghiti's avatar
    mm: Introduce flush_cache_vmap_early() · 7a92fc8b
    Alexandre Ghiti authored
    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: default avatarAlexandre Ghiti <alexghiti@rivosinc.com>
    Acked-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: default avatarDennis Zhou <dennis@kernel.org>
    7a92fc8b
cacheflush.h 2.3 KB