X-Git-Url: http://git.samba.org/samba.git/?a=blobdiff_plain;f=arch%2Friscv%2Finclude%2Fasm%2Ftlb.h;h=1f6c38420d8e0764d74a27e870f74d055a67f08e;hb=c150b809f7de2afdd3fb5a9adff2a9a68d7331ce;hp=50b63b5c15bd8b19dac37176ef98c3489c837e05;hpb=1e3cd03c54b76b4cbc8b31256dc3f18c417a6876;p=sfrench%2Fcifs-2.6.git diff --git a/arch/riscv/include/asm/tlb.h b/arch/riscv/include/asm/tlb.h index 50b63b5c15bd..1f6c38420d8e 100644 --- a/arch/riscv/include/asm/tlb.h +++ b/arch/riscv/include/asm/tlb.h @@ -10,6 +10,24 @@ struct mmu_gather; static void tlb_flush(struct mmu_gather *tlb); +#ifdef CONFIG_MMU +#include + +/* + * While riscv platforms with riscv_ipi_for_rfence as true require an IPI to + * perform TLB shootdown, some platforms with riscv_ipi_for_rfence as false use + * SBI to perform TLB shootdown. To keep software pagetable walkers safe in this + * case we switch to RCU based table free (MMU_GATHER_RCU_TABLE_FREE). See the + * comment below 'ifdef CONFIG_MMU_GATHER_RCU_TABLE_FREE' in include/asm-generic/tlb.h + * for more details. + */ +static inline void __tlb_remove_table(void *table) +{ + free_page_and_swap_cache(table); +} + +#endif /* CONFIG_MMU */ + #define tlb_flush tlb_flush #include