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: f2c17aabc9 ("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>
This commit is contained in:
Greentime Hu 2020-08-04 11:02:05 +08:00 committed by Palmer Dabbelt
parent 66d18dbda8
commit 21190b74bc
No known key found for this signature in database
GPG Key ID: 2E1319F35FBB1889

View File

@ -226,12 +226,11 @@ void __set_fixmap(enum fixed_addresses idx, phys_addr_t phys, pgprot_t prot)
ptep = &fixmap_pte[pte_index(addr)]; ptep = &fixmap_pte[pte_index(addr)];
if (pgprot_val(prot)) { if (pgprot_val(prot))
set_pte(ptep, pfn_pte(phys >> PAGE_SHIFT, prot)); set_pte(ptep, pfn_pte(phys >> PAGE_SHIFT, prot));
} else { else
pte_clear(&init_mm, addr, ptep); 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) static pte_t *__init get_pte_virt(phys_addr_t pa)