Re: [PATCH v2 6/6] mm: Introduce ctor/dtor at PGD level
Alexander Gordeev <[email protected]>
| Newsgroups | org.kernel.vger.linux-hexagon,dev.linux.lists.loongarch,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-riscv,org.infradead.lists.linux-snps-arc,org.infradead.lists.linux-um,org.kernel.vger.linux-alpha,org.kernel.vger.linux-arch,org.kernel.vger.linux-csky,org.kernel.vger.linux-kernel,org.kernel.vger.linux-m68k,org.kernel.vger.linux-mips,org.kernel.vger.linux-openrisc,org.kernel.vger.linux-parisc,org.kernel.vger.linux-s390,org.kvack.linux-mm |
|---|---|
| Message-ID | <Z4/[email protected]> |
On Fri, Jan 03, 2025 at 06:44:15PM +0000, Kevin Brodsky wrote:
Hi Kevin,
...
> diff --git a/arch/s390/include/asm/pgalloc.h b/arch/s390/include/asm/pgalloc.h
> index 5fced6d3c36b..b19b6ed2ab53 100644
> --- a/arch/s390/include/asm/pgalloc.h
> +++ b/arch/s390/include/asm/pgalloc.h
> @@ -130,11 +130,18 @@ static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd)
>
> static inline pgd_t *pgd_alloc(struct mm_struct *mm)
> {
> - return (pgd_t *) crst_table_alloc(mm);
> + unsigned long *table = crst_table_alloc(mm);
> +
> + if (!table)
> + return NULL;
I do not know status of this series, but FWIW, this call is missed:
crst_table_init(table, _REGION1_ENTRY_EMPTY);
> + pagetable_pgd_ctor(virt_to_ptdesc(table));
> +
> + return (pgd_t *) table;
> }
>
> static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd)
> {
> + pagetable_dtor(virt_to_ptdesc(pgd));
> crst_table_free(mm, (unsigned long *) pgd);
> }
...
Thanks!