All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alistair Popple <apopple@nvidia.com>
To: "linux-mm@kvack.org" <linux-mm@kvack.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"Wang, Haiyue" <haiyue.wang@intel.com>
Cc: "akpm@linux-foundation.org" <akpm@linux-foundation.org>,
	"david@redhat.com" <david@redhat.com>,
	"linmiaohe@huawei.com" <linmiaohe@huawei.com>,
	"Huang, Ying" <ying.huang@intel.com>,
	"songmuchun@bytedance.com" <songmuchun@bytedance.com>,
	"naoya.horiguchi@linux.dev" <naoya.horiguchi@linux.dev>,
	"alex.sierra@amd.com" <alex.sierra@amd.com>
Subject: Re: [PATCH v4 1/2] mm: migration: fix the FOLL_GET failure on following huge page
Date: Mon, 15 Aug 2022 15:35:20 +1000	[thread overview]
Message-ID: <4639789.K93oBFmSNS@nvdebian> (raw)
In-Reply-To: <BYAPR11MB349505CD7A028D8132DB40B3F7689@BYAPR11MB3495.namprd11.prod.outlook.com>

On Monday, 15 August 2022 3:20:28 PM AEST Wang, Haiyue wrote:
> > -----Original Message-----
> > From: Alistair Popple <apopple@nvidia.com>
> > Sent: Monday, August 15, 2022 13:17
> > To: linux-mm@kvack.org; linux-kernel@vger.kernel.org; Wang, Haiyue 
<haiyue.wang@intel.com>
> > Cc: akpm@linux-foundation.org; david@redhat.com; linmiaohe@huawei.com; 
Huang, Ying
> > <ying.huang@intel.com>; songmuchun@bytedance.com; 
naoya.horiguchi@linux.dev; alex.sierra@amd.com
> > Subject: Re: [PATCH v4 1/2] mm: migration: fix the FOLL_GET failure on 
following huge page
> > 
> > On Monday, 15 August 2022 2:40:48 PM AEST Wang, Haiyue wrote:
> > > > -----Original Message-----
> > > > From: Alistair Popple <apopple@nvidia.com>
> > > > Sent: Monday, August 15, 2022 12:29
> > > > To: linux-mm@kvack.org; linux-kernel@vger.kernel.org; Wang, Haiyue
> > <haiyue.wang@intel.com>
> > > > Cc: akpm@linux-foundation.org; david@redhat.com; linmiaohe@huawei.com;
> > Huang, Ying
> > > > <ying.huang@intel.com>; songmuchun@bytedance.com;
> > naoya.horiguchi@linux.dev; alex.sierra@amd.com; Wang,
> > > > Haiyue <haiyue.wang@intel.com>
> > > > Subject: Re: [PATCH v4 1/2] mm: migration: fix the FOLL_GET failure on
> > following huge page
> > > >
> > > > On Monday, 15 August 2022 11:59:08 AM AEST Haiyue Wang wrote:
> > > > > Not all huge page APIs support FOLL_GET option, so the 
__NR_move_pages
> > > > > will fail to get the page node information for huge page.
> > > >
> > > > I think you should be explicit in the commit message about which 
functions
> > do
> > > > not support FOLL_GET as it's not obvious what support needs to be 
added
> > before
> > > > this fix can be reverted.
> > >
> > > Yes, make sense, will add them in new patch.
> > 
> > Actually while you're at it I think it would be good to include a 
description
> > of the impact of this failure in the commit message. Ie. You're answer to:
> > 
> > > What are the user-visible runtime effects of this bug?
> > 
> > As it documents what should be tested if this fix does actually ever get
> > reverted.
> 
> An short example *.c code to capture the bug in commit message ?

That's probably overkill. Just being a bit more explicit about the 
circumstances in which sys_move_pages() actually fails would be good. Eg. 
something like this:

"Without this sys_move_pages() will return -ENOENT for 1GB huge page
memory map when dumping the page node information for nodes != NULL"

