Hi, Bibo, Just declare kernel_pte_init() in header file. Since this series is a bugfix, we should merge it as soon as possible. The refactoring patch can be sent after this series. Huacai On Thu, Oct 10, 2024 at 11:50 AM Bibo Mao <maobibo@xxxxxxxxxxx> wrote: > > Like pmd_init(), a weak function kernel_pte_init() is added and it > is only effective on LoongArch system. When pte table is created for > vmemmap kernel space, function kernel_pte_init() is called here. > > It has no any effective on other architectures. > > Signed-off-by: Bibo Mao <maobibo@xxxxxxxxxxx> > --- > mm/sparse-vmemmap.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c > index edcc7a6b0f6f..c0388b2e959d 100644 > --- a/mm/sparse-vmemmap.c > +++ b/mm/sparse-vmemmap.c > @@ -184,6 +184,10 @@ static void * __meminit vmemmap_alloc_block_zero(unsigned long size, int node) > return p; > } > > +void __weak __meminit kernel_pte_init(void *addr) > +{ > +} > + > pmd_t * __meminit vmemmap_pmd_populate(pud_t *pud, unsigned long addr, int node) > { > pmd_t *pmd = pmd_offset(pud, addr); > @@ -191,6 +195,7 @@ pmd_t * __meminit vmemmap_pmd_populate(pud_t *pud, unsigned long addr, int node) > void *p = vmemmap_alloc_block_zero(PAGE_SIZE, node); > if (!p) > return NULL; > + kernel_pte_init(p); > pmd_populate_kernel(&init_mm, pmd, p); > } > return pmd; > -- > 2.39.3 >