Re: [PATCH 2/3] mm: pgtable: add missing pt_index to struct ptdesc

Vishal Moola
2024-03-26T19:25:13Z

On Mon, Mar 04, 2024 at 07:07:19PM +0800, Qi Zheng wrote:
> In s390, the page->index field is used for gmap (see gmap_shadow_pgt()),
> so add the corresponding pt_index to struct ptdesc and add a comment to
> clarify this.

Yes s390 gmap 'uses' page->index, but not for the purpose page->index is
supposed to hold. It's alright to have a variable here, but I'd rather
see it named something more appropriate to the purporse it serves.

You can take look at this patch from v5 of my ptdesc conversion series
for more info:
https://lore.kernel.org/linux-mm/20230622205745.79707-3-vishal.moola@gmail.com/

> Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com>
> ---
> include/linux/mm_types.h | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
> index 5ea77969daae..5240bd7bca33 100644
> --- a/include/linux/mm_types.h
> +++ b/include/linux/mm_types.h
> @@ -425,6 +425,7 @@ FOLIO_MATCH(compound_head, _head_2a);
> * @_pt_pad_1: Padding that aliases with page's compound head.
> * @pmd_huge_pte: Protected by ptdesc->ptl, used for THPs.
> * @__page_mapping: Aliases with page->mapping. Unused for page tables.
> + * @pt_index: Used for s390 gmap.
> * @pt_mm: Used for x86 pgds.
> * @pt_frag_refcount: For fragmented page table tracking. Powerpc only.
> * @_pt_pad_2: Padding to ensure proper alignment.
> @@ -450,6 +451,7 @@ struct ptdesc {
> unsigned long __page_mapping;
>
> union {
> + pgoff_t pt_index;
> struct mm_struct *pt_mm;
> atomic_t pt_frag_refcount;
> };
> @@ -475,6 +477,7 @@ TABLE_MATCH(flags, __page_flags);
> TABLE_MATCH(compound_head, pt_list);
> TABLE_MATCH(compound_head, _pt_pad_1);
> TABLE_MATCH(mapping, __page_mapping);
> +TABLE_MATCH(index, pt_index);
> TABLE_MATCH(rcu_head, pt_rcu_head);
> TABLE_MATCH(page_type, __page_type);
> TABLE_MATCH(_refcount, __page_refcount);
> --
> 2.30.2
>