> > 
> > > >
> > > > Thanks.
> > > >
> > > >  - Alistair
> > > >
> > > > > This is an temporary solution to mitigate the racing fix.
> > > > >
> > > > > After supporting follow huge page by FOLL_GET is done, this fix can 
be
> > > > > reverted safely.
> > > > >
> > > > > Fixes: 4cd614841c06 ("mm: migration: fix possible 
do_pages_stat_array
> > racing
> > > > with memory offline")
> > > > > Signed-off-by: Haiyue Wang <haiyue.wang@intel.com>
> > > > > ---
> > > > >  mm/migrate.c | 10 ++++++++--
> > > > >  1 file changed, 8 insertions(+), 2 deletions(-)
> > > > >
> > > > > diff --git a/mm/migrate.c b/mm/migrate.c
> > > > > index 6a1597c92261..581dfaad9257 100644
> > > > > --- a/mm/migrate.c
> > > > > +++ b/mm/migrate.c
> > > > > @@ -1848,6 +1848,7 @@ static void do_pages_stat_array(struct 
mm_struct
> > *mm,
> > > > unsigned long nr_pages,
> > > > >
> > > > >  	for (i = 0; i < nr_pages; i++) {
> > > > >  		unsigned long addr = (unsigned long)(*pages);
> > > > > +		unsigned int foll_flags = FOLL_DUMP;
> > > > >  		struct vm_area_struct *vma;
> > > > >  		struct page *page;
> > > > >  		int err = -EFAULT;
> > > > > @@ -1856,8 +1857,12 @@ static void do_pages_stat_array(struct 
mm_struct
> > *mm,
> > > > unsigned long nr_pages,
> > > > >  		if (!vma)
> > > > >  			goto set_status;
> > > > >
> > > > > +		/* Not all huge page follow APIs support 'FOLL_GET' 
*/
> > > > > +		if (!is_vm_hugetlb_page(vma))
> > > > > +			foll_flags |= FOLL_GET;
> > > > > +
> > > > >  		/* FOLL_DUMP to ignore special (like zero) pages */
> > > > > -		page = follow_page(vma, addr, FOLL_GET | FOLL_DUMP);
> > > > > +		page = follow_page(vma, addr, foll_flags);
> > > > >
> > > > >  		err = PTR_ERR(page);
> > > > >  		if (IS_ERR(page))
> > > > > @@ -1865,7 +1870,8 @@ static void do_pages_stat_array(struct 
mm_struct
> > *mm,
> > > > unsigned long nr_pages,
> > > > >
> > > > >  		if (page && !is_zone_device_page(page)) {
> > > > >  			err = page_to_nid(page);
> > > > > -			put_page(page);
> > > > > +			if (foll_flags & FOLL_GET)
> > > > > +				put_page(page);
> > > > >  		} else {
> > > > >  			err = -ENOENT;
> > > > >  		}
> > > > >
> > > >
> > > >
> > > >
> > >
> > >
> > 
> > 
> > 
> 
> 






  reply	other threads:[~2022-08-15  5:35 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-12  8:49 [PATCH v1] mm: migration: fix the FOLL_GET failure on following huge page Haiyue Wang
2022-08-13 23:28 ` Andrew Morton
2022-08-14  6:20   ` Wang, Haiyue
2022-08-14  6:49     ` Wang, Haiyue
2022-08-14 14:05 ` [PATCH v2 0/3] fix follow_page related issues Haiyue Wang
2022-08-14 14:05   ` [PATCH v2 1/3] mm: revert handling Non-LRU pages returned by follow_page Haiyue Wang
2022-08-14 16:30     ` David Hildenbrand
2022-08-15  1:02       ` Wang, Haiyue
2022-08-14 14:05   ` [PATCH v2 2/3] mm: migration: fix the FOLL_GET failure on following huge page Haiyue Wang
2022-08-14 14:05   ` [PATCH v2 3/3] mm: handling Non-LRU pages returned by follow_page Haiyue Wang
2022-08-14 16:34     ` David Hildenbrand
2022-08-15  1:03       ` Wang, Haiyue
2022-08-15  1:03 ` [PATCH v3 0/2] fix follow_page related issues Haiyue Wang
2022-08-15  1:03   ` [PATCH v3 1/2] mm: migration: fix the FOLL_GET failure on following huge page Haiyue Wang
2022-08-15  1:59     ` Huang, Ying
2022-08-15  2:10       ` Wang, Haiyue
2022-08-15  2:15         ` Wang, Haiyue
2022-08-15  2:51           ` Huang, Ying
2022-08-15  1:03   ` [PATCH v3 2/2] mm: fix the handling Non-LRU pages returned by follow_page Haiyue Wang
2022-08-15  1:39     ` Huang, Ying
2022-08-15  1:46       ` Wang, Haiyue
2022-08-15  1:59 ` [PATCH v4 0/2] fix follow_page related issues Haiyue Wang
2022-08-15  1:59   ` [PATCH v4 1/2] mm: migration: fix the FOLL_GET failure on following huge page Haiyue Wang
2022-08-15  4:28     ` Alistair Popple
2022-08-15  4:40       ` Wang, Haiyue
2022-08-15  5:16         ` Alistair Popple
2022-08-15  5:20           ` Wang, Haiyue
2022-08-15  5:35             ` Alistair Popple [this message]
2022-08-15  5:37               ` Wang, Haiyue
2022-08-15  1:59   ` [PATCH v4 2/2] mm: fix the handling Non-LRU pages returned by follow_page Haiyue Wang
2022-08-15  7:02 ` [PATCH v5 0/2] fix follow_page related issues Haiyue Wang
2022-08-15  7:02   ` [PATCH v5 1/2] mm: migration: fix the FOLL_GET failure on following huge page Haiyue Wang
2022-08-15  7:40     ` Huang, Ying
2022-08-15  7:02   ` [PATCH v5 2/2] mm: fix the handling Non-LRU pages returned by follow_page Haiyue Wang
2022-08-15  7:50     ` Huang, Ying
2022-08-15 14:28     ` Felix Kuehling
2022-08-16  0:00     ` Alistair Popple
2022-08-16  1:12       ` Wang, Haiyue
2022-08-16  2:45         ` Alistair Popple
2022-08-16  2:20 ` [PATCH v6 0/2] fix follow_page related issues Haiyue Wang
2022-08-16  2:21   ` [PATCH v6 1/2] mm: migration: fix the FOLL_GET failure on following huge page Haiyue Wang
2022-08-16  8:54     ` Baolin Wang
2022-08-17  0:58     ` Andrew Morton
2022-08-17  3:31       ` Wang, Haiyue
2022-08-17  5:43         ` Andrew Morton
2022-08-17  5:47           ` Wang, Haiyue
2022-08-17 17:26           ` Mike Kravetz
2022-08-17 21:58             ` Mike Kravetz
2022-08-18  0:32               ` Wang, Haiyue
2022-08-19 11:22             ` Michael Ellerman
2022-08-19 11:22               ` Michael Ellerman
2022-08-19 16:55               ` Mike Kravetz
2022-08-19 16:55                 ` Mike Kravetz
2022-08-26 13:07                 ` Michael Ellerman
2022-08-26 13:07                   ` Michael Ellerman
2022-08-18 11:51           ` Gerald Schaefer
2022-08-18 11:57             ` Gerald Schaefer
2022-08-17  2:12     ` Miaohe Lin
2022-08-16  2:21   ` [PATCH v6 2/2] mm: fix the handling Non-LRU pages returned by follow_page Haiyue Wang
2022-08-16  4:42     ` Alistair Popple
2022-08-17  2:34     ` Miaohe Lin
2022-08-23 10:07       ` David Hildenbrand
2022-08-23 13:26         ` Wang, Haiyue
2022-08-23 13:27           ` David Hildenbrand
2022-08-23 13:29             ` Wang, Haiyue

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4639789.K93oBFmSNS@nvdebian \
    --to=apopple@nvidia.com \
    --cc=akpm@linux-foundation.org \
    --cc=alex.sierra@amd.com \
    --cc=david@redhat.com \
    --cc=haiyue.wang@intel.com \
    --cc=linmiaohe@huawei.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=naoya.horiguchi@linux.dev \
    --cc=songmuchun@bytedance.com \
    --cc=ying.huang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.