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 05EDCC52D7C for ; Thu, 22 Aug 2024 11:36:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6CE256B0144; Thu, 22 Aug 2024 07:36:05 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 67D306B0146; Thu, 22 Aug 2024 07:36:05 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 51EF86B014C; Thu, 22 Aug 2024 07:36:05 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 312626B0144 for ; Thu, 22 Aug 2024 07:36:05 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id A3625140610 for ; Thu, 22 Aug 2024 11:36:04 +0000 (UTC) X-FDA: 82479677448.02.A753BE0 Received: from szxga08-in.huawei.com (szxga08-in.huawei.com [45.249.212.255]) by imf07.hostedemail.com (Postfix) with ESMTP id 1342B4002A for ; Thu, 22 Aug 2024 11:35:59 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf07.hostedemail.com: domain of wangkefeng.wang@huawei.com designates 45.249.212.255 as permitted sender) smtp.mailfrom=wangkefeng.wang@huawei.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724326546; a=rsa-sha256; cv=none; b=p2YgI3JYlR7iUHoTy/greA1tgMDG11Guho2z6h697pJMWIFMJIAOwhdHHBihMqRVqrr7az I+Nh14+gpkipKJQVIO4iGTNwwNd7WINS3zmKVyLc+bi/sh5gxuR0OS3EOn1vi37mdWkyLE fj8Hu8IG2DYXmzOHpnXPYAbfSaHWvXA= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf07.hostedemail.com: domain of wangkefeng.wang@huawei.com designates 45.249.212.255 as permitted sender) smtp.mailfrom=wangkefeng.wang@huawei.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1724326546; 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=KwfDtdc+FKol41XMGN6W+UfIeTU1oUht5KiitW7eRlY=; b=xZgRG4Kdq7PWbrmV1Gz9a+roP6SlJM1TNJ6b0uYPWARJpPd8iF7y/SApnpi1jCLrFMs7xW GZbHgVl+s0a8XzFbgXrhPwSnit3JAmpCatC0LJKaNru8a1SfLzf/9v27KtiP6wkxYSnCRs twGDAMm10xOOqQ2X9llv6+b4RhJECk4= Received: from mail.maildlp.com (unknown [172.19.163.174]) by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4WqLjH1RVvz13KmQ; Thu, 22 Aug 2024 19:35:15 +0800 (CST) Received: from dggpemf100008.china.huawei.com (unknown [7.185.36.138]) by mail.maildlp.com (Postfix) with ESMTPS id 83B76140134; Thu, 22 Aug 2024 19:35:55 +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; Thu, 22 Aug 2024 19:35:55 +0800 Message-ID: <01a3c528-b2b6-4a54-88d0-f761ba3cd10d@huawei.com> Date: Thu, 22 Aug 2024 19:35:54 +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: Miaohe Lin , Andrew Morton CC: David Hildenbrand , Oscar Salvador , 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: 7bit X-Originating-IP: [10.174.177.243] X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To dggpemf100008.china.huawei.com (7.185.36.138) X-Rspam-User: X-Rspamd-Queue-Id: 1342B4002A X-Rspamd-Server: rspam01 X-Stat-Signature: zw9es3idpwijz4rrwjgiobm843sdocqq X-HE-Tag: 1724326559-522523 X-HE-Meta: U2FsdGVkX19tr4oHQDZzewj2Tnzz6wAEy8JtP/3rCgkuQuUSFSDUkVF+2qqJG/MSIqUfpkZDbT6C7zLtK+4NvysK2KOvkRL/y+GFWRWmwRqN5xS7d0XysP0/3Er6g8mrhDHmrL2brc5l7YeMGJ0sQH7wlBxFsk+64N8MEBpi4CSHMKaewNYYJtuDo4Gvd16q57NiN9/8EP8rLK5X3pCkYtyFI5Bwh94h92aiYhJ95wlly/KwhY/JonmVLp5ET+lMidkKXEl3LubWABVllRGgYm9QSt08AC9ZmV3ZXMHcjjgpv16m26uoXTtudGqKAocfHa1GELHd1Xxm+4AdorS4AEwjLzdAtml0mVvAtXFj7Evp6jC9TVfZZSGejg9iK38Hd3D0ozicIxAlARApOoC2DXhRMR8pAeNhYwZ6cga7Yt4WbRXjAU6KQL5SNVo4IPA7YTBHaLzl8opxzhXuLXHR8zkgQTpqrvb9G9L+USdrQlTWUO6GdMhvaKIRVEXfoODkouq1yt4tjqkM1b9W4GEfMhIu45Ij65GV77rcJIu51x8HSjhp1oJG+Tv5YAT0HomtiUTRBQ726qCQ88KQi+SHI04iaTQYtuWd5dOLDg1VyojKVG+M8ArxmsQzEVaGyXB63xKouz700anbai6Wd3dRsSMqDh4OFN55YFxLmwc61nrIJQBH4WBtHrzD4eWMffkfvHqSaRExIIgn57SmRbaQTCMwYqXcnCRU9tvhxxSyrF9pTwz2nsyFp/zVyJ0NP9axtefKK9kFWHytLw2YwsN4xOGx+A2T9+lif+KbCMMbhiuKVGRt9IpOquLkdeMEo9A/FgI05I/pCUwqH7tjQm97VDSpWE/CQH7tP2xjThx6fXdBGXO/JqBwC82hQxl29bo5psgoznZlkSYYGCqITdHqWxyHRrQOB8vD4MFwYWoS4Bsfbcb9ZI1BwtxstXPs+HOnG6/e+FlqpdMQnfe2DUs CDUOmm1/ G1R1Sx+pNDCo9IvXG3oYqlcH0VUF4eMGGNkUPx4snFOCf0gV54fph9EHwnuCMwcLNNkd3Beh98glAVY7xHA7myzsi63YOOnZCvrb6RqQJliyPPXImuRwI1aA6GFtmydSUpTgPofneJ5vlnOy+q3wIQATJ2/mOzu00xm18zdAufKI9eoHhJX0rf4vyDnOTdYNmegKSjoV+5COf31K6sTRHI9qTVwTDacRX5Qfdkm8bdKdkm4+98vP+opP3f+KQvuUQ4wIs3rAdk5UH5AcfxXoXLbyui4h5hL88v3H6tFRHNbJZLpH22MV30Kg1pw== 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/22 14:52, Miaohe Lin wrote: > On 2024/8/17 16: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 > > It should be commit e591ef7d96d6 ("mm,hwpoison,hugetlb,memory_hotplug: hotremove memory section > with hwpoisoned hugepage")? Above "section with hwpoisoned")" is duplicated. > > Also s/be clear/be cleared/ ? Acked, thanks for carefully review. > >> 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))) { >> 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); > > While you're here, should we pr_warn "failed to isolate pfn xx" for hugetlb folios too as > we already done for raw pages and thp folios? We will unify folio isolation in final patch, which will print warn for hugetlb folio when failed to isolate, so no need to add here. > > Thanks. > .