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: Huacai Chen <chenhuacai@loongson.cn>
This commit is contained in:
parent
a522b7ad8e
commit
1299a129a9
@ -258,7 +258,7 @@ extern long exception_handlers[VECSIZE * 128 / sizeof(long)];
|
||||
void setup_tlb_handler(int cpu)
|
||||
{
|
||||
setup_ptwalker();
|
||||
output_pgtable_bits_defines();
|
||||
local_flush_tlb_all();
|
||||
|
||||
/* The tlb handlers are generated only once */
|
||||
if (cpu == 0) {
|
||||
@ -301,6 +301,7 @@ void tlb_init(int cpu)
|
||||
write_csr_pagesize(PS_DEFAULT_SIZE);
|
||||
write_csr_stlbpgsize(PS_DEFAULT_SIZE);
|
||||
write_csr_tlbrefill_pagesize(PS_DEFAULT_SIZE);
|
||||
|
||||
setup_tlb_handler(cpu);
|
||||
local_flush_tlb_all();
|
||||
output_pgtable_bits_defines();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user