From: Greentime Hu greentime.hu@sifive.com
[ Upstream commit 21190b74bcf3a36ebab9a715088c29f59877e1f3 ]
This invalidates local TLB after modifying the page tables during early init as it's too early to handle suprious faults as we otherwise do.
Fixes: f2c17aabc917 ("RISC-V: Implement compile-time fixed mappings") Reported-by: Syven Wang syven.wang@sifive.com Signed-off-by: Syven Wang syven.wang@sifive.com Signed-off-by: Greentime Hu greentime.hu@sifive.com Reviewed-by: Anup Patel anup@brainfault.org [Palmer: Cleaned up the commit text] Signed-off-by: Palmer Dabbelt palmerdabbelt@google.com Signed-off-by: Sasha Levin sashal@kernel.org --- arch/riscv/mm/init.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c index b1eb6a0411183..d49e334071d45 100644 --- a/arch/riscv/mm/init.c +++ b/arch/riscv/mm/init.c @@ -167,12 +167,11 @@ void __set_fixmap(enum fixed_addresses idx, phys_addr_t phys, pgprot_t prot)
ptep = &fixmap_pte[pte_index(addr)];
- if (pgprot_val(prot)) { + if (pgprot_val(prot)) set_pte(ptep, pfn_pte(phys >> PAGE_SHIFT, prot)); - } else { + else pte_clear(&init_mm, addr, ptep); - local_flush_tlb_page(addr); - } + local_flush_tlb_page(addr); }
static pte_t *__init get_pte_virt(phys_addr_t pa)