[PATCH v4 10/15] riscv: pgtable: move pagetable_dtor() to __tlb_remove_table()
Kevin Brodsky
kevin.brodsky at arm.com
Fri Jan 3 03:53:58 AEDT 2025
On 30/12/2024 10:07, Qi Zheng wrote:
> static inline void riscv_tlb_remove_ptdesc(struct mmu_gather *tlb, void *pt)
> {
> - if (riscv_use_sbi_for_rfence())
> + if (riscv_use_sbi_for_rfence()) {
> tlb_remove_ptdesc(tlb, pt);
> - else
> + } else {
> + pagetable_dtor(pt);
> tlb_remove_page_ptdesc(tlb, pt);
I find the imbalance pretty confusing: pagetable_dtor() is called
explicitly before using tlb_remove_page() but not tlb_remove_ptdesc().
Doesn't that assume that CONFIG_MMU_GATHER_HAVE_TABLE_FREE is selected?
Could we not call pagetable_dtor() from __tlb_batch_free_encoded_pages()
to ensure that the dtor is always called just before freeing, and remove
the extra handling from arch code? I may well be missing something, I'm
not super familiar with the tlb handling code.
- Kevin
More information about the Linuxppc-dev
mailing list