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

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
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -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();
}