From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id DA546C5321D for ; Tue, 27 Aug 2024 01:13:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4B7F06B0096; Mon, 26 Aug 2024 21:13:41 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 468546B0098; Mon, 26 Aug 2024 21:13:41 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 32F4A6B0099; Mon, 26 Aug 2024 21:13:41 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 13A916B0096 for ; Mon, 26 Aug 2024 21:13:41 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 7B032C10B5 for ; Tue, 27 Aug 2024 01:13:40 +0000 (UTC) X-FDA: 82496253000.16.6F25E3F Received: from szxga05-in.huawei.com (szxga05-in.huawei.com [45.249.212.191]) by imf01.hostedemail.com (Postfix) with ESMTP id D329C40009 for ; Tue, 27 Aug 2024 01:13:36 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=none; spf=pass (imf01.hostedemail.com: domain of wangkefeng.wang@huawei.com designates 45.249.212.191 as permitted sender) smtp.mailfrom=wangkefeng.wang@huawei.com; dmarc=pass (policy=quarantine) header.from=huawei.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1724721132; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Sx874eTtAqZdUX9XNyiTvkZQcvQrg6pjILXUivaelh8=; b=JjItue4b0VWH+0B7Vl3Its0UaTP/c2O+XvnN/wPU9fcouWUMbMTIDbLB4unsUo0bx7ELtK qVtAhxidFlRa9ZZazYYpXlXi2TRh1G50a7hhdin2ff9kJveWVJP9vnWx9EqM/a3vER1yrt uEm6pdawTU63S+w1Otez+0Qgqa+smCQ= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724721132; a=rsa-sha256; cv=none; b=H63xjgSuYwsLCwG6ZG6DgK8Qdw1HmHWI9X7I6NAXfxv09TBM+292sWvtu5y+qgaLO8IG6H bTeuwujx6+ONEh5JaSLM2ZAQxSsZVblltUuITPMWZwj/puwFgVZg+Ji1uQOyv4VDXBAUc2 d+K5clKTwFSYIt5A1bK6SUqgMQxY8IA= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=none; spf=pass (imf01.hostedemail.com: domain of wangkefeng.wang@huawei.com designates 45.249.212.191 as permitted sender) smtp.mailfrom=wangkefeng.wang@huawei.com; dmarc=pass (policy=quarantine) header.from=huawei.com Received: from mail.maildlp.com (unknown [172.19.162.112]) by szxga05-in.huawei.com (SkyGuard) with ESMTP id 4Wt8bp1b4Sz1HHWt; Tue, 27 Aug 2024 09:10:14 +0800 (CST) Received: from dggpemf100008.china.huawei.com (unknown [7.185.36.138]) by mail.maildlp.com (Postfix) with ESMTPS id 6E5B1140120; Tue, 27 Aug 2024 09:13:32 +0800 (CST) Received: from [10.174.177.243] (10.174.177.243) by dggpemf100008.china.huawei.com (7.185.36.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Tue, 27 Aug 2024 09:13:31 +0800 Message-ID: <5a475005-e670-427c-b3a7-7e1fe7af1ec0@huawei.com> Date: Tue, 27 Aug 2024 09:13:31 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 3/5] mm: memory_hotplug: check hwpoisoned page firstly in do_migrate_range() Content-Language: en-US To: David Hildenbrand , Andrew Morton CC: Oscar Salvador , Miaohe Lin , Naoya Horiguchi , References: <20240817084941.2375713-1-wangkefeng.wang@huawei.com> <20240817084941.2375713-4-wangkefeng.wang@huawei.com> From: Kefeng Wang In-Reply-To: Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8bit X-Originating-IP: [10.174.177.243] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To dggpemf100008.china.huawei.com (7.185.36.138) X-Stat-Signature: ormggo9tuqacksqpudnhp4puhjd6emae X-Rspamd-Queue-Id: D329C40009 X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1724721216-892959 X-HE-Meta: U2FsdGVkX1/zchcIxSgugX/VrjqmGkjRY6xyRjyIimC95lrfi+exrdDGy1Ik9JDA35x41zCpWGIyaZIz77wVyMaivyyC8jbg0r6Z4sgtWtrL5aJDOMBi0VJEDiXYWJJ3LKTSQ5BFYhoYHF/h8LsF0/UaQlLPYGBfjFU00zA+lRchBDArCP+NngM93VgDLccwL3+P9xkNcuPXmbFbU/lMr70VofuboD7JfCF8Z2bSukDuuSeEH5e/aciU//N5ZxoTnQtUUjnNYN+XqT1+DZMfFj6yWIQmioGreqP4AhwYjY7q9ZsqyySWHLd9GyU/iJnfg6Tin6Zyxpl6gx2/kBryDW1Q6d2lbSX0sfOfOc/uLuwri2pyxZ54nn+F9Oq6leI9krKmyg9kVjrqCqQYK1UFHsRhqg0+CQnXG+w+HYn6NbyUaOaFaDO28p6gkmFp+Pabe7PZ32Z+btQ3RgGFebsCPwiLMkIg6Z2+wpo0/KwIuIgSHClf1SyIpKvT8WAUz6BlvgoJ+M1ruT/uJGKSE2Wbb2HylwNixj+DL2JYgtyF8gqQUfHK2yWZJmt4tX/NK+XFqEIr+9Ni8/v/UnjUKq4ASo2CiKG+ib96sVrpEAzhrWjZ0aR55A+65cJLKvYB5JgGDAhBkRP86bQg1DT8bai3bQ7ls7idG2UtGMdnv1ws7jG1+TEw0OBDkrQ5dY8vhb3MbJGfOa3/JSAvYu5stpx2uzusCa0otjTozplvsQPzROas+TgLQtBDCmTgmbj37vX2AB2rF1mPWT2Kw6zRfwVNWB8cBTSRf1V9uaU0JlhbzK3SOdINRjbNmknVRr0k+3hBQl7/0B/ptsEmq7KdYH53S4hFFZZ44yODUgmOr+JGH+uhgATd6kN1XwcsXcZnTyVzzsDIY8/xNReixNxJLYiHVs0M7XFZcg+rSHUuG7TcE0E2sk6JnzAsVxg742A6HXQlk5UfyGBDrf4Nam1H26s rdKkpPqI wKABM24kw2Up7YDty9mSAUyMcLYZqJJ9VwPk2KPECa39AbJEowrJAkUV0ZEDEYvEOGmNgC78J0TW6wRKZzkTejIkfdxn9MVOh52WCLJQTsqjbPdARjuAqHkx2oLpKouYb+Pf7YavuYau4fD3nndSqkDYJgXcX99MKikZkzsWyRnjvQd22nbBKfUKaVT543q95OmGP0o8k8DcginVMn9CNq47u/adNSvAl+0r1IU/xuF5vjio7Tu+BlXobP6px4j4aAo359wxboNG920+0k5mX86sBZzq9W9MXVr/TiTaNxtysN669mhZvbh1xBMRD3D8pIiMSVVGdwFlT8eHA9GiHc1vcGioCM/wPjiFYM8TLeGX4GXw= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On 2024/8/26 22:46, David Hildenbrand wrote: > On 17.08.24 10:49, Kefeng Wang wrote: >> The commit b15c87263a69 ("hwpoison, memory_hotplug: allow hwpoisoned >> pages to be offlined") don't handle the hugetlb pages, the endless >> loop still occur if offline a hwpoison hugetlb, luckly, with the >> commit e591ef7d96d6 ("mm,hwpoison,hugetlb,memory_hotplug: hotremove >> memory section with hwpoisoned hugepage") section with hwpoisoned >> hugepage"), the HPageMigratable of hugetlb page will be clear, and >> the hwpoison hugetlb page will be skipped in scan_movable_pages(), >> so the endless loop issue is fixed. >> >> However if the HPageMigratable() check passed(without reference and >> lock), the hugetlb page may be hwpoisoned, it won't cause issue since >> the hwpoisoned page will be handled correctly in the next movable >> pages scan loop, and it will be isolated in do_migrate_range() but >> fails to migrate. In order to avoid the unnecessary isolation and >> unify all hwpoisoned page handling, let's unconditionally check hwpoison >> firstly, and if it is a hwpoisoned hugetlb page, try to unmap it as >> the catch all safety net like normal page does. >> >> Signed-off-by: Kefeng Wang >> --- >>   mm/memory_hotplug.c | 17 +++++++++-------- >>   1 file changed, 9 insertions(+), 8 deletions(-) >> >> diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c >> index dc19b0e28fbc..02a0d4fbc3fe 100644 >> --- a/mm/memory_hotplug.c >> +++ b/mm/memory_hotplug.c >> @@ -1793,13 +1793,8 @@ static void do_migrate_range(unsigned long >> start_pfn, unsigned long end_pfn) >>            * but out loop could handle that as it revisits the split >>            * folio later. >>            */ >> -        if (folio_test_large(folio)) { >> +        if (folio_test_large(folio)) >>               pfn = folio_pfn(folio) + folio_nr_pages(folio) - 1; >> -            if (folio_test_hugetlb(folio)) { >> -                isolate_hugetlb(folio, &source); >> -                continue; >> -            } >> -        } >>           /* >>            * HWPoison pages have elevated reference counts so the >> migration would >> @@ -1808,11 +1803,17 @@ static void do_migrate_range(unsigned long >> start_pfn, unsigned long end_pfn) >>            * (e.g. current hwpoison implementation doesn't unmap KSM >> pages but keep >>            * the unmap as the catch all safety net). >>            */ >> -        if (PageHWPoison(page)) { >> +        if (folio_test_hwpoison(folio) || >> +            (folio_test_large(folio) && >> folio_test_has_hwpoisoned(folio))) { > > We have the exact same check already in mm/shmem.c now. > > Likely this should be factored out ... but no idea what function name we > should use that won't add even more confusion :D Maybe folio_has_hwpoison(), and Miaohe may have some suggestion, but leave it for later. > >>               if (WARN_ON(folio_test_lru(folio))) >>                   folio_isolate_lru(folio); >>               if (folio_mapped(folio)) >> -                try_to_unmap(folio, TTU_IGNORE_MLOCK); >> +                unmap_posioned_folio(folio, TTU_IGNORE_MLOCK); >> +            continue; >> +        } >> + >> +        if (folio_test_hugetlb(folio)) { >> +            isolate_hugetlb(folio, &source); >>               continue; >>           } > > Acked-by: David Hildenbrand > Thanks.