From patchwork Mon Jan 13 08:27:16 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wupeng Ma X-Patchwork-Id: 13936870 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 E188DE7719F for ; Mon, 13 Jan 2025 08:34:42 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 34F756B0085; Mon, 13 Jan 2025 03:34:42 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 2FF216B0088; Mon, 13 Jan 2025 03:34:42 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1A00A6B008A; Mon, 13 Jan 2025 03:34:42 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id EEED96B0088 for ; Mon, 13 Jan 2025 03:34:41 -0500 (EST) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 9DBA4121B3F for ; Mon, 13 Jan 2025 08:34:41 +0000 (UTC) X-FDA: 83001767562.04.53D8272 Received: from szxga08-in.huawei.com (szxga08-in.huawei.com [45.249.212.255]) by imf08.hostedemail.com (Postfix) with ESMTP id 7666E160019 for ; Mon, 13 Jan 2025 08:34:39 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf08.hostedemail.com: domain of mawupeng1@huawei.com designates 45.249.212.255 as permitted sender) smtp.mailfrom=mawupeng1@huawei.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1736757279; 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=O7Mm6ELrkXqt3ZfwnMsNbybx1CRr6NPO4cAe/yKt3gw=; b=LVI56PDDnVUf6gkxwSrivMK6J98epS2x6+hnv/r3sVM7Hc5hUUrhjveZrWZqVfptjznlJB 34qEQdX3LagR+sOdwqbI75w/PFLwgiqFobgEh15sBlz2n4GM/HnsJRUWT0MCB/tm6sc4oZ 8eiHlrVC6g9db/URl7q2lNPFvb7DXJk= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf08.hostedemail.com: domain of mawupeng1@huawei.com designates 45.249.212.255 as permitted sender) smtp.mailfrom=mawupeng1@huawei.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1736757280; a=rsa-sha256; cv=none; b=Hg2GLRJj6kaZIQr8LM9+B5kRUyZK1cxGDTGspaJBBbdKEd6y+b1ouEdx8X+T5fbJGhG4PV xsxYa6fcahN+oCUhPTUeS+KhM1RRJg360V0j59LvaJLboEqFVoPe0ocQuYTT0Nz292QteI Uw7s2P7lsF38t78H1HpJH91QL626Pko= Received: from mail.maildlp.com (unknown [172.19.163.48]) by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4YWlnz2kFlz1W3x9; Mon, 13 Jan 2025 16:30:47 +0800 (CST) Received: from kwepemg100017.china.huawei.com (unknown [7.202.181.58]) by mail.maildlp.com (Postfix) with ESMTPS id 7E27C180064; Mon, 13 Jan 2025 16:34:35 +0800 (CST) Received: from huawei.com (10.175.124.71) by kwepemg100017.china.huawei.com (7.202.181.58) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Mon, 13 Jan 2025 16:34:34 +0800 From: Wupeng Ma To: , , , , , CC: , , Subject: [PATCH 1/2] mm: memory_hotplug: add TTU_HWPOISON for poisoned folio during migrate Date: Mon, 13 Jan 2025 16:27:16 +0800 Message-ID: <20250113082718.1872494-2-mawupeng1@huawei.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250113082718.1872494-1-mawupeng1@huawei.com> References: <20250113082718.1872494-1-mawupeng1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.175.124.71] X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To kwepemg100017.china.huawei.com (7.202.181.58) X-Rspamd-Queue-Id: 7666E160019 X-Stat-Signature: neifonzndxjhc5pkhgz481otw8n1jxyp X-Rspam-User: X-Rspamd-Server: rspam11 X-HE-Tag: 1736757279-384544 X-HE-Meta: U2FsdGVkX19Vj2+2hBXn2m9lJqQKQrCC/iwJYdbcmfKwQd122YsTiKGcw1I8+24cxjRZrIk1IJ3f19WfjyKg/q/XoGlsAfajCj795FzLuVE3pkTFazNzFBTFQ7jLWE6AsKKBWW9/SYVzkWCiQXT1Gqiwrzmw2ca/zrhyUjD5bQCJzZ/S9ZUxNVFuqZY8VPMYFXAal+mHUD/NAIG5Nm0E2sWu7pQ83wdKKeOFMFCTNCTmPzschNhSSM/ZGXn9SPHDp4MWtJtv5TVTd+0a85z0FrpRRavnmmXGrIT92ykHIeBupv3596miztSpYv7WPLzlYqWgkHRdAd7LWK7CddbFwaA5HcB2+FlqqKRpS2REXHWuBhIFeICsgyHix84v0jqGtd3FQwmSOwYDBTAaIZYsZg74NQXMTiR62W7i/wbZEIHzV00Ppp0qcXcjGNrimO5/gjq8kKv18ir78Nl73rFa7RIzI8Ip6/W49ULuCzfaQ+BBFWSzPF5BMIEjtrYP28mPd1cuRYuc5CzyAENEG02bJG053XZXelKHXibv6X9V/s3xNaEEpjkSJ3BdJqhzJJcxg/ChHT0AIxsK/CLBEfssZVsyf8auvsOY+SIuZCuNBCm2vzqe1cYrSjf5tLY39xN/HzHH2d5Vd19AXGNZ7WRjX2XZUQBKdLf3rm+E+C4Tj1s7klDE8RYMEIb4TPeWXPXnM1JSU9zRcLBRLlQyJlYVDZd1uv965MLP+UXyxRLw0Sdhot9OC1jXDrHp1bacD30uKOWdYoj71uOhl6O7vb6B1+Tj8sf/z2Fbp9BhIgdXQr1k7qxPc0YNf+a8ClkAmohpYdgoaiDjvAfIj49nkQJKJukPwMRZEpB9+ChMcV8IzBGErYCw1kqfTIWZVdjRpGY9v37JbDgMkfzDsiVrwOej4JsRxsY8k+Bgl2Dct+kfxMD7p9e/v0rLbBv1reaatAH6JulwIkRL8KRRsCJrBjS jOpMyumb fNf5gFwwmgvCHmMyWLThfAnF5h3D1/ddCvmEZ++iN4dYqCKBskpkgLkjLGD3aZYhRnj2jtL6hunTKCZr1JLC3zYc0aoDMkhos6F8uzFfQWxJIGlpGTM/M3GyxBm+LOuADnmDTyEANSdTAbgWIA+Ru4bWKY8W2w+6wcIzFYJ+u6JqL6QEXxeRewqqenMzTkM1KbSfWcqsJy3edUH7VON/rLynInx29DlZPem+FraMsLXgRupGoSBj9JtZQdWwhuxkxR0QA 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: From: Ma Wupeng Commit 6da6b1d4a7df ("mm/hwpoison: convert TTU_IGNORE_HWPOISON to TTU_HWPOISON") introduce TTU_HWPOISON to replace TTU_IGNORE_HWPOISON in order to stop send SIGBUS signal when accessing an error page after a memory error on a clean folio. However during page migration, task should be killed during migrate in order to make this operation succeed. Waring will be produced during unamp poison folio with the following log: ------------[ cut here ]------------ WARNING: CPU: 1 PID: 365 at mm/rmap.c:1847 try_to_unmap_one+0x8fc/0xd3c Modules linked in: CPU: 1 UID: 0 PID: 365 Comm: bash Tainted: G W 6.13.0-rc1-00018-gacdb4bbda7ab #42 Tainted: [W]=WARN Hardware name: QEMU QEMU Virtual Machine, BIOS 0.0.0 02/06/2015 pstate: 20400005 (nzCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) pc : try_to_unmap_one+0x8fc/0xd3c lr : try_to_unmap_one+0x3dc/0xd3c Call trace: try_to_unmap_one+0x8fc/0xd3c (P) try_to_unmap_one+0x3dc/0xd3c (L) rmap_walk_anon+0xdc/0x1f8 rmap_walk+0x3c/0x58 try_to_unmap+0x88/0x90 unmap_poisoned_folio+0x30/0xa8 do_migrate_range+0x4a0/0x568 offline_pages+0x5a4/0x670 memory_block_action+0x17c/0x374 memory_subsys_offline+0x3c/0x78 device_offline+0xa4/0xd0 state_store+0x8c/0xf0 dev_attr_store+0x18/0x2c sysfs_kf_write+0x44/0x54 kernfs_fop_write_iter+0x118/0x1a8 vfs_write+0x3a8/0x4bc ksys_write+0x6c/0xf8 __arm64_sys_write+0x1c/0x28 invoke_syscall+0x44/0x100 el0_svc_common.constprop.0+0x40/0xe0 do_el0_svc+0x1c/0x28 el0_svc+0x30/0xd0 el0t_64_sync_handler+0xc8/0xcc el0t_64_sync+0x198/0x19c ---[ end trace 0000000000000000 ]--- Add TTU_HWPOISON during unmap_poisoned_folio to fix this problem. Fixes: 6da6b1d4a7df ("mm/hwpoison: convert TTU_IGNORE_HWPOISON to TTU_HWPOISON") Signed-off-by: Ma Wupeng --- mm/memory_hotplug.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index c43b4e7fb298..330668d37e44 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -1806,7 +1806,7 @@ static void do_migrate_range(unsigned long start_pfn, unsigned long end_pfn) if (WARN_ON(folio_test_lru(folio))) folio_isolate_lru(folio); if (folio_mapped(folio)) - unmap_poisoned_folio(folio, TTU_IGNORE_MLOCK); + unmap_poisoned_folio(folio, TTU_IGNORE_MLOCK | TTU_HWPOISON); continue; } From patchwork Mon Jan 13 08:27:17 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wupeng Ma X-Patchwork-Id: 13936872 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 94EB7E7719F for ; Mon, 13 Jan 2025 08:34:46 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 106B76B0089; Mon, 13 Jan 2025 03:34:46 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 01D5B6B008A; Mon, 13 Jan 2025 03:34:45 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E24076B008C; Mon, 13 Jan 2025 03:34:45 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id BF9176B0089 for ; Mon, 13 Jan 2025 03:34:45 -0500 (EST) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 69AE9A1C2E for ; Mon, 13 Jan 2025 08:34:43 +0000 (UTC) X-FDA: 83001767646.08.7F985B6 Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by imf19.hostedemail.com (Postfix) with ESMTP id 7283A1A0006 for ; Mon, 13 Jan 2025 08:34:40 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf19.hostedemail.com: domain of mawupeng1@huawei.com designates 45.249.212.187 as permitted sender) smtp.mailfrom=mawupeng1@huawei.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1736757281; 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=QH3Nuc4Wf6q8lcwGc766SwTHV7Ea10W8AOhSXr+sKPo=; b=1UOvT8BGEFtJu/gk5n38jZgxUQi2buJq6QNdEB64SMdUfZPixLfViO8wuwKawSOgEvHZRZ 8cwIvOR26FbzDT/TTn66Wq+AoimlsWhZP2F4yCEfZLa1+JZsopu69BZfmynfzNns7fk86d 4KX/9AvghpVJAOEYvV1wDMYrbJzUEIk= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1736757281; a=rsa-sha256; cv=none; b=wq/SQ1fh2Vqi+s3SKqL8kkVsR41Ge7bpyfAY+U9WlGfyBK12F7LabtUzsqeaUyIWoeg4o7 ko8uj9HSVz2PqKU/CiGPztX3kcKvtizExEiZn59tfbfxrH0u/0yiT8xfltgY+IZycq6PH3 IBY4Idg+kxv6NCBZHiBaEXm+4dJtXaY= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf19.hostedemail.com: domain of mawupeng1@huawei.com designates 45.249.212.187 as permitted sender) smtp.mailfrom=mawupeng1@huawei.com Received: from mail.maildlp.com (unknown [172.19.88.105]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4YWlpw1Kcnz11SR8; Mon, 13 Jan 2025 16:31:36 +0800 (CST) Received: from kwepemg100017.china.huawei.com (unknown [7.202.181.58]) by mail.maildlp.com (Postfix) with ESMTPS id 4A6FE1401E9; Mon, 13 Jan 2025 16:34:36 +0800 (CST) Received: from huawei.com (10.175.124.71) by kwepemg100017.china.huawei.com (7.202.181.58) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Mon, 13 Jan 2025 16:34:35 +0800 From: Wupeng Ma To: , , , , , CC: , , Subject: [PATCH 2/2] hwpoison, memory_hotplug: lock folio before unmap hwpoisoned folio Date: Mon, 13 Jan 2025 16:27:17 +0800 Message-ID: <20250113082718.1872494-3-mawupeng1@huawei.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250113082718.1872494-1-mawupeng1@huawei.com> References: <20250113082718.1872494-1-mawupeng1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.175.124.71] X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To kwepemg100017.china.huawei.com (7.202.181.58) X-Stat-Signature: 83qoots3gdrhwpz1ntrqh6hjzy463j51 X-Rspamd-Queue-Id: 7283A1A0006 X-Rspam-User: X-Rspamd-Server: rspam01 X-HE-Tag: 1736757280-473676 X-HE-Meta: U2FsdGVkX19rJd+8xHSVmypFy9DXd/upYFTdZ2wePuo+D6i9w2u8KUyx5M0vTeqBo9hNup+PCd6w+fSr3eUeLzT10RtK7NX2VtoGbSts9vXh3uzUaX27GJF4Kf2n7AoPHDDYSNq6pRDLDjDGMqRTZPYxlxa1oA3m56R/wrh0QUckKZ0W9RMDYwlgqI4p1caI+/5KdjVdKloW9aPaYSZHDiv1zdmKkU12jzfw00Vosa+my5CxHYqrhKy045hNvHpR5tIR9ubpUjhXhu+Kkzei93Lax3hOgMvHfYDR+vjnYDDz6jJ2PkynjzQOEm7KSMHrVR+XBRopk9/S7E24rwTvCAiPrOsm3WT2PgZ0Dmg0GzLVvU+mA95OURqZ7Hi4QeGYRA6BAkhHSfMsLx6Te7Z+m5bxSrNTRdQzXUfSQENku8CpyD0OOMf/cXh21Z1TyySlXXvQ1LoKlp4DO/i1YjJZn3SNs3HcOyEXNYk7ja4pRf72cZ3EVGuQACJnijl/r4+kSmv+Uoh2Jkz9cLpbE4lM4PVxajHYGfni2e+XYrUbsg0XDrGDXidh36ZMNMZAIHB3q2rN7jsvh/D8zSl3YrK4vtWA0CauN9426UYUFNxYz0O/a0I/gnJrNMyqf/CSplp8wchc78V05VbeZC5M+7jJOYkFMVoLEXiROC/R9G6FXb8xQwFR0kB64bRJE5PO30fNeQVGPqGTm1BTpzGRZmn5vU/62kHiwZ7IcYPzprpxEmaX0F1uDQxatYy0GQquaj3AynQsd3ugV0ucgpCPpVn+LmW/feYm+IAHT42lxAn3FSDJntUgrWtmU2/tgEB6AsWP/6FvR1nCVYSns9alPt1lXBSG4BR3aoNRyLMStMdFivUzpuprB2SdZIk31E5wTHjvNNJ6KPU/fkugrST9udtmwZ7b7D8N/hcIAZa7pUq7Ey7PLzU0+ohzVR0wpnzpWGuVqv3YVwHcXY8DinD5td/ XF7ai2so zqNorcfqReT8gQAkMbG/Ot/ax3tf9Wzcu41yDwZRDj6D/gZFpS/96YffXJzaiku5mSzVYeib4pFdpdvHxHweXPZMf4No62SeAJtmQfjypq+0qVHoSq3ywz00ZCyChY64IC22g8VNFqX48WW20uv+w5+3nGRl7VjMw6Rj2d1cOc2ZNc8xN612Q4RzMZNQ6Cx0NQL7jCeD+wfrQ3YtaQo2pDvt0ev+TTqujf2XhCR4zZG92RFr7TIEgzIJhJGbRVVbJxoy2fPClgvO+JFA= 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: From: Ma Wupeng Commit b15c87263a69 ("hwpoison, memory_hotplug: allow hwpoisoned pages to be offlined) add page poison checks in do_migrate_range in order to make offline hwpoisoned page possible by introducing isolate_lru_page and try_to_unmap for hwpoisoned page. However folio lock must be held before calling try_to_unmap. Add it to fix this problem. Waring will be produced if filio is not locked during unmap: ------------[ cut here ]------------ kernel BUG at ./include/linux/swapops.h:400! Internal error: Oops - BUG: 00000000f2000800 [#1] PREEMPT SMP Modules linked in: CPU: 4 UID: 0 PID: 411 Comm: bash Tainted: G W 6.13.0-rc1-00016-g3c434c7ee82a-dirty #41 Tainted: [W]=WARN Hardware name: QEMU QEMU Virtual Machine, BIOS 0.0.0 02/06/2015 pstate: 40400005 (nZcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) pc : try_to_unmap_one+0xb08/0xd3c lr : try_to_unmap_one+0x3dc/0xd3c Call trace: try_to_unmap_one+0xb08/0xd3c (P) try_to_unmap_one+0x3dc/0xd3c (L) rmap_walk_anon+0xdc/0x1f8 rmap_walk+0x3c/0x58 try_to_unmap+0x88/0x90 unmap_poisoned_folio+0x30/0xa8 do_migrate_range+0x4a0/0x568 offline_pages+0x5a4/0x670 memory_block_action+0x17c/0x374 memory_subsys_offline+0x3c/0x78 device_offline+0xa4/0xd0 state_store+0x8c/0xf0 dev_attr_store+0x18/0x2c sysfs_kf_write+0x44/0x54 kernfs_fop_write_iter+0x118/0x1a8 vfs_write+0x3a8/0x4bc ksys_write+0x6c/0xf8 __arm64_sys_write+0x1c/0x28 invoke_syscall+0x44/0x100 el0_svc_common.constprop.0+0x40/0xe0 do_el0_svc+0x1c/0x28 el0_svc+0x30/0xd0 el0t_64_sync_handler+0xc8/0xcc el0t_64_sync+0x198/0x19c Code: f9407be0 b5fff320 d4210000 17ffff97 (d4210000) ---[ end trace 0000000000000000 ]--- Fixes: b15c87263a69 ("hwpoison, memory_hotplug: allow hwpoisoned pages to be offlined") Signed-off-by: Ma Wupeng --- mm/memory_hotplug.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index 330668d37e44..9bedecfc3577 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -1805,8 +1805,12 @@ static void do_migrate_range(unsigned long start_pfn, unsigned long end_pfn) (folio_test_large(folio) && folio_test_has_hwpoisoned(folio))) { if (WARN_ON(folio_test_lru(folio))) folio_isolate_lru(folio); - if (folio_mapped(folio)) + if (folio_mapped(folio)) { + folio_lock(folio); unmap_poisoned_folio(folio, TTU_IGNORE_MLOCK | TTU_HWPOISON); + folio_unlock(folio); + } + continue; }