On 30/12/2024 10:07, Qi Zheng wrote: > diff --git a/arch/riscv/include/asm/pgalloc.h b/arch/riscv/include/asm/pgalloc.h > index 551d614d3369c..3466fbe2e508d 100644 > --- a/arch/riscv/include/asm/pgalloc.h > +++ b/arch/riscv/include/asm/pgalloc.h > @@ -108,8 +108,12 @@ static inline void __pud_free_tlb(struct mmu_gather *tlb, pud_t *pud, > static inline void __p4d_free_tlb(struct mmu_gather *tlb, p4d_t *p4d, > unsigned long addr) > { > - if (pgtable_l5_enabled) > + if (pgtable_l5_enabled) { > + struct ptdesc *ptdesc = virt_to_ptdesc(p4d); > + > + pagetable_p4d_dtor(ptdesc); > riscv_tlb_remove_ptdesc(tlb, virt_to_ptdesc(p4d)); Nit: could use the new ptdesc variable here instead of calling virt_to_ptdesc(). - Kevin