| From: Sidhartha Kumar <sidhartha.kumar@oracle.com> |
| Subject: mm: remove the hugetlb field from struct page |
| Date: Wed, 11 Jan 2023 14:29:14 +0000 |
| |
| Patch series "Get rid of tail page fields". |
| |
| Continue the shrinkage of the struct page definition by getting rid of the |
| 'first tail page' and 'second tail page' fields. I originally did this |
| patch set before Hugh's rewrite of the subpages_mapcount, so it needed |
| substantial updates; hope I didn't miss anything. |
| |
| |
| This patch (of 28): |
| |
| commit dad6a5eb5556(mm,hugetlb: use folio fields in second tail page) |
| added a transitional hugetlb field to struct page and struct folio to make |
| room for another int in the first tail of a compound page. Hugetlb folio |
| conversions have changed all page users of this field to use the fields |
| within the folio so struct page no longer needs this hugetlb specific |
| field. |
| |
| Link: https://lkml.kernel.org/r/20230111142915.1001531-1-willy@infradead.org |
| Link: https://lkml.kernel.org/r/20230111142915.1001531-29-willy@infradead.org |
| Signed-off-by: Sidhartha Kumar <sidhartha.kumar@oracle.com> |
| Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| |
| --- a/include/linux/mm_types.h~mm-remove-the-hugetlb-field-from-struct-page |
| +++ a/include/linux/mm_types.h |
| @@ -141,14 +141,6 @@ struct page { |
| struct { /* Tail pages of compound page */ |
| unsigned long compound_head; /* Bit zero is set */ |
| }; |
| - struct { /* Second tail page of hugetlb page */ |
| - unsigned long _hugetlb_pad_1; /* compound_head */ |
| - void *hugetlb_subpool; |
| - void *hugetlb_cgroup; |
| - void *hugetlb_cgroup_rsvd; |
| - void *hugetlb_hwpoison; |
| - /* No more space on 32-bit: use third tail if more */ |
| - }; |
| struct { /* Page table pages */ |
| unsigned long _pt_pad_1; /* compound_head */ |
| pgtable_t pmd_huge_pte; /* protected by page->ptl */ |
| @@ -399,10 +391,6 @@ FOLIO_MATCH(compound_head, _head_1); |
| offsetof(struct page, pg) + 2 * sizeof(struct page)) |
| FOLIO_MATCH(flags, _flags_2); |
| FOLIO_MATCH(compound_head, _head_2); |
| -FOLIO_MATCH(hugetlb_subpool, _hugetlb_subpool); |
| -FOLIO_MATCH(hugetlb_cgroup, _hugetlb_cgroup); |
| -FOLIO_MATCH(hugetlb_cgroup_rsvd, _hugetlb_cgroup_rsvd); |
| -FOLIO_MATCH(hugetlb_hwpoison, _hugetlb_hwpoison); |
| #undef FOLIO_MATCH |
| |
| /* |
| _ |