On Wed, May 02, 2018 at 11:12:17AM +0300, Kirill A. Shutemov wrote: > On Mon, Apr 30, 2018 at 01:22:44PM -0700, Matthew Wilcox wrote: > > diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h > > index e0e74e91f3e8..0e6117123737 100644 > > --- a/include/linux/mm_types.h > > +++ b/include/linux/mm_types.h > > @@ -134,7 +134,7 @@ struct page { > > unsigned long _pt_pad_1; /* compound_head */ > > pgtable_t pmd_huge_pte; /* protected by page->ptl */ > > unsigned long _pt_pad_2; /* mapping */ > > - unsigned long _pt_pad_3; > > + struct mm_struct *pt_mm; > > I guess it worth to have a comment that this field is only used of pgd > page tables and therefore doesn't conflict with pmd_huge_pte. Actually, it doesn't conflict with pmd_huge_pte -- it's in different bits (both before and after this patch). What does 'conflict' with pmd_huge_pte is the use of page->lru in the pgd. I have a plan to eliminate that use of pgd->lru, but I need to do a couple of other things first.