Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751617AbdIMAPS convert rfc822-to-8bit (ORCPT ); Tue, 12 Sep 2017 20:15:18 -0400 Received: from tyo162.gate.nec.co.jp ([114.179.232.162]:52397 "EHLO tyo162.gate.nec.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751105AbdIMAPR (ORCPT ); Tue, 12 Sep 2017 20:15:17 -0400 From: Naoya Horiguchi To: Alexandru Moise <00moses.alexander00@gmail.com> CC: "linux-kernel@vger.kernel.org" , "khandual@linux.vnet.ibm.com" , "akpm@linux-foundation.org" , "mhocko@suse.com" , "aarcange@redhat.com" , "minchan@kernel.org" , "hillf.zj@alibaba-inc.com" , "shli@fb.com" , "rppt@linux.vnet.ibm.com" , "kirill.shutemov@linux.intel.com" , "mgorman@techsingularity.net" , "rientjes@google.com" , "riel@redhat.com" , "linux-mm@kvack.org" Subject: Re: [PATCH] mm, hugetlb, soft_offline: save compound page order before page migration Thread-Topic: [PATCH] mm, hugetlb, soft_offline: save compound page order before page migration Thread-Index: AQHTLCUUXtv65Szz20m//LUlbu5A2A== Date: Wed, 13 Sep 2017 00:13:09 +0000 Message-ID: <20170913001308.GA13642@hori1.linux.bs1.fc.nec.co.jp> References: <20170912204306.GA12053@gmail.com> In-Reply-To: <20170912204306.GA12053@gmail.com> Accept-Language: en-US, ja-JP Content-Language: ja-JP X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.128.101.14] Content-Type: text/plain; charset="iso-2022-jp" Content-ID: <9C528A433BCBDD418B9E6A0E73956283@gisp.nec.co.jp> Content-Transfer-Encoding: 8BIT MIME-Version: 1.0 X-TM-AS-MML: disable Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2462 Lines: 76 Hi Alexandru, On Tue, Sep 12, 2017 at 10:43:06PM +0200, Alexandru Moise wrote: > This fixes a bug in madvise() where if you'd try to soft offline a > hugepage via madvise(), while walking the address range you'd end up, > using the wrong page offset due to attempting to get the compound > order of a former but presently not compound page, due to dissolving > the huge page (since c3114a8). > > Signed-off-by: Alexandru Moise <00moses.alexander00@gmail.com> There was a similar discussion in https://marc.info/?l=linux-kernel&m=150354919510631&w=2 over thp. As I stated there, if we give multi-page range into the parameters [start, end), we expect that memory errors are injected to every single page within the range. So I start to feel that we should revert the following patch which introduced the multi-page stepping. commit 20cb6cab52a21b46e3c0dc7bd23f004f810fb421 Author: Wanpeng Li Date: Mon Sep 30 13:45:21 2013 -0700 mm/hwpoison: fix traversal of hugetlbfs pages to avoid printk flood In order to suppress the printk flood, we can use ratelimit mechanism, or just s/pr_info/pr_debug/ might be ok. Thanks, Naoya Horiguchi > --- > mm/madvise.c | 12 ++++++++++-- > 1 file changed, 10 insertions(+), 2 deletions(-) > > diff --git a/mm/madvise.c b/mm/madvise.c > index 21261ff0466f..25bade36e9ca 100644 > --- a/mm/madvise.c > +++ b/mm/madvise.c > @@ -625,18 +625,26 @@ static int madvise_inject_error(int behavior, > { > struct page *page; > struct zone *zone; > + unsigned int order; > > if (!capable(CAP_SYS_ADMIN)) > return -EPERM; > > - for (; start < end; start += PAGE_SIZE << > - compound_order(compound_head(page))) { > + > + for (; start < end; start += PAGE_SIZE << order) { > int ret; > > ret = get_user_pages_fast(start, 1, 0, &page); > if (ret != 1) > return ret; > > + /* > + * When soft offlining hugepages, after migrating the page > + * we dissolve it, therefore in the second loop "page" will > + * no longer be a compound page, and order will be 0. > + */ > + order = compound_order(compound_head(page)); > + > if (PageHWPoison(page)) { > put_page(page); > continue; > -- > 2.14.1 > > -- > To unsubscribe, send a message with 'unsubscribe linux-mm' in > the body to majordomo@kvack.org. For more info on Linux MM, > see: http://www.linux-mm.org/ . > Don't email: email@kvack.org