Commit 1299a129 authored by Huacai Chen's avatar Huacai Chen

LoongArch: Flush TLB earlier at initialization

Move local_flush_tlb_all() earlier (just after setup_ptwalker() and
before page allocation). This can avoid stale TLB entries misguiding
the later page allocation. Without this patch the second kernel of
kexec/kdump fails to boot SMP.

BTW, move output_pgtable_bits_defines() into tlb_init() since it has
nothing to do with tlb handler setup.
Signed-off-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
parent a522b7ad
...@@ -258,7 +258,7 @@ extern long exception_handlers[VECSIZE * 128 / sizeof(long)]; ...@@ -258,7 +258,7 @@ extern long exception_handlers[VECSIZE * 128 / sizeof(long)];
void setup_tlb_handler(int cpu) void setup_tlb_handler(int cpu)
{ {
setup_ptwalker(); setup_ptwalker();
output_pgtable_bits_defines(); local_flush_tlb_all();
/* The tlb handlers are generated only once */ /* The tlb handlers are generated only once */
if (cpu == 0) { if (cpu == 0) {
...@@ -301,6 +301,7 @@ void tlb_init(int cpu) ...@@ -301,6 +301,7 @@ void tlb_init(int cpu)
write_csr_pagesize(PS_DEFAULT_SIZE); write_csr_pagesize(PS_DEFAULT_SIZE);
write_csr_stlbpgsize(PS_DEFAULT_SIZE); write_csr_stlbpgsize(PS_DEFAULT_SIZE);
write_csr_tlbrefill_pagesize(PS_DEFAULT_SIZE); write_csr_tlbrefill_pagesize(PS_DEFAULT_SIZE);
setup_tlb_handler(cpu); setup_tlb_handler(cpu);
local_flush_tlb_all(); output_pgtable_bits_defines();
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment