Re: [v2 PATCH 1/7] mm: memory: add orig_pmd to struct vm_fault

Yang Shi
2021-05-17T19:40:17Z

On Mon, May 17, 2021 at 8:09 AM Mel Gorman <mgorman@suse.de> 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@gmail.com>
> >
> > <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