On Mon, May 17, 2021 at 8:09 AM Mel Gorman <mgorman@xxxxxxx> wrote: > > On Tue, Apr 13, 2021 at 02:24:10PM -0700, Yang Shi wrote: > > Add orig_pmd to struct vm_fault so the "orig_pmd" parameter used by huge page > > fault could be removed, just like its PTE counterpart does. > > > > Signed-off-by: Yang Shi <shy828301@xxxxxxxxx> > > > > <SNIP> > > > > diff --git a/include/linux/mm.h b/include/linux/mm.h > > index 25b9041f9925..9c5856f8cc81 100644 > > --- a/include/linux/mm.h > > +++ b/include/linux/mm.h > > @@ -547,6 +547,9 @@ struct vm_fault { > > * the 'address' > > */ > > pte_t orig_pte; /* Value of PTE at the time of fault */ > > + pmd_t orig_pmd; /* Value of PMD at the time of fault, > > + * used by PMD fault only. > > + */ > > > > struct page *cow_page; /* Page handler may use for COW fault */ > > struct page *page; /* ->fault handlers should return a > > Could this be a union? Do you mean orig_pte and orig_pmd, or cow_page and page? I think orig_pte and orig_pmd could be union, I don't see that they are used at the same time from vm_fault. But cow_page and page can't since do_cow_fault() needs copy data from page to cow_page. > > -- > Mel Gorman > SUSE Labs