summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorGreentime Hu <greentime.hu@sifive.com>2020-08-04 05:02:05 +0200
committerPalmer Dabbelt <palmerdabbelt@google.com>2020-09-19 22:20:13 +0200
commit21190b74bcf3a36ebab9a715088c29f59877e1f3 (patch)
treefd2ce5fbb9a61b9d94934a205e77b8130fcb6fc9 /arch
parentRISC-V: Take text_mutex in ftrace_init_nop() (diff)
downloadlinux-21190b74bcf3a36ebab9a715088c29f59877e1f3.tar.xz
linux-21190b74bcf3a36ebab9a715088c29f59877e1f3.zip
riscv: Add sfence.vma after early page table changes
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>
Diffstat (limited to 'arch')
-rw-r--r--arch/riscv/mm/init.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c
index 787c75f751a5..ca03762a3733 100644
--- a/arch/riscv/mm/init.c
+++ b/arch/riscv/mm/init.c
@@ -226,12 +226,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)