From patchwork Fri Feb 14 15:42:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zi Yan X-Patchwork-Id: 13975151 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 87753C02198 for ; Fri, 14 Feb 2025 15:44:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C3D10280002; Fri, 14 Feb 2025 10:44:11 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id BEC1A6B008A; Fri, 14 Feb 2025 10:44:11 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A1799280002; Fri, 14 Feb 2025 10:44:11 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 834FD6B0089 for ; Fri, 14 Feb 2025 10:44:11 -0500 (EST) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 295D8805D0 for ; Fri, 14 Feb 2025 15:44:00 +0000 (UTC) X-FDA: 83118971040.30.351140C Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2083.outbound.protection.outlook.com [40.107.93.83]) by imf23.hostedemail.com (Postfix) with ESMTP id 508C114000C for ; Fri, 14 Feb 2025 15:43:57 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=ndcCe9LN; spf=pass (imf23.hostedemail.com: domain of ziy@nvidia.com designates 40.107.93.83 as permitted sender) smtp.mailfrom=ziy@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1739547837; 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:dkim-signature; bh=AebmBmJkIAuQ7h16HolSR4JegMPa7EHSV1KqsaK63Ow=; b=d58w/g6mmD7TTN0AEd+5xxUV4lZ7bHfkcvtoOGA1hJhZ8XjDew1KBZrEEd9oB9sfMXLggx 2R1w1s7DC8TXkfHXYAoBiqi+WeS/4/9PGqSTgQ/ZXcZOaTr+nw8FGvMKcyuYk4dePBCKPE MAIojfEpPFfRRsnmCnWD+QRh7RJTWOc= ARC-Authentication-Results: i=2; imf23.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=ndcCe9LN; spf=pass (imf23.hostedemail.com: domain of ziy@nvidia.com designates 40.107.93.83 as permitted sender) smtp.mailfrom=ziy@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1739547837; a=rsa-sha256; cv=pass; b=mh0bM7wIRH7kVInhCrb8a+JuGzsKKUORTcgxnGN27EjG6KB7wzfHv7/Q4/RvVTF7AEa5xf TfoEZmYQX6ap8EQ6TyMn7Zrb347YX7zfnJQ6/1LvlpnQvWsaXyipLN/mRWV49PKVkJ3dx/ YzeUbXKGWwsau/7NLSv+LeFdfV+3TX0= ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=JPHg5r7ppzyYSV2+BCHWue17bD8SpU+9hKde0Mpvzd2hQ4Gcgiqlshh7r+x+/sZ6/cbw7661/j0jwek6f/+lGvEOPKvR9XmLwC9III1DeZU4R/8SA5ZA/XGnhEq7AoEj0vghcXRlH6RAuJFm8fkrRhzPTS6JNtHYmr2KdK0g12hrX1bW/5R8iUhza66p6MwRwGMsO9OTurjSZ1+WB2iy1WdilS3yYFxOs3a/fpXhp/Gual5bZXLAq2NQiT6LNKoxdMrjtONKQPBbThdrIIoUqLA0dVgypK66u3euhJ7/ATxouuCc4CuwzoDIVv4KldDoZLXEN4niYHzt+1k6nFYF8w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=AebmBmJkIAuQ7h16HolSR4JegMPa7EHSV1KqsaK63Ow=; b=oQeKuA88qfEU3vyO/V7GMhWE1JZRGfEM8qvwh+kBGYW/VJ4Mc0RpPYxoLuQwW04ReFDx1r9TisuxKwvlfJxlOFqYXxUR+SKTSt8fIe2FR0nzPTg2IRvikILA5ONGGR0BTXpJj6rgP19UKMnS1gmjGrfgfP/iRyb/feFvLmHiRgyYnU/mbAF5ZXKUMW3RK3e7mnWdD1XCmuRqHxR5xUCSsvb0PTy/nbfd32xVZV7U+k5KCzcTdBEFvxKoFI4zA08nFSs0fJMiNwh4hnSvnWNz8jcEeRuueRMRr8396afBsCkk1wMX3OqU7e+RCMoBHTPBSbbW4KnQKsEIb3+Lwc4ueQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=AebmBmJkIAuQ7h16HolSR4JegMPa7EHSV1KqsaK63Ow=; b=ndcCe9LNbuiXBcEVO7xZfNKtkrXt4mzQP3JP1rfh8uOlitgLwpFb6E4KiiljeiMsspM7jtG9a8Vo0HA4c9yJ41oaZPgR7WPiSVZw6rKByhoFlkpY5EKj1C8UVT1qHh82g5XzR3w2jH2M0UiLtwR1lohbU1qm2RwSr+hdW+yjgEjRgzSwaR3M5nU86RTIkIcOOg5mRZZVOsXM9cw2tVytWBKbBWxchHBtqvQNV9z5p7yijYGJV5tMD4j7BnBVJaXFyvKF6npWhnfMudb377dPO4APcFCPnpc+lGgW4YU1hpP5W8clVWcRe/EVL7yrLGZUjILrgjbFKpW4qfZS5HgzJQ== Received: from DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) by CY8PR12MB8339.namprd12.prod.outlook.com (2603:10b6:930:7e::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8445.14; Fri, 14 Feb 2025 15:42:24 +0000 Received: from DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a]) by DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a%5]) with mapi id 15.20.8445.016; Fri, 14 Feb 2025 15:42:24 +0000 From: Zi Yan To: linux-mm@kvack.org, David Hildenbrand Cc: Oscar Salvador , Vlastimil Babka , Johannes Weiner , Baolin Wang , "Kirill A. Shutemov" , Mel Gorman , linux-kernel@vger.kernel.org, Zi Yan Subject: [PATCH v2 1/4] mm/page_isolation: make page isolation a standalone bit. Date: Fri, 14 Feb 2025 10:42:12 -0500 Message-ID: <20250214154215.717537-2-ziy@nvidia.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250214154215.717537-1-ziy@nvidia.com> References: <20250214154215.717537-1-ziy@nvidia.com> X-ClientProxiedBy: MN0PR04CA0009.namprd04.prod.outlook.com (2603:10b6:208:52d::30) To DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB9473:EE_|CY8PR12MB8339:EE_ X-MS-Office365-Filtering-Correlation-Id: f2ba1d9f-37c0-476f-09b7-08dd4d0e2d56 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: lxmdowwLmZYoXQfU1A24v2y++AMfGflHKUgGPAM9v4ZygP7eLkowhmD/YW12YMHDA8pW4zh0GsNWxQ8SlMiRBR2LgiIruSNPEPCunDsOgNNNdUE2D2o89ab4G5ZVKDQ3tG0bLQTBUaayFvYR9klgfcV9BaCmS8z++AYavghnKHWVvdBOztXL7kwFepXhf5t5PBHtM5d5rQKy+FJoOY+YYxRA/ObJ8Gw8xQpxqJSad4yx5oWjkW0sQoK4bHnnv/ihF4KbCIlEq54dQg6yjLbLJtfvQhJNc6gXGhkYXxuAMJmH5Faa5rsHEOhdM/LXTLIVxZcKneb/4FPy0Z7i0Ac8cSRg5go0Wh82+UevSesdhKrMhZdUGcH1H3XzIr6rypHFaCcRGMMaSaC8yx6XiGzyaE6TET69mmc0xIAkrnGtrJCxcb6TclgkioQ5Dd4mj9KJlr2xWKpdPpDfdELurA2Y1m8eplMYo2M5il1i39taUlTZWZW/NZEU/svFJZbI31v1+Vwq9MF81+jI4z1lZ90XUxxUq8ZmXwjyhWPfWq1fen4vIWgIjNJ+Nc5ggI96gBZGN4k2EiAruBFaebGIlbrcIsr8dHl7KHTChLfKicWH5ZPYt+aVEL8GdvY8zQ+R7U9HA3JLWl7HPj1Cl0q0uQqNRY6eStQ7TVPn9flVsB4GrPRVZUEzymV0tE+lI8GwXfbG2V+S5mWIwkSpoNDvrJfgij723XBt0MibxR9fiXYkGtyDrdeq94B+AHsexsFWZLGG2/IeSPixCaOqLZHSaJmrJNfuHmq5uWVMYj8z2zTNKUBEgbV/INaI6edHDF3CCQ98dWn06fHMRRdCrNpZozvbIIZLNofP1WSrzyMKoxWirWd004fywG7hCpJjzvA9VTFxPIZjlFrXDH3jqKOTXtMCh7/7suVCD2srisOSfV9S4VijU9488PYZqErDbT0QNwiAF6tDj25XYFe22jzXpEaVGsP2B6f6YX5lDFBQNj6lB5idPI8hhO7/Xosub/hnT1mO91yUOwnfrGGeGAb24NuuPWRPdS/zIDOJ9S4K/oU3UBuT4m39+igy0vFTjSdbaucgUm+oCsKtT6zm7lVT1un3+y9TLPDT3mGktu/DvF1DlTwatwlNruFWmzricjdZBEfem0y8AmZ1NqmIazkzS6GxeuoIHBjr/cWA1/SWDrYpaAFpJmkLdl77nZK2j4a8f0Kz2zyoKSt94BiRNsUDaeC2TfMXqpo1Ocr8YM51xeIwgHvkdTrYsG7i7IHCMTevqTApqLkOMH8Oxla7bG0+Vc98qLSCLwVu/TUIr1UrHtrAIqCRBxSjAsYTiB8pcvsda5z92MhzghqCnASqKtiGH0v3VAByvEea1nq73B7/TzUwwOnl1DmLnmgVWLyLI9viTKEq X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR12MB9473.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 8UW9o0egujEIDx9Hat6VaHAeAqpnhtDpooDZCaodjDnI2E3ZAIHQrDuvIMXjvgUzDi6kIJoaFSC/5gAUsoTjE8G6U6ay33sJM/w0BxyCK8+2t9YRDgmFOacXA5ZT8vmujNYWCf1d3Ey1SaDrvjCKsntT/gLJVFla18VqUoFQHn5emHjEVqeSicpXcTMfTrmfT41rnceGRW7FeA5N091+qt+i6/vS2tfyjrKQ4Nl3pUhDvDxFf2JRHFBgSpolnU+N0iOAMnppSvUgzdDRrtWmrdSWyvrXB/mkNtjntz+OC/eAu+d3+jmJUyJaeXr64uxA9yGK32GPg8WaCC10deMthawcwLoXpPGXaBqwURUTpT5Kbz0kfwsBx/bNBXWLVWaK5gcc9/ozLZtrjIno/ABS+l4MQg2T/atwRmPbhiCETU4f45WUeQKr+kZKdZj4SZfp0wotfKuhthavBliXGmudW9ZGKjme86fFfqU2Rxau4N3CThtma/J4SqcTCtcFHct/jxExGt4XnwGLtLvqpCHlelZy/+sCYBJfmohC0HornGHjW6XKjLR01DffN4iLYkfWl/SzUoxFfaDY7Rgdlamh+BxGRJF7CcZyz/Oaa9gnGVjrxnVd3hH7lquGRpSJ7KiwdnyJYdfgyvi4in1l1tk7ab9t+U+wMiZGQFjpWVgNQQtnAVqkG063Oe6JAgkG12z29zKyaDJOFVf+jUQ1ocJWQ5pTgVxMJMiAHudM3JPHXcktYR0W88+Bbk5IK4QtQihH92qIKCCuY6mURuQBFiDdjcKThhGLZudWa3VgKDS3+2vq3sk3gU4TftK1PcEvSl3QRZ09RrVJGW6eVeHYyuWiRpxl9MTiRi587ahX9UKcEYZUf1q88ZQOxQTMuqEjomUJKQjO35ykwgKQXmCOkpg62SOqDtQuW1oEJJ3FB4VL+B3kyUmJ7YcxO55hjNp/mHdeIzbMGQWoipgO9NjDnUWXnrxxWAmNIshw4T9/AJ8/yTql/XWVT1c2Aq5WWuMuzY8+6AmR7znT+OP47DviGjpPxTxac8tduq179N7EJL3q2zr7+9mmSGMu9eGQDWvLtTP0GBmUlmCIIXF9wrdL2GWGnUMtbhacXg+a1KGOiJONSt6Jml+fzXkywwO/ONOTbu6NSoKP0C0vcHM2ye/bh+23fcd98EWSmrcJcjE2eHSBGjNN7vdzbWyiYFTYvXP4YyLURBH7gWWjq6B+TKkwxwOYSdBZ7n22sVm+88HguY/97AtTQu/l8OHgkWgKd5bKIZRPb4a5WVi4rwaarva7t/kdyljmWrdNi0iR0DzAVgMhYXX4xnT1y63STu8jX3nlbORnAlJbqO5wgwuYTZFBPA5UN4lcxCXhKDTQEbI0imIvsxiMp81KCOmYvr+pGOIe7RqLwKX8dvY60WWWZeN/X/+vOrfgnYA+3Hu62v8gyS63PdvdOeyhVO9kuaN200bYXEYDCiZFY97DNu4uPRDvAb5DJFUf59IkSe+QrPrsSpugTXr9rNaMsMefm8PTQDBwG9cieMKIqSnpjw41lOIV9dL0fnA+rXA53ttkAwWuqqVRBj8Jb4T4l7LJssyvjXUfkq14 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: f2ba1d9f-37c0-476f-09b7-08dd4d0e2d56 X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Feb 2025 15:42:24.3016 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 9BQljV9wq+4Fgs4DmRO1GFk0C538OvTrgMr2IS2dZ4JqZoJEyyOoHzLamhDfD2QK X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB8339 X-Rspam-User: X-Rspamd-Queue-Id: 508C114000C X-Stat-Signature: ft9ho3p6q5d6p7b39rgjgasi9ut8cppg X-Rspamd-Server: rspam03 X-HE-Tag: 1739547837-21183 X-HE-Meta: U2FsdGVkX1/ztYhh5Fpnto7UjfwV8eM1jxq5vuooIJEMSA1Jtt+3vSWeuTqncIkRXkCTj+PYjo5crauJKpbL9H/x5PDLmJ/xjwsBaH3c4s4AMSdXpqnFrLLmIHz8Xn/48SFYK8pVQ5YC9s2fZ4Q5663yUHHuvhP5whKYiQxAbiv6qQYVZAk3Am2t+zYsuamRPE3Vmte3BpE0f2bZS6Ja235no7k26iXU6iZhKpfBlklc3iK69FjWS7opAx63BC7nnXurQJQLg15jrOF002HlTiLprNxoRTPSGGa9slSJTpa30XT9UPYXqQQ7FUOVHP22zNa6zu2OZu4T5nihs6N+TdRDtAaoetuYcBsdCVf4huqLx1S1gTFTNR58gzLUXqXMrIjFX8JMjmI6BXOTmytAk7eBOXBWA1elej7sFWL268WlcRDEP2ywTUIl49GMRpNLFLLjFbr76BvmrZyjWgh1IKfUfbivP0dugvwc3lvsk1HCZhgCkZlCPXMN2y5qKKnX5eYNQt/vgDrdKkkmG5ycb3z4eZlURPHOKZrPhOvaZsbuIVttkCMziIoopMTAWq259PF8AstHkiNtH6/s0ekidR7A6lITRr7AcrdikWmNN+6xjGc4idjJVTw0tj4pTPRqweJ+ZUjVuRwlPXqFP94uN6jEBJWWX2x9GaosENttyv1qjidCHNB6VihAwQXeIl7UUMSYk7y922NkPD5Drlo4dXuVg/gmiEqoEESDjFZxI9HGTj64GnnSuyql945Uqibb22AFmqlDEvruDv2Ns03vHVpLrBWzE/csOiGGnIh7wa1pNmMd4xzNPwEMkKr4x2e3Vp7bdK6jqm6TBvnJJdTyjupUeqBYJ/GYEO22wqnROrxWrYd4Q3XR8+5nhsZc+zF8dDpuTPvThKOtY2NUyIVYjThhSfmBPmQgwv+CPYGPenNsL0NWsfkuVx0L/jHv68wtGQyKysRUF93+6meSLbA uCKfxYfu e4SSWMdj/ZwCLFid6aG/rjuRN850Xgo75tymSfZwRrLp0Fa82xCpKkLMu64zGeYQNMoCJRPm3l3ia+l21ueVL5yWGU98MqgsTgTC7AU95v/U+Xa8Wsbb3p5Bf8ILJyXPF5TUVJ6Dear1twDtDgdDjGJ/Gj/C7MWq3adFhVz7gBHwdwQ7ibUG2HmTYUk5NYcIUErvt0T//EzZ0cj7f5e8C+sLfuRiUlhOcO5sBdH6PFyvPxJE4sDjKqg98RPEzjtyM8ApE62XZpoh6t+L38WgiqABtYh4tss2gLABv+d+FJAVj6DLz182W0TjjBuJIkImbG4PO8d3c0SMu14czo1JET7+yww2QGlDryS6O95RBJKSDioJYnosbTcIpbE9Ly31YzZIK0VVVuQoQurQ= 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: During page isolation, the original migratetype is overwritten, since MIGRATE_* are enums. Change MIGRATE_ISOLATE to be a standalone bit like PB_migrate_skip. pageblock bits needs to be word aligned, so expand the number of pageblock bits from 4 to 8 and make migrate isolate bit 7. Signed-off-by: Zi Yan --- include/linux/mmzone.h | 18 +++++++++++++----- include/linux/page-isolation.h | 2 +- include/linux/pageblock-flags.h | 33 ++++++++++++++++++++++++++++++++- mm/page_alloc.c | 21 +++++++++++++++++++-- 4 files changed, 65 insertions(+), 9 deletions(-) diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index 8aecbbb0b685..3c7d3f22ccb2 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -106,14 +106,22 @@ static inline bool migratetype_is_mergeable(int mt) extern int page_group_by_mobility_disabled; -#define MIGRATETYPE_MASK ((1UL << PB_migratetype_bits) - 1) +#ifdef CONFIG_MEMORY_ISOLATION +#define MIGRATETYPE_NO_ISO_MASK (BIT(PB_migratetype_bits) - 1) +#define MIGRATETYPE_MASK (MIGRATETYPE_NO_ISO_MASK | PB_migrate_isolate_bit) +#else +#define MIGRATETYPE_NO_ISO_MASK (BIT(PB_migratetype_bits) - 1) +#define MIGRATETYPE_MASK (BIT(PB_migratetype_bits) - 1) +#endif -#define get_pageblock_migratetype(page) \ - get_pfnblock_flags_mask(page, page_to_pfn(page), MIGRATETYPE_MASK) +#define get_pageblock_migratetype(page) \ + get_pfnblock_flags_mask(page, page_to_pfn(page), \ + MIGRATETYPE_MASK) -#define folio_migratetype(folio) \ - get_pfnblock_flags_mask(&folio->page, folio_pfn(folio), \ +#define folio_migratetype(folio) \ + get_pfnblock_flags_mask(&folio->page, folio_pfn(folio), \ MIGRATETYPE_MASK) + struct free_area { struct list_head free_list[MIGRATE_TYPES]; unsigned long nr_free; diff --git a/include/linux/page-isolation.h b/include/linux/page-isolation.h index 898bb788243b..51797dc39cbc 100644 --- a/include/linux/page-isolation.h +++ b/include/linux/page-isolation.h @@ -5,7 +5,7 @@ #ifdef CONFIG_MEMORY_ISOLATION static inline bool is_migrate_isolate_page(struct page *page) { - return get_pageblock_migratetype(page) == MIGRATE_ISOLATE; + return get_pageblock_isolate(page); } static inline bool is_migrate_isolate(int migratetype) { diff --git a/include/linux/pageblock-flags.h b/include/linux/pageblock-flags.h index fc6b9c87cb0a..d6fe17bf0c9b 100644 --- a/include/linux/pageblock-flags.h +++ b/include/linux/pageblock-flags.h @@ -20,7 +20,10 @@ enum pageblock_bits { PB_migrate_end = PB_migrate + PB_migratetype_bits - 1, /* 3 bits required for migrate types */ PB_migrate_skip,/* If set the block is skipped by compaction */ - +#ifdef CONFIG_MEMORY_ISOLATION + PB_migrate_isolate = 7, /* If set the block is isolated */ + /* set it to 7 to make pageblock bit word aligned */ +#endif /* * Assume the bits will always align on a word. If this assumption * changes then get/set pageblock needs updating. @@ -28,6 +31,10 @@ enum pageblock_bits { NR_PAGEBLOCK_BITS }; +#ifdef CONFIG_MEMORY_ISOLATION +#define PB_migrate_isolate_bit BIT(PB_migrate_isolate) +#endif + #if defined(CONFIG_HUGETLB_PAGE) #ifdef CONFIG_HUGETLB_PAGE_SIZE_VARIABLE @@ -99,4 +106,28 @@ static inline void set_pageblock_skip(struct page *page) } #endif /* CONFIG_COMPACTION */ +#ifdef CONFIG_MEMORY_ISOLATION +#define get_pageblock_isolate(page) \ + get_pfnblock_flags_mask(page, page_to_pfn(page), \ + (1 << (PB_migrate_isolate))) +#define clear_pageblock_isolate(page) \ + set_pfnblock_flags_mask(page, 0, page_to_pfn(page), \ + (1 << PB_migrate_isolate)) +#define set_pageblock_isolate(page) \ + set_pfnblock_flags_mask(page, (1 << PB_migrate_isolate), \ + page_to_pfn(page), \ + (1 << PB_migrate_isolate)) +#else +static inline bool get_pageblock_isolate(struct page *page) +{ + return false; +} +static inline void clear_pageblock_isolate(struct page *page) +{ +} +static inline void set_pageblock_isolate(struct page *page) +{ +} +#endif /* CONFIG_MEMORY_ISOLATION */ + #endif /* PAGEBLOCK_FLAGS_H */ diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 16dfcf7ade74..f17f4acc38c6 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -362,6 +362,7 @@ unsigned long get_pfnblock_flags_mask(const struct page *page, unsigned long *bitmap; unsigned long bitidx, word_bitidx; unsigned long word; + unsigned long flags; bitmap = get_pageblock_bitmap(page, pfn); bitidx = pfn_to_bitidx(page, pfn); @@ -373,7 +374,13 @@ unsigned long get_pfnblock_flags_mask(const struct page *page, * racy, are not corrupted. */ word = READ_ONCE(bitmap[word_bitidx]); - return (word >> bitidx) & mask; + flags = (word >> bitidx) & mask; + +#ifdef CONFIG_MEMORY_ISOLATION + if (flags & PB_migrate_isolate_bit) + return MIGRATE_ISOLATE; +#endif + return flags; } static __always_inline int get_pfnblock_migratetype(const struct page *page, @@ -397,8 +404,18 @@ void set_pfnblock_flags_mask(struct page *page, unsigned long flags, unsigned long bitidx, word_bitidx; unsigned long word; +#ifdef CONFIG_MEMORY_ISOLATION + BUILD_BUG_ON(NR_PAGEBLOCK_BITS != 8); + /* keep other migratetype bits if MIGRATE_ISOLATE is set */ + if (flags == MIGRATE_ISOLATE) { + mask &= ~((1UL << PB_migratetype_bits) - 1); + flags = PB_migrate_isolate_bit; + } +#else BUILD_BUG_ON(NR_PAGEBLOCK_BITS != 4); - BUILD_BUG_ON(MIGRATE_TYPES > (1 << PB_migratetype_bits)); +#endif + /* extra one for MIGRATE_ISOLATE */ + BUILD_BUG_ON(MIGRATE_TYPES > (1 << PB_migratetype_bits) + 1); bitmap = get_pageblock_bitmap(page, pfn); bitidx = pfn_to_bitidx(page, pfn); From patchwork Fri Feb 14 15:42:13 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zi Yan X-Patchwork-Id: 13975150 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 C128CC02198 for ; Fri, 14 Feb 2025 15:42:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 585F1280001; Fri, 14 Feb 2025 10:42:47 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 50CE46B0085; Fri, 14 Feb 2025 10:42:47 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 38709280001; Fri, 14 Feb 2025 10:42:47 -0500 (EST) 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 159FF6B0083 for ; Fri, 14 Feb 2025 10:42:47 -0500 (EST) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id CCB0147DD4 for ; Fri, 14 Feb 2025 15:42:45 +0000 (UTC) X-FDA: 83118967890.01.374C122 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2061.outbound.protection.outlook.com [40.107.93.61]) by imf09.hostedemail.com (Postfix) with ESMTP id 0C7FD140005 for ; Fri, 14 Feb 2025 15:42:42 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=D3daoQ5+; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf09.hostedemail.com: domain of ziy@nvidia.com designates 40.107.93.61 as permitted sender) smtp.mailfrom=ziy@nvidia.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1739547763; a=rsa-sha256; cv=pass; b=do+DI675oO3hvyxjMxcW6/08hChlPPCel/QbITL9wH96iK+pFqIavTgQwOZYonQmZe9LHI ghbTJD9jnu/hPuQhPAymSC6vA8StpiQAwTExWdGNw/U0Sl428fLjfhEzkq47X6w3QLwsGJ WFElC0gWEfNUBjgAX5yq7r09utWjeFA= ARC-Authentication-Results: i=2; imf09.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=D3daoQ5+; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf09.hostedemail.com: domain of ziy@nvidia.com designates 40.107.93.61 as permitted sender) smtp.mailfrom=ziy@nvidia.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1739547763; 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:dkim-signature; bh=/uEVNm36daEAQedWM1fmv32brDf7DLmvj6nt8IZy6Dw=; b=d0EgsGkwmhCUgGAiJWhsIT0ud8ZxfKQtd+YTAvBuoaIjYKSK3PjLY2huc65xWhBPrjDjp/ 6/s2Z2OBR+ZBeVrzrWChFuOkn0kq9Ljos9ecY0Wb/R6ZsUnHvBnMDcafUv1kKLh9/HbvD2 +9pAfh0qm4h7URdZDJ42OfcY5i2OEXY= ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=JcKR+gSlOFJs2dCdD8is4SJYkklmNF4pRtJkH/akNSY0uGlSOW21pDp4OFryFEMzWrDeLGfERRPNHHgfnhNdLHHG9PXj9FewY7gUSSzpAnboMjGUd80bbU9UFrLqk4RNCbSDQHfgRGVrrcrG4BO+zEmo2/ZPGCf/dn13WYJJZCbrlCPX0aS3X+AoOYGKDGC+3QUG3EG3W/Couj36UFuykx+80OE3kfzAQTdCplWDSqmwvqt/farX0bCggfant9FEu1VI0Yx1tyDThPjcCu3MPppyEb+q2z8bMfpzpsciANtyT3uoxW1qkLEwlzMiLAh6LHEerEKSIPDWXT9AzczQzw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=/uEVNm36daEAQedWM1fmv32brDf7DLmvj6nt8IZy6Dw=; b=lrJYJ9Gwxm6Ri1Z22QGQS+ZV7EBpz4cG9AQyxrp+u7QQC8oZMazWkwEUu1Z3QkFEkZ0r+e7ivXv3cV3Kz5XhIiaAIpDoDhCOvJfVf5uFCBH4JQAioeHLRJmw+Jj722fHNQy0VWCFTHq+AaPsn4J7XjXodE+MpB+TXcDJ+pD1hxcjg/DvpsAXUTx7+MehefAvBlo03MENImluhObIe9wweFH0izqpwvJLORuIFVTD431vY21R7hcVG1xiXY/0sBvPtJZcU2xm42mUBTYT2NfvCq5gQ/6LgNvJlfiXQzthBmXjwDFc9prX8junu8xpcI1QID5rhotfzhuaiJJ+u3AZFg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/uEVNm36daEAQedWM1fmv32brDf7DLmvj6nt8IZy6Dw=; b=D3daoQ5+em1PgiHIu5ibfHx0vgBxPl158qqlRuDSzBE0fKPY89tiyhNZKcwyNHVDSF/fx/fzq5y7uqGqddgEbZ1o9/HwKd0GUL9iWRNvPID7hAfObv6qtTpw5XOwlvTep/h9fA2lAkrPqEa911O6pM1WUhh1EBal3XNagwZlOyjGSOs1gBzgPk268L7HkYJyq9LqnwKY65nsuDBVy3lY/O5E6WwUW/jCoIsoaWxH65n0l6CIsDHU/PxHYZ2BbjrbxAP5NoWa3nypxusOvHEuH2yhPq7b/TYVBblDA0zYDr/RxJBlPRQOaNhJVUcAqKqN7s9bzVhxanmzO6Y5+caQCQ== Received: from DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) by CY8PR12MB8339.namprd12.prod.outlook.com (2603:10b6:930:7e::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8445.14; Fri, 14 Feb 2025 15:42:25 +0000 Received: from DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a]) by DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a%5]) with mapi id 15.20.8445.016; Fri, 14 Feb 2025 15:42:25 +0000 From: Zi Yan To: linux-mm@kvack.org, David Hildenbrand Cc: Oscar Salvador , Vlastimil Babka , Johannes Weiner , Baolin Wang , "Kirill A. Shutemov" , Mel Gorman , linux-kernel@vger.kernel.org, Zi Yan Subject: [PATCH v2 2/4] mm/page_isolation: remove migratetype from move_freepages_block_isolate() Date: Fri, 14 Feb 2025 10:42:13 -0500 Message-ID: <20250214154215.717537-3-ziy@nvidia.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250214154215.717537-1-ziy@nvidia.com> References: <20250214154215.717537-1-ziy@nvidia.com> X-ClientProxiedBy: MN0PR04CA0005.namprd04.prod.outlook.com (2603:10b6:208:52d::9) To DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB9473:EE_|CY8PR12MB8339:EE_ X-MS-Office365-Filtering-Correlation-Id: af76635c-b321-4b72-a20b-08dd4d0e2e41 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: 00NuQBAPdZNCJgjPosGQu+5+M/ivtm6R/nfQFYVhIjZQSnfpsJ1PFqsg8ROBG1jw0bdRcQVZSqU0tw9jmkXYTexMeGRizvItU32/j6Y8CbQPgcgBJxMjMf4Q0p/XLp/M7cUKD95XoMg7/Pp2YqffAcmntHLAz2o19UHy8on4yX2QAjt2rmt3Z29sEizzd66JmS4ac4267VvTfipkh54sUTA70UG0y9qZ1sXe6Xr5vNGzrfuHeLPtz8Bsn0zzePB2Lnq14nm07958uTYmQVdOf9Z7s9FEKH5LdXtyT1LMkqjsMNwEltwGXH5KEcjR0TmXKjU3hMBLuQUKOtjGBnFHXcEQC3cw/Z+Q5+Umn8BkaiG22xuQ7jv3PSF4gDD5wQrxehHgfdtmwH+FwGq0hLc85MCV1PVqh//EME6lHDTMG35daLe4rngvXPMJquZFTSWUIO6MxM9amgbMzPOXx1MteJRDfnoquX5RNqXWe5GQAuJOlg4RXtDu4QlH2/ceDhhI9yaOgot3uswN6c4D/caAFzp9IwCAzXyx4+XoUu5FGscqHcmugcaSoMvaOCSNCb8RPbFpB/di3b2Wo0JGduh6hzZcKhSGKXsPMsEhXDMKIN3jYoyGpwT3apdsS1uC2OzI6QHWOAnjuTWeeYE1IxKyxr+VB+TQ8NuqrDZJdf+PrVNm15kzoTvCp7JFOY7DYY1Jl2vMShrt5Zvbrp3wzW2+ksErHUvylqemb855jNUpA7Y6RbE0be5ml+ll7aQqJmXeckoK24ILNMMV9fNkSojyo6RIXjwfwvAsNfLDzpoCG4+OqWryB5jMtOiuEWVVAfGxljd5M7ToLsTe0t+OgRPh11w/ho11TVh+JMjZQHDJdEYxDXajXVD7YRWc4AcbiCNiVxuVkPOAHFgcQPWDaSoyl7ljxlfRRQ/Wtgn9eXWx4VDLUTMo3K/L5GQj3bq2emIKpUT6wUy7uD+4sLJO+VlHFbb9s639hGSScgyqZhAKMHCH/Vb9EyhL5ZnTwhK/m21nV4XCZnvKvH4QtEPFwOB8PQQ3gxPBAfvxTJhLeaHgRyDJVue51CZnvjIXHjGzC+vYcmFKWWcb8xaB0C8jG8hkDELdNVB6mFWQWJkTFvny+tYBqRoWVw1raGlgzVqWw4YBni6642O+QqSW0H5yVC4V1rRD81R9r/i4vxzuKocGxuNsCjEfSc71lSvvHj8P43k9ydtPe5lUN8lf2WRDhZIgF0M6tm2OqJNvFzD0bpc4rAI9yN6E95EpSTy+DJGAKtYIsngSFPtQ8lfrwZq3ARFImLMyMkxaOERPQbYy4k8oex0Fc5HJIMb8ufN2tzaDOg66eOUDXqj3vM1DJ6a6to7+Ru3Hr2f9Vt0RYh3j/f9KVNvx4I0f/R664UDA6dypFo4L X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR12MB9473.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: /KTufJfOzhmERdxbqVaH09hSAfDLI5zd2qYNxso/H7o8fju0ew/uhruv6v4SzV/ThRhksDrrmY4az7qA27Df0vn2/FMis099TpOhgnbR8fT4WGAB4zwpk+mL5Ph1EhuV9QhVStjQci2T4t08D+yUTNAADYzC0ELrHQT3ur6XDH9dm4VfZvM3VzdcXswOBWOPtTHizN6NOS0cZdfyyiE6ToJOw8OY5OVXoxf+7GrIkPDe8Pnp9j81OjakWzxfymbbpXdD9CRxTKKU5tL+miYpJLzedukI76YCioqxksCtPI2Lr380peshEeC38rsw6zPp0UHUJ3tr00pGq/Bi/Vb+yilorTYfUCLb01g9KI9o08f7eu8tuYpfdnzdLJrc/hA2wPPkodYK2N0+4Q/MQlFTYvy2h9RjOf8P3VkyG9Rq3MhNg+ZpcKgqWig0lJqKzqx8nwQZvYMCO+SUn1CZ5F78tCjHjGkN6xMw/QqKUkEAulw/Q2PZoVNT7FpLTNfymz5NcjvJo9/9/2PK6iHt/BPs46o140oJqn/JDV8JN0RD5A0Q/w9sISiIDonoVUskEa0QTcQcgVctilI8/ZxVNl+D6uCvjelrQUlwKIkamWaGL57fpEvdLi1PHbzP5RM8k+zcmvNLFFSwWYX8FF33/BFHYjoruyhCiS2BpuuxqFnHB/J/IPODSjpA8eQtlCd35L3c0BziAbcDV8yhzw7EZnZAX4dWvQ0tZVzyKQHbkfjymoE13av9Zz1U64be5tPslXAmkIfZdOpwd7bxKfTW9VRrlICy05aQTrIMyCYlnDrtAGzByEcqtd2hqYrbdXKEU2lY5fNGXpCm2pYF0SkV21q+EpYIL3rhPStiD8/8VIeKliKWrgRNZ5ltPiqCO6MYjLzGR9UXrBjhUyUmFuIusoH2egwuKo3UkfOHlRlVOv8w9TVxIWDgu3IeOO1D/D7TvarWzas5svddpNZBREm/vhBftEAS0nAzTzGRSDy4yzdNu6HrS88upmHTH8P9gzP9COgVtWr6YKt1uyOoelOVU75+vqNqlagQgxwv4qH/gBsqAGOlPV630AxAR7rSxuHjnjsIKF1kAzzwrWwWAzu7830iruI8vKDQBL8Byn4qq67AdUWV0oeQyjyPNYv/jPykS/zs4ENBJED9Z5t9uRLRPLCKi+W6qswkEyzRpMWGd6M5kTtT22ZPoGV5TDvoKCeGFrW8ojTFzOG5A/oY2wa/LcO+dJJy2VYSXsf4gjGnEMaYOSi0K/o5lEvlOCi5CIQNsyXWTTA/myexFTwBSzAu7qMVqXR/GvYfWt2NOVBJYYuh/G5+TVjIR5ckVFrC7ZE+q5QLF8heRNcljRPebV8hdHFBaUCjB4YeYyG4wZBHe3IT5LcTebql7VwvgrAftMpGDn0yVm1g7o8k836Fg7CJatts3voxeZRNsb4mCYpvcsGgc8cbVnfsIoOTC4ZenYg5NnJ9mi88RQBrXt0iabh91ZLwf/B87cTC+6QvZ/ZL9gmJiuregJT6au397fk8P+x2lf8HobO1C2zLBUAfX9iJIb0UvlCtHVG/rBqen0lt3EfmWZ3FR1jl1gmZQEaZt0MIym2b X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: af76635c-b321-4b72-a20b-08dd4d0e2e41 X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Feb 2025 15:42:25.8483 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Idb0lS7AmnEH0ThnxLALp2rXBzg8+dmQAnz8ES71r6UPULUzgRLFU+YJx9of+E9d X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB8339 X-Rspam-User: X-Rspamd-Queue-Id: 0C7FD140005 X-Rspamd-Server: rspam12 X-Stat-Signature: gew6m7y4hdwbkdydak9jhcoxk17u6a9k X-HE-Tag: 1739547762-335365 X-HE-Meta: U2FsdGVkX1+bsHQr6fXXveh5KFP9pCp+oRLBaO4BEg9+4cj8HluKWdFKrKWetA0YNIGHymAxLSLaxFoHoly5GRf6zKFudFVcdCMNGfHZfd1Jp96BOR2myNx+11FRF9Bxa1Y2n+HpkpBDcAM1KRg3XdK4Hfx5xTJVG+w7kYLBXsZm0iPrsoDbtDzcjzIFBMZV+gy3nbcESgboGWI5sM7AWgSdmNTVO1GuErwZeIakqHulRxd86eqlAC2dTcNnSQFjbd8tgtrQpkLub9dhk4CCbSAYybRp6mnZclJ9/ZhLINZCodCrwMQeMJRWd5LcLHuA8egi/WGnCZdZ9lNmBV1N803A7TnHlkJDJnreDLJI1Qexl2YaxP0l7PhOQbl2UlidEPqpb0P9nGyzcPjnm0JWbxtTTt27ulVHA4yuKsGomUyZoPBRAq1BJD321QiuUBzIQeWAhaAH6ejb1FYIhkocbu5d7yLb6xO04hIR5/ApcJTB+EHaiVk3cP+sHhVchuQ7CpE6ERb8iczBthhsjWvPPYOILbMIgtiFqdsFmRewlUKkFW46knvG79+KIr5YY8nKf700g8D1A616vfunfXNtuJYD6s/K2FC0JVVFlPbGmaRO8RvC/8wdFkCTmntWOvXJm6TGVGwYnMYZa7yw5cxDysDiY9BhZ+2PnYvafpCgc3vKlRJB2K1rIKrwvkV710sNOXCKpBCx5Os2RcK+YouX6WgRtAvpYBlvLFaZBhngBqJpskMWFAUJoR+ohJj12dKXTeQ60KXeIWs598aTTa8CrvgTLmVtDCnjC71u625Qj8AZricalExOxGIfmCTpcTfy+XROxqaiq4r7t8tJvKZcB2joQTHVr3XlewkJNatL5ssPNbFBnwiyFVPuJ7FrqRdKLK4gG297lQ/GpDySIS63SAwr/ut5UhFL6aYn9c42Ym4DgbDUL7H8VxOOmxOgf6R5Z2Ic5/X1cTm5uLV31OC FaBoBco+ pI0NlQ7mLRoBuDT/3Hu3UpmuaKm3CCPad7h40PoNFq9uABvJYZO5YSjnwNz6SIYIg1lH9j731ALdeIzK+22JXz4MQM6H/Ko3Bjowkn03uyuCxCWrF35oNbQtFtNnnDdwYL2bEo68vEl/Crb09vtEboqgfmSQfirqxdqWACKDTXqO6ZO2w+V36EhtjP1EMX/UHlP7TVKXPHqRJrZGUp9DiOanMC0QytQK4MkMvV5SjeeVPB4F+RcjSeZ19T52leY9+HeAiKsIpUT3XgwUGnGTcvPgoNC8oAMgp6saSd7g9XAmns96qawrQtIXp2Fzaq0m1FePpzcXfwMJ2mVjb8tMpr1uytdgN5h6Ag9vrxF5UJbmt4oecELbqsm/PunCF5tr1M5BoCqtwvjmFpR04V1UZr1nUmUmvmp/SMgK6dWGBRNmnOI3GSsKVfvQ5D6CQv8CMphOAA5yCXeNT+KU= 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: Since migratetype is no longer overwritten during pageblock isolation, moving pageblocks to and from MIGRATE_ISOLATE do not need migratetype. Rename move_freepages_block_isolate() to share common code and add pageblock_isolate_and_move_free_pages() and pageblock_unisolate_and_move_free_pages() to be explicit about the page isolation operations. Signed-off-by: Zi Yan --- include/linux/page-isolation.h | 4 +-- mm/page_alloc.c | 48 +++++++++++++++++++++++++++------- mm/page_isolation.c | 21 +++++++-------- 3 files changed, 51 insertions(+), 22 deletions(-) diff --git a/include/linux/page-isolation.h b/include/linux/page-isolation.h index 51797dc39cbc..28c56f423e34 100644 --- a/include/linux/page-isolation.h +++ b/include/linux/page-isolation.h @@ -27,8 +27,8 @@ static inline bool is_migrate_isolate(int migratetype) void set_pageblock_migratetype(struct page *page, int migratetype); -bool move_freepages_block_isolate(struct zone *zone, struct page *page, - int migratetype); +bool pageblock_isolate_and_move_free_pages(struct zone *zone, struct page *page); +bool pageblock_unisolate_and_move_free_pages(struct zone *zone, struct page *page); int start_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn, int migratetype, int flags); diff --git a/mm/page_alloc.c b/mm/page_alloc.c index f17f4acc38c6..9bba5b1c4f1d 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -1848,10 +1848,10 @@ static unsigned long find_large_buddy(unsigned long start_pfn) } /** - * move_freepages_block_isolate - move free pages in block for page isolation + * __move_freepages_for_page_isolation - move free pages in block for page isolation * @zone: the zone * @page: the pageblock page - * @migratetype: migratetype to set on the pageblock + * @isolate_pageblock to isolate the given pageblock or unisolate it * * This is similar to move_freepages_block(), but handles the special * case encountered in page isolation, where the block of interest @@ -1866,10 +1866,15 @@ static unsigned long find_large_buddy(unsigned long start_pfn) * * Returns %true if pages could be moved, %false otherwise. */ -bool move_freepages_block_isolate(struct zone *zone, struct page *page, - int migratetype) +static bool __move_freepages_for_page_isolation(struct zone *zone, + struct page *page, bool isolate_pageblock) { unsigned long start_pfn, pfn; + int from_mt; + int to_mt; + + if (isolate_pageblock == get_pageblock_isolate(page)) + return false; if (!prep_move_freepages_block(zone, page, &start_pfn, NULL, NULL)) return false; @@ -1886,7 +1891,10 @@ bool move_freepages_block_isolate(struct zone *zone, struct page *page, del_page_from_free_list(buddy, zone, order, get_pfnblock_migratetype(buddy, pfn)); - set_pageblock_migratetype(page, migratetype); + if (isolate_pageblock) + set_pageblock_isolate(page); + else + clear_pageblock_isolate(page); split_large_buddy(zone, buddy, pfn, order, FPI_NONE); return true; } @@ -1897,16 +1905,38 @@ bool move_freepages_block_isolate(struct zone *zone, struct page *page, del_page_from_free_list(page, zone, order, get_pfnblock_migratetype(page, pfn)); - set_pageblock_migratetype(page, migratetype); + if (isolate_pageblock) + set_pageblock_isolate(page); + else + clear_pageblock_isolate(page); split_large_buddy(zone, page, pfn, order, FPI_NONE); return true; } move: - __move_freepages_block(zone, start_pfn, - get_pfnblock_migratetype(page, start_pfn), - migratetype); + if (isolate_pageblock) { + from_mt = __get_pfnblock_flags_mask(page, page_to_pfn(page), + MIGRATETYPE_MASK); + to_mt = MIGRATE_ISOLATE; + } else { + from_mt = MIGRATE_ISOLATE; + to_mt = __get_pfnblock_flags_mask(page, page_to_pfn(page), + MIGRATETYPE_MASK); + } + + __move_freepages_block(zone, start_pfn, from_mt, to_mt); return true; } + +bool pageblock_isolate_and_move_free_pages(struct zone *zone, struct page *page) +{ + return __move_freepages_for_page_isolation(zone, page, true); +} + +bool pageblock_unisolate_and_move_free_pages(struct zone *zone, struct page *page) +{ + return __move_freepages_for_page_isolation(zone, page, false); +} + #endif /* CONFIG_MEMORY_ISOLATION */ static void change_pageblock_range(struct page *pageblock_page, diff --git a/mm/page_isolation.c b/mm/page_isolation.c index 8ed53ee00f2a..01d9a4eace7a 100644 --- a/mm/page_isolation.c +++ b/mm/page_isolation.c @@ -188,7 +188,7 @@ static int set_migratetype_isolate(struct page *page, int migratetype, int isol_ unmovable = has_unmovable_pages(check_unmovable_start, check_unmovable_end, migratetype, isol_flags); if (!unmovable) { - if (!move_freepages_block_isolate(zone, page, MIGRATE_ISOLATE)) { + if (!pageblock_isolate_and_move_free_pages(zone, page)) { spin_unlock_irqrestore(&zone->lock, flags); return -EBUSY; } @@ -209,7 +209,7 @@ static int set_migratetype_isolate(struct page *page, int migratetype, int isol_ return -EBUSY; } -static void unset_migratetype_isolate(struct page *page, int migratetype) +static void unset_migratetype_isolate(struct page *page) { struct zone *zone; unsigned long flags; @@ -262,10 +262,10 @@ static void unset_migratetype_isolate(struct page *page, int migratetype) * Isolating this block already succeeded, so this * should not fail on zone boundaries. */ - WARN_ON_ONCE(!move_freepages_block_isolate(zone, page, migratetype)); + WARN_ON_ONCE(!pageblock_unisolate_and_move_free_pages(zone, page)); } else { - set_pageblock_migratetype(page, migratetype); - __putback_isolated_page(page, order, migratetype); + clear_pageblock_isolate(page); + __putback_isolated_page(page, order, get_pageblock_migratetype(page)); } zone->nr_isolate_pageblock--; out: @@ -383,7 +383,7 @@ static int isolate_single_pageblock(unsigned long boundary_pfn, int flags, if (PageBuddy(page)) { int order = buddy_order(page); - /* move_freepages_block_isolate() handled this */ + /* pageblock_isolate_and_move_free_pages() handled this */ VM_WARN_ON_ONCE(pfn + (1 << order) > boundary_pfn); pfn += 1UL << order; @@ -433,7 +433,7 @@ static int isolate_single_pageblock(unsigned long boundary_pfn, int flags, failed: /* restore the original migratetype */ if (!skip_isolation) - unset_migratetype_isolate(pfn_to_page(isolate_pageblock), migratetype); + unset_migratetype_isolate(pfn_to_page(isolate_pageblock)); return -EBUSY; } @@ -504,7 +504,7 @@ int start_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn, ret = isolate_single_pageblock(isolate_end, flags, true, skip_isolation, migratetype); if (ret) { - unset_migratetype_isolate(pfn_to_page(isolate_start), migratetype); + unset_migratetype_isolate(pfn_to_page(isolate_start)); return ret; } @@ -517,8 +517,7 @@ int start_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn, start_pfn, end_pfn)) { undo_isolate_page_range(isolate_start, pfn, migratetype); unset_migratetype_isolate( - pfn_to_page(isolate_end - pageblock_nr_pages), - migratetype); + pfn_to_page(isolate_end - pageblock_nr_pages)); return -EBUSY; } } @@ -548,7 +547,7 @@ void undo_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn, page = __first_valid_page(pfn, pageblock_nr_pages); if (!page || !is_migrate_isolate_page(page)) continue; - unset_migratetype_isolate(page, migratetype); + unset_migratetype_isolate(page); } } /* From patchwork Fri Feb 14 15:42:14 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zi Yan X-Patchwork-Id: 13975153 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 BB458C02198 for ; Fri, 14 Feb 2025 15:45:35 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 55FFB280004; Fri, 14 Feb 2025 10:45:35 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 50F006B0093; Fri, 14 Feb 2025 10:45:35 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 36255280004; Fri, 14 Feb 2025 10:45:35 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 1C9DB6B0092 for ; Fri, 14 Feb 2025 10:45:35 -0500 (EST) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 7B057140620 for ; Fri, 14 Feb 2025 15:45:29 +0000 (UTC) X-FDA: 83118974778.06.FFDD0BF Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2081.outbound.protection.outlook.com [40.107.94.81]) by imf19.hostedemail.com (Postfix) with ESMTP id 73A671A000B for ; Fri, 14 Feb 2025 15:45:26 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=WokOkzZC; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf19.hostedemail.com: domain of ziy@nvidia.com designates 40.107.94.81 as permitted sender) smtp.mailfrom=ziy@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1739547926; 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:dkim-signature; bh=3sizwI47ZLkUjZJnH3dOI3jZ9Fu2HYfFAi247w0Nv8A=; b=KwjnZiVLWKqutuZqXKKwEfnRan9L7T2VLRfFfnXriYF0HxwVXyp2kjMQnb6V6xjSXTBVWY Qb7nubA+6jS1KItprqSlBYKctlOkwaE1E4JS94vvn02kUclgcj6sOaf+10RAUh3V8J9mnc Gv3JJazmR4lQOzUrF59/bPaxFmgOomg= ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1739547926; a=rsa-sha256; cv=pass; b=s8hvGpJEcitRkqUG2ZxAs0z9CuVVwH/R0AUcHJ9i/4VWfiRcftgO5jgYrKx+T5Zk8gRSTu eJT+5qFP2fyifLRGqsQGiGDbckxndqmvOf4Xek8vCgHN2OOkqjrZn93AxzI9ImEC8iECwq S10ZuibDlU48JnbpYj/+InKr6Qo4yAA= ARC-Authentication-Results: i=2; imf19.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=WokOkzZC; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf19.hostedemail.com: domain of ziy@nvidia.com designates 40.107.94.81 as permitted sender) smtp.mailfrom=ziy@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UnWSmqMgt0aUV+4oTTJHrsv/9u6AajD7JjuqhWoB8k/KWUbINnc+xBrsh6mKoWJZFkIsAK7OJ2hIGTboLQ5xcZLvJUppaTk8J6edIIhtzg+zc68OrOBz7XCjSmDZB8+tYBewHh1+o8vn3h6GtzAFjFAyobi/MGnTpXwAxo/fXr+7l3c8/ky9oSgpwILIfC64Dl2pNrhY2na7wUcGHeU0a8SFLtrYof/ypF1K9dwteGsf6MnS4GjWBC2Wpp3JvZy5H5i6uQqe+3XGdzB765idaj9jkxAiNIu9n6rwTUejYjgPexPzgueM/ZoFyx2Ry8hQ8WIp1q0O0PMwrwBmD7f2Tg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=3sizwI47ZLkUjZJnH3dOI3jZ9Fu2HYfFAi247w0Nv8A=; b=LvCJlymzbnE71AlQYRKW5Orjhpm/xiMmJ5vEX9XmT0nh1wGJ1EYnHvLhqXsHjLqnW2QzRGzud9dquxLYVvXwIIhJZeehd62P/uFXuiCoWV/Xc/jtNm+DJ8aqphIgY7MNUs8WmLCNxVs6vr7tesKMXzQNI93cOKL53LuPtvnLsykpe0TLYsVJN+2ZERzbIFwzPklGzOyWrEbIzJL5ZTP/8IAgq0cEdwJFOVZmNd2Q0kvQgk0PgwoRr8Vk6DvUM2LtJU0naRF2Cp/d3mHF8hQ69OXuaxSJ2t2WRaSTlU6r5atIxH47TgDq9DZrxYHVPKAo89iA1lY8awRYZMycA8v3mw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3sizwI47ZLkUjZJnH3dOI3jZ9Fu2HYfFAi247w0Nv8A=; b=WokOkzZC0h/qwkvM9waNljhg1R8kdCPm+BEnJKuPRwcxYEZ/XSaTiEDHM7eZz2Se9MzyuguvDX06K9mukSnr36Ej8EaXzUex2d8m+S84K0VI6wbAJSEE3w2xyK55OCN+G/ase7cm8pZR7Du5ea7InltgzWdUWNbm5ujXTKe5uKheBNj9ybCG+12NTcIrY6JTJQw+hyZeL0sC9DsszrV9PcVMuJul0s0GEewZHu9kHkXwxIkL2pKmH4FknhBnOoLdZpnon+sTOIdghpC0rSWabkR7Lm2VyuutLjVOxyirTzxl58rVUgbcKOgGm+qw5XfmAI2QqO6Hy4JZ9yhVf2nAyg== Received: from DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) by CY8PR12MB8339.namprd12.prod.outlook.com (2603:10b6:930:7e::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8445.14; Fri, 14 Feb 2025 15:42:27 +0000 Received: from DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a]) by DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a%5]) with mapi id 15.20.8445.016; Fri, 14 Feb 2025 15:42:27 +0000 From: Zi Yan To: linux-mm@kvack.org, David Hildenbrand Cc: Oscar Salvador , Vlastimil Babka , Johannes Weiner , Baolin Wang , "Kirill A. Shutemov" , Mel Gorman , linux-kernel@vger.kernel.org, Zi Yan Subject: [PATCH v2 3/4] mm/page_isolation: remove migratetype from undo_isolate_page_range() Date: Fri, 14 Feb 2025 10:42:14 -0500 Message-ID: <20250214154215.717537-4-ziy@nvidia.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250214154215.717537-1-ziy@nvidia.com> References: <20250214154215.717537-1-ziy@nvidia.com> X-ClientProxiedBy: BN9P220CA0004.NAMP220.PROD.OUTLOOK.COM (2603:10b6:408:13e::9) To DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB9473:EE_|CY8PR12MB8339:EE_ X-MS-Office365-Filtering-Correlation-Id: 47e1e1be-5606-4a10-e9a2-08dd4d0e2f2e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: lsT9itf52KMQqJXn776MRUdHBzrpBCOVWqkPGmJrV2FuvwQtEZ7chIrtF61Cwsr714Rf63FiT+8WoWo2pC1zdA9pwOyoXpr/Ov3dYBhun9Kcre2/2z2Ghb6HbWHJBIHJdEmYe+l53U4r77/fITgR31nY1xSu3dbx4lARUU3rmNBell/5Jek9yCA8lRebZEx2liXo/qm960ly7jS1InGNITXMFtY44haKxFSUtmnWzmxur1RU55G0cEpPXkIZVU7tQPY1BS0Iz3La51RjkoMp922ICwvozxvIDFM75ifLb0W+CYpZlMgu9kpMnPrYY6dBbHhGAduJfZ4P+YJeUb8HfDsOCwdU9FPcAgwvg5hjdK5nsy4qLp2qZWWmRpbwRABdy//dPyoopOHDj7hwZXvDXKg8VykG3fHURuAFQdYsGOO5Riida+HUrfQP9SO4kFL0mHeY6vgdZZzA9m+GGsWFCjHBxI7yp+8FWJ+N5m23iWFPULHsWt978UOwRmcpN118RpNNDpkE2/PuQIQg1owD9L60VbXxNkesEj60WM8Ye8/QF2NZcW6SEcWvF1RgaWACBLwg6WMauB3yn2tXopVZju9lnGSy+ccxJcgPwiBVtpGHqUdABAqboMUdpaTAsB9Tpss7O39BbcubQ6pw5PC8FJuGmSi31wxyeq0suc5W7cLYJxikFkSZRO25Em/4PaEiHM5Wdtm7+Cn3PoXN93ISrQuP3WpwZJHxg/8RCu/0uNNArwZDJQCtDx3PGum/ZpjtBr1exvjgO8V1RMPn9YQlmHthhybjX7bvAh+rMmGOjwZDaLU0wxyoR5MeSWOIeLxw83x5YnoTbI2uhqWyiIx9uXM7HLRSUgy8Zu37kmiQ6SYj7xad7z6nJzPzeYJFATidGMqnT49xyI6jQGRW6YX6+62ciE13/fewdsTowtbHxOFHXhcYwkNFm7/5/+Zfsr4EfI/qGoszNEvTJkxCvljGabRO6CBfCIc+YftxBlPpAvk70SA0lETyl8qTtGGtlyExYkTNwDEWLl2lVv28Xd0ZDRv/S4ZCTCFiK9Bz39DYmjH0E1/RFvDQcKqgJjl77toL/EwkP0FbMNUbcFytkjGXnvlyqoZpYTG0+G2Fa6jXRceJPdBkuQCBafeXt5IvLVepuFaQF3ubdGW5K2QGWFVrjaLxG1+XAtykf3Z1o2h237PmjdB9+BkqJlMKd6iYPvsyIL7hC311oLs4ZF/MM7Grd3gU1dQL5BheFQA78PwRJ2xZWnX20FwOngexY9gUrGkivLh8YTIgoGVYAKZRRunWOF6MF/7tdBJ4DFqRqYmAg9rwBkBg0f3r/T2cFszbNKj9Fkk69vzVjSj34XQcLrU4RTV4HT3J3MTqmJ4IpWPQvwW0mOQ3cvTmBs/Kqo26S+mq X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR12MB9473.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: dSBupQgC4fo4tAGvaYdU2BylL075qwT6WmahjUrMTos/lFdFQyP4TT09cSwSjXTY1AapQClXYYttefdDqZ4DpGlBoHeT5qJnJQ47qgZ4yibCwKA2z0OXAe1O70aSRaRd0WUqjehQVOPf2J/fSBAD7ldr2KAwDAiCyZjZHnQZHHIZNtVZFfE3mBYXd5HrSlSOA5u1FssIWzjZF0yJKu1wRXHavJSrZw5w0J30bRVGAwMuEkksEH5DV0Znj26b774rx1CxeN440vwJNO/7j1bpmYKgtTjkCySaD3UP4RRYhUSuvK/YR6/kz9nGkw6eZUJjUPhMSDHSPhCAZO+f+4FavQdkCv04/eRgYRu8wxEehtiK110DW9U9L4uUakfrGDEXg39cURlgGRFnptqJzpVjXCiP9fFekVFfvL7hzbF8vuJEU4hD7NkSnBy+sTDmZHcJOPqtoJCNTfxt6n+AyPOTGmTXOLnPXZjV9AD6hChwd+N5b+NZIMJY3xn9CN9nkgkhUUc1ZGvKLBOGPl6828XIqdcInrUXEyZgQAWqf0k0WPRf2f/Hxdn+uDyBW2KyxdoGs+qPypjyJjPn6Uvpun9F0Pa3iY+E5UcSfM8hOa2Hx24uUIWjbFHJ78NskO3VZhb2U2F9Zl/xCZsBi9kGdGBK1MMTNJQ41JtHuN/+eb1OnweVlqKaHvTFpRONxNgdMhMJKz4rbMA78hgOn9OcEtMBlaV1ZxmdA0FEZiM7WdtOqE5fKpT4M/i6KEFJg6TZS/kuOKkWB2uteu6CPvZVLeZcWEreQDau024q2BvDnbJ7ge1EZEi1a6dEaI30IPjGWMt5zmX6b1R8BfvL4Q4DFsiASJDWq5E5Y865qP08FbXPsM7w0akckwZwV0FjpLUw9ffJdrKleCJeIzNcCSDeGJg43uUGxWJ6pT0YlHMEf0GUyVjnhXlNjtjF7/HOaBS1Y2aNvqoAvddGhWPvuVULWucsKbzeg/ZurMJmPuGzIZMgkFjuDAvMcIR7r5GGMt/ulhU5sGCxbQFvQ9V+a6GSHzB1v16GCWIuRFm2YmK3V0Bf7OX7Ig4bompPlgq1lFa6GZLfZnk0c2hev3BvhVCNRwE37K74L4IxvVBvHr2v0KcvykLPaN6LFEIYP3HCIbgQJUAEHiJ5lPB4D+/6+Sx2FhcsTv5jSWTbqY/oezM2TiNGY74k+uxJauKNNNfArk/t+H1wn6aWY0eZy9z2Gw4XVq6t5bS5YM278WpiubkLndE3fspHwchR6cduein3p2y5P9FyLcOPdNLFpr2Z6oGhaEppeYnMycnoqpETNCbIP9E1LmcTph3UhrtQMgEDX5fr2QA6fNqwcNM9MERqoazjiEWtLpX7HRvJXvii4ix2Oi0JQAcxa/oiCNrCQfHs/lrC2z9Bxkd/46kzpjMquEd8zxXNSKUxG9nrgFQHVSkOd3+9mBZSr1IeHvbM5S5wUmzL7M5EN2nrddn+tm9zFdPo8GAW+XGTRLR5rbVQ1XsXh6v3toTWhVNOQyxMpMjFFjUGx9+gWOqUq/RXNDRISMfSFHHCqYgQDACZeOe/UImfWWRNVosHm0kBIFSBaqlDb3jpXCK4 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 47e1e1be-5606-4a10-e9a2-08dd4d0e2f2e X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Feb 2025 15:42:27.4232 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: O/fWrmggcDwZdEVLzkBY8y9r8/ewd/G4KM0zljlgY6SC0U4YsfG8dcD9OaolWriP X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB8339 X-Rspam-User: X-Rspamd-Queue-Id: 73A671A000B X-Rspamd-Server: rspam07 X-Stat-Signature: pqhtx36w6u88g6pjc88m9o3f57t64d3j X-HE-Tag: 1739547926-902486 X-HE-Meta: U2FsdGVkX1+tHjyYq/20ytNhbqKATeBbM56Hak5joZ4XxI+N5PGDfgDz+pUc0RCr2uUQEUkLgWMhdSXEd03F/C7wANGW+ap9iFa80CRWyURDtRM6hdCgPLmBD0bZKQUyW6Yic7abh9KbpiKE1EGX/DLzctcN2SKsDYCaq36AL1HVDeorNUT94Fi3cJ1aUwZvDxwdqJdY6s41c30Nguv83K/6eoDs7HMLCYnM0bET/f0brfankZSO+E2XLzopPoCMXEkOI4CqkPUVjPzPFGSELoztxyUncrgXoU5dNBqVTMAxdnjpxW/C9sF0MBftfCZ7JdVJ3sqQlGEG4pHSneT6oBhe1eoGrFhMyogfFLjEK6J4PA+mb1s7iCLKkeegXL+Zl9SwbiGlhps2EUEzma17PICnE/LTgzetqET5ypfgOCFSs6QF2h5Ao1PSFNCH7bGXhWjCX2n3wXAFfTgAdKiknaE1HANzdME4iHeqaou4gVGj7C7wOc+Gh9NdXhfTp6qVLgOKqIC+/J8xOv6C1KBTLyadRpI1LHKmekBcqOWYMO0WfSpDUsGoUQNQ5ws6cVFh09iTsBAodLlPpr6O9fTKd1cwqsHYhd8Bqd84psqR9KObkb8CmnRtiQNl0cazEvPXUCc+lCoJtZVu9eT7ptQ6mglzAtmLIPnMG084eFV/ZxaXlsNJbLvsc4M9tnh535ufJfiBauQaL/3KoOMx203Cf83xwI+SsDX17TXviwN8Y8romhqoYx9/VMapilHrq3ggz8aXZkBKAOKias+iiRdfpFTkBvMsoeH0HkhgQlZAOD9pBu/1j5puBprWttG7lTu7MnibESU8c1WPrwSQgb5BGa/M1zYA94Q39nqm+zZuMWEQ4hppPmsY3vRjsXtlRwphPYGvp1hsoIHrVOZ1/12f97GTuOhBzUqsgWLYnOfuY4TkQ9N1WADjBKG5MzIME2ADx2S98rPFoCdoJ1GaU6A EJc0iRzA 0eZ/iCYvQgDDZLhgLk6Q6NEuzuCk/LMLsYGDNzBqW1FeoiPsoHNGtkuL2rMf11XGnF4n9FRnfYrAPbF8xTCL3ZUTw1kGWV+iZRqMpZzU1bUuRDcRyJC2GXGOWDsbgSmogV/x4VlK69ZTg7HN5a6v+2qKW0Iwabj9T8V4vl27TRLTj3nSAOvczVvuHhrSUiH45jVpIL8kPkRjPLsF/l03pn3mKY98pJ3WUirbU3ZHpsSoUR09UtuqJJWM2logx3rHVZqlTgaB50SDJ2bqTcJls/keOGvUcHTqDiEtaA7eJTYxgi58Wc8fuTFh3fKLe+o0g2hPpQ7lzOec7UJUBU6Qf/rpEABmueePfvqeN5tSLQ7hMU/hhfoM7TUmXVwPDEEBe/5z22T1dWG4ikxWbjGGgNeDYqRC1l8Bqtirx 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: Since migratetype is no longer overwritten during pageblock isolation, undoing pageblock isolation no longer needs which migratetype to restore. Signed-off-by: Zi Yan Acked-by: David Hildenbrand --- include/linux/page-isolation.h | 3 +-- mm/memory_hotplug.c | 4 ++-- mm/page_alloc.c | 2 +- mm/page_isolation.c | 9 +++------ 4 files changed, 7 insertions(+), 11 deletions(-) diff --git a/include/linux/page-isolation.h b/include/linux/page-isolation.h index 28c56f423e34..b8b44d3aacd4 100644 --- a/include/linux/page-isolation.h +++ b/include/linux/page-isolation.h @@ -33,8 +33,7 @@ bool pageblock_unisolate_and_move_free_pages(struct zone *zone, struct page *pag int start_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn, int migratetype, int flags); -void undo_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn, - int migratetype); +void undo_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn); int test_pages_isolated(unsigned long start_pfn, unsigned long end_pfn, int isol_flags); diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index e3655f07dd6e..fb2216f267d8 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -1229,7 +1229,7 @@ int online_pages(unsigned long pfn, unsigned long nr_pages, build_all_zonelists(NULL); /* Basic onlining is complete, allow allocation of onlined pages. */ - undo_isolate_page_range(pfn, pfn + nr_pages, MIGRATE_MOVABLE); + undo_isolate_page_range(pfn, pfn + nr_pages); /* * Freshly onlined pages aren't shuffled (e.g., all pages are placed to @@ -2128,7 +2128,7 @@ int offline_pages(unsigned long start_pfn, unsigned long nr_pages, failed_removal_isolated: /* pushback to free area */ - undo_isolate_page_range(start_pfn, end_pfn, MIGRATE_MOVABLE); + undo_isolate_page_range(start_pfn, end_pfn); memory_notify(MEM_CANCEL_OFFLINE, &arg); failed_removal_pcplists_disabled: lru_cache_enable(); diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 9bba5b1c4f1d..4b251aa35b73 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -6673,7 +6673,7 @@ int alloc_contig_range_noprof(unsigned long start, unsigned long end, start, end, outer_start, outer_end); } done: - undo_isolate_page_range(start, end, migratetype); + undo_isolate_page_range(start, end); return ret; } EXPORT_SYMBOL(alloc_contig_range_noprof); diff --git a/mm/page_isolation.c b/mm/page_isolation.c index 01d9a4eace7a..095cb2152fae 100644 --- a/mm/page_isolation.c +++ b/mm/page_isolation.c @@ -515,7 +515,7 @@ int start_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn, page = __first_valid_page(pfn, pageblock_nr_pages); if (page && set_migratetype_isolate(page, migratetype, flags, start_pfn, end_pfn)) { - undo_isolate_page_range(isolate_start, pfn, migratetype); + undo_isolate_page_range(isolate_start, pfn); unset_migratetype_isolate( pfn_to_page(isolate_end - pageblock_nr_pages)); return -EBUSY; @@ -528,13 +528,10 @@ int start_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn, * undo_isolate_page_range - undo effects of start_isolate_page_range() * @start_pfn: The first PFN of the isolated range * @end_pfn: The last PFN of the isolated range - * @migratetype: New migrate type to set on the range * - * This finds every MIGRATE_ISOLATE page block in the given range - * and switches it to @migratetype. + * This finds and unsets every MIGRATE_ISOLATE page block in the given range */ -void undo_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn, - int migratetype) +void undo_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn) { unsigned long pfn; struct page *page; From patchwork Fri Feb 14 15:42:15 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zi Yan X-Patchwork-Id: 13975152 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 69F99C02198 for ; Fri, 14 Feb 2025 15:44:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 00735280003; Fri, 14 Feb 2025 10:44:15 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id EF9A86B0092; Fri, 14 Feb 2025 10:44:14 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CFE9D280003; Fri, 14 Feb 2025 10:44:14 -0500 (EST) 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 AE62A6B008A for ; Fri, 14 Feb 2025 10:44:14 -0500 (EST) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 35D8CA0157 for ; Fri, 14 Feb 2025 15:44:14 +0000 (UTC) X-FDA: 83118971628.23.1BEABB4 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2047.outbound.protection.outlook.com [40.107.94.47]) by imf07.hostedemail.com (Postfix) with ESMTP id 590A040010 for ; Fri, 14 Feb 2025 15:44:11 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=ci7u2Hfi; spf=pass (imf07.hostedemail.com: domain of ziy@nvidia.com designates 40.107.94.47 as permitted sender) smtp.mailfrom=ziy@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1739547851; a=rsa-sha256; cv=pass; b=f0T8V/TA/O8XclIjHWVUlYRoK1e7BDN9cd1cmkk6LiP26Z3YdFf3VV7F1rNRZGAGdj1idI rr9NAbIJJV/iEVhNaucyA/ubJ20f0yr1VjF1AAAVbazecrmoOj+wO977JYuNASU53DCDhe Sxzsfr+c/1f2o7vdx86UlTYl3X8g8lA= ARC-Authentication-Results: i=2; imf07.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=ci7u2Hfi; spf=pass (imf07.hostedemail.com: domain of ziy@nvidia.com designates 40.107.94.47 as permitted sender) smtp.mailfrom=ziy@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1739547851; 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:dkim-signature; bh=ntTrZU1dkPj7e+9hvcpJN+E38Z6MlqNiYO8Xs1Kokdo=; b=4s3TOxVBkdam4cTqxA+xBE4KkABKu//iITTYh10a2exkfjkpxT94DG8id1+L5NAFFCXvCr wQg6cgpzGEGhl0dVHEWGTdugaBMqo3bQ0K6SU8mv+LKqGqt+W+wtS3M1lK+g3FEovUbxoz Dzfvkrt7EXEWH/o0mVMKmUVyxX+Okws= ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=F219jN1nSLrc1ewgQmsWreXnS0qN07dXRH19/5kh3heFFKcHHZoXLOU9dIUn8c1716TgZ4zO+hmF1PZrmit4C/8N4Wef6x2jhYQBIVDGhumSMxDDGTyCCj1+3RnVSOHF6T93RiREU3E9LZzCbQGkfzd8keAFFj2f4Zx67/A9ZNMxoTkulrPzRnStZvGSskQmWBNoQg5//DSpG5z4TXKAc/MkLqar4LwZV9wv6eyIoy1YmcvkAhYjmEVD72RvPzWqQa6t7vwXxWl12mmmOaSFrSf/bWoKZnPum2PIv8DmIUfWi7sZMw/i9POjR2e5n5N4NqatQF9EliVCRDGBwtHWog== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ntTrZU1dkPj7e+9hvcpJN+E38Z6MlqNiYO8Xs1Kokdo=; b=ow1DoD1FFbHMtagz00BMUYfOLOi3uItDcVFXjJsidRllqdNM3O9LSLtTM+2Y49VCbUr6u+0SbkJ4/oe32nnztTC23PtbS/HHxvoRS8hmGswAQzxqbjHnSpgnAzAxpL4EQbTdbuhQencXisrV5zZhO0mymzj5mvmyaTipb+e0ibKJFtK4vvnmY//vc0DAU/PnEOCVlS+DYQbTacUIs44msoEU2WpxqXuAE51m1rRS3Ns2EetJcyQ3G8oe60I37jbZS79b6AQpUsHIUjvGTnATrLwuXcCWsQ+6TcDepHk/7Rz7EhwYYvvjyRTSu3h6GW2Nd37C+pS9Nk+6DY4jszWJgA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ntTrZU1dkPj7e+9hvcpJN+E38Z6MlqNiYO8Xs1Kokdo=; b=ci7u2HfiNm2fxTyUfcpBLspb4NMwuFfn53FmMoOa3cVp9Wur2WB+k91jjAKhcAIFRp+TIYm90NOcAVIJeMPFuisz9ocVquRxUTYSzgAcw+7oaZkF7ksteoHMSVhTu5ro2C0Lrc/wkpVlXLttrapKeiiFKxr4cr3X9MAvvpVSgVMhyLYuoNWssP6ekaXbBk8gGEUyWM0kxjhkZACfW0vV0oUX9g8vpoxTtxo5XdDajp+AxZFqgw+QM0GeecAQNp3Nu0wvPxucb7R0bqjv7w7wED2GXgjD75YvHQy5HW1wq1viQVMAJVP00k3ZX5QS+5tguC+EWItVYsTbqT3eOdo7xw== Received: from DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) by CY8PR12MB8339.namprd12.prod.outlook.com (2603:10b6:930:7e::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8445.14; Fri, 14 Feb 2025 15:42:28 +0000 Received: from DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a]) by DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a%5]) with mapi id 15.20.8445.016; Fri, 14 Feb 2025 15:42:28 +0000 From: Zi Yan To: linux-mm@kvack.org, David Hildenbrand Cc: Oscar Salvador , Vlastimil Babka , Johannes Weiner , Baolin Wang , "Kirill A. Shutemov" , Mel Gorman , linux-kernel@vger.kernel.org, Zi Yan Subject: [PATCH v2 4/4] mm/page_isolation: remove migratetype parameter from more functions. Date: Fri, 14 Feb 2025 10:42:15 -0500 Message-ID: <20250214154215.717537-5-ziy@nvidia.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250214154215.717537-1-ziy@nvidia.com> References: <20250214154215.717537-1-ziy@nvidia.com> X-ClientProxiedBy: BN9P220CA0011.NAMP220.PROD.OUTLOOK.COM (2603:10b6:408:13e::16) To DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB9473:EE_|CY8PR12MB8339:EE_ X-MS-Office365-Filtering-Correlation-Id: 78ddc0d3-dbc7-415b-9a3f-08dd4d0e3003 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: yKiLafgzEcxGasXX4WJ+T58N+Vkq1lE/8UsAx/yRrlTL3dl4e1FnTOmIX3NtpO5DbrkBls1yDKhahmdZllkP4+RhFU1abYTqx30hOGhUeYORA7h12cqWCmIyYKeZ0zkIHlSUOW4Df9aMB/sDMiY4yQPvCl0F/CwAshegbB0mmcF5UfoersUe64TxE2NjBkC8CcvWL/9rD/czkt2Pslc6rK5+eAOYL0C14otlnjERpN/oDs0ypRQgppqgzWlja63ibMV0TRjpDt/hITcD+AmOHUFoZ+bJ0FRC3oRlOWYiQZar3U4ZqACq8c15b83cRVZhDJ4i1Lyv/h3kBrQN9bWhovE2tN6CFDTDM+1r9L0/M4R0FsxaUZyW9maEcxzaXmRfEWQQOEU2bP/tZ388Sgj0rLACuzSXvVwFbOrCBBWd6CrtBvZEZFHRZcT67Oe+v/1XocY6GfehvdRm9Z+9bg1sUEFkAnlho1FSjhfIe5FzSWNPfIF86474h5enYI86yECDRMafqJen2V1L0nH91af2zemTKrG11x6Agl2cSOvxfTq4oadML7k7seBWsEchfZjHC4lNhgZoBbaVrQDnvEREtglCNbmf174H8nYCR8609K8Q13CqAmEHJBV9K5yLBYavHU9NhzT94NQzeHW0XcAPhzY8VQvCTUO5GZoHDgosiSCq88XcVEl0IbcKAeNFrBNxDm++/PW+ongBqTSQnx5fmmrVksKIwMuXvE93qOByb7WFNwt/XlAq96bPvXova1Y1Q242SRrwa+HRfroSSeCvhRmERsv7vqljmVSIqp05U28uHDn8Qmx0atMcF3+8wV/KUsy1msO2Ng5im03tHIqVDVRMHC23iHpbmMTJjzzEeP4CJPaeHRH5HZ28mxjZ54sXZ0MMC+13anoUM+o+9dZjbj9Uo87aTpNF4AqGGWtBgB/wZpscSOwmd4tpPwHxl0CSG9m1Etl9mcvhmPTweSTSBLlF0nLv9MKTt9JmGhj+wbfKazEqTga/os4za6hNBN1PntAcItESMgwcVt7YdzOBtq4AIXBD3tvSW79TxQiV23kdwrtnZOe8i8gXEF/D7CwtSxPnpPuFcMQbHqQNCpPtYPQnnrZ8hZQtJZTbHotj954w0pC+o3uw2OSijBGgeoLQwLFAkyk/S7IAdq08+2+za0hL2K/6+ZtgDVLaPPGYC4SvaxJXLmgi2Z69zHk9iUETFSRt6KizAPNHbanWcMgO+r3vzHr6miBJfWfe2gSWo4WQ90FI5CepQUlMEhwkUxjWVuS5T70cd7ghEnRF664hWeEvzb99ooaCAb6n2/hkT7Of3CXRWKyx9C9ZTM5GOluEn7mX/BgeLygKLGKK1ladu2sb6WNICG6lcQBVQIdXWFxNF3es8V+tCNL2U1CLqrt8 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR12MB9473.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 83bCZOOujte+2mhOpmxOhjB2UFeIGjxK4z1r2PtjFBIromFRQssIdZn4YpEtqKEPwTw4DHHRHy/d2n29feDVlegCM9j0Q1pbZEqAcx5uAuLWDIrYQBAqQaSk/vKJbJbuMDmkXQgVc0Y7fqYzVRz0y4FJIP3zXjTGtQl8YgVuKGcvLPlPyuLd62558SEzLfXtz+j2DuL68vAR6V/ESq7wy+i3zAE98zRIjDka+0LtQY3B1z9gqXsmz/URC3l8elrkHFwhysreC1c4zFgUuyEeugibK/4ueDrsWVGdy9zQ6TUtV7RDnSvWzQtnBtmRgcKeKpA4gIlsUN0O1jKgB935LDfptuH/jNOX/dzGktp/0Y5dRCzpEskp1EH2b56+5akm9TjU6g99cfZRkKDkLh0RIQDbAuh9a8srYpxhjO+9egpLG0Hlkl5uuAjWRRjey97qANQDI2C4XvXafxipS4kRnH0zGA2xf+xk/W2a+j6+ZzPoVP5bEglisoMKSdXCohC+4pqN5YUqIV00IAGh+BC/FnQnkz7y848v0gNe0RvJE3Bs0MmFrKRdj/Jwlhwpv6h//uUqe5z9scpBEwki9NI9mru20x7LGCY0c0ZeCXEwoUwAtUblh89Q/cpjZy4heQlNMZVmFGaFQZjjpe+N8w0qAU8BmC66YXksSo9t4v3vcXmJzyg0TAIWvMIda/pg3YvqIgvoqrTKDkz43oJiZnWJqnNCxCv7phF7uF1gPkKGcn+O1o4TGSSAR/c0NNE2geR3o28TrUE0GcpkAUuLa4Q215gn772OxrCIcQMppApPKSaVs5WmXUcc8DOW7TU0ulzCMilJwmbfaJQZUloTBwJVelTaICg1EvWeXEXRgz7gh5PtHBgSHed4+suSHsBdxxY9vam9hml/E8z003iXPBJakkh56X6EnYkDuIJnQtjr34j4iGUvR8/xmaygWJfA+krovk2A23VzlNMqpNZuq2J2N1IPIBSM8V3556rcURSWb+qpm80XvXg6FCeZXnm/uxyr6VHSuE5j2+6jBlOdhXyUH1VOfCl87DW4P+STuyvLrUeFRdAcynFXPhNABeVARPB+mv5nRoVQzuoC2HHx/Yz42M5oJrKsu9ux4XjUhedvHi7VS5s30ExxY+/JRigRholeE6kbqSGjmdAQDJEdI/UBjM1GIvg9cj0A3+Xc12vhZh7QAiwT5q9Tls2jLFAbBICwizLCVim+sLF0xd7n2wCuLc+P6/UrHP8OWuB8o1rAflN6GJilRwTl0LlqcM5bfooGfQfDfNKLz+QzpTplHD8MBU9JWrOpplF3Jg8erUfWSRCuLazV1OSubFE2Rmq0WxOzUNDjrYCbWpNQ8NKU+aVsUOpfkhp58rel1KEcD23opXai2gPFly6rMsEMleKjhUih49ig5V667THV1Gex/Mb3p9pE4LwywXjWfpzjwD1u1FomJ5/3uqA/6XNmGReH5jy2UAha+kYUt+gHLxTLb7Ti9tNPm+JnD3lA6deuJlsFQM7FeDDApFqq6ajO1bwMneoMZ0TLnuNJ6ZVJkH5k604bcVt/deTpiDVO6oAd56nD2CeHMT3WYyoJcj/XwnZkXoha X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 78ddc0d3-dbc7-415b-9a3f-08dd4d0e3003 X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Feb 2025 15:42:28.8236 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: hGNxs7rnmp4Sv+oUppsNiziBhZjeVp+CAmRh0pVL/LDCn0yEJFfHlCJlJsja8EVA X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB8339 X-Stat-Signature: wdibg8sjz4mpgq8awhggznb9nh81g9y9 X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 590A040010 X-Rspam-User: X-HE-Tag: 1739547851-432019 X-HE-Meta: U2FsdGVkX1+z+7OoLazUPJUfRlRJn1C16i/3MpBOhEzF5SZvCRUZ9NF9WoCI4BdeTclPPCpVLqDfc2dDMxRkUllAhYcKjk7Lol55jvGwIhr1VUMeU7BEB9wwnxGTtlPfXEBKz34EXGP2UGGsnKSd7nOKO+/5ktTjTDx8Q4GLxy1wcCKeOSzbUkqK75OHRoSnxA3dsXy95WfOSClz/uUJGxOd0olnkzU7LLzVTMJhzTXjh/+Awjv1WrppSSqojDaj1nPrxdSC8UsCNtxXl5jyoKXEWYh/yg+QTnP/wOj2ZNXgVPeNpnUUWTIV6euMj6vAsvt+d/1KBkcOkjkqPlolq7xk6hQhJQnx117fThXy4usl6ekKIIFdaVBik6okOfp5iEjjPtn4XSpGZslDHYwWvD/U27o/3gqoRm1LYdaU+bfyClFpBMl6lIuS4Tq+jNIVdm3HfirDbj0cJS2J/Dgkt/aD8K1ygUBa2qCgY9B3S/AF9a5xZwQLlASOdNDk+JNaxGmiOMLzqOnLB3mnTAsxOuRKM7i6rykrmQ8PnnHpwl5etY4StkBMpnbdWiY9xu3+l1y/dgT8qbc19OIMDDnGM7x6ZsoalBnDDjoX8JdbFFUzu1uzxfmDMcremQz7Unbe7JeWWqBOAuZgiRmAU2Ll4FXKhTGFLV/FlTwj9i8R9SUEuopFmNkomQ69zGpjmCoHmfqGld/VvS4pR5fSCUjG0F8SJhhRiL+cE239grH5cU6AciwKIK8gb6QmkQ+tt0soBeQbdeUdXI27YyxdRqKPFWWFdVtkF6gp29t/rmWPf2+8tMHn+qqn+hDe6pVDeEbdYnS0vUVLF5gnjjMghOORro/dif9bxQJgMaE4ugzRIgHmXbPb2nDxTlloy031RMER05Y9oNMvkAREBHwkXWkN/KZt/VgqFjlOHWqB2Yu/+Mrdql9NnLhdfhRmXoz97cqoa8sj/ptVmUqSi6JMdRK v3e2FHA6 LZ9oOsjL3SXA5tPnrSjc6YqfkEv6U1eDe33/4iP3cD9OHyAutFMjZisae96HE/xLbywN8bxmcxvFrc/ZDgZVyFDL4VKA27/Rw7TvED20S0sQxENzvt/mJZJ0TCiX2DTyUKBlNEnz7lWz5d2o2kex0y3jpbyWNEOZ2UfZzZlILMZnN7bgPAelC3OqXYtO7/hgPoT6weSg44ghEecH3lLhJYhuPU6y7FdryYRzTGJHuxtMtbIQtzY1ASs1SrAin5hMamKc48mRmQ5BKpv06WnXhy6jtaU+t3adX13bIS5aSyBLb83YcHw7Vd0uF9ASNQHDY9pgaO3h2MHJwjcZcTGBcjpD6eyIpdQT1UF+JK/iqTJkQWst8poA7MnWw/ATLPknQNPhKBqxILiVDC0s= 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: migratetype is no longer overwritten during pageblock isolation, start_isolate_page_range(), has_unmovable_pages(), and set_migratetype_isolate() no longer need which migratetype to restore during isolation failure. For has_unmoable_pages(), it needs to know if the isolation is for CMA allocation, so adding CMA_ALLOCATION to isolation flags to provide the information. alloc_contig_range() no longer needs migratetype. Replace it with a newly defined acr_flags_t to tell if an allocation is for CMA. So does __alloc_contig_migrate_range(). Signed-off-by: Zi Yan --- drivers/virtio/virtio_mem.c | 3 +-- include/linux/gfp.h | 6 +++++- include/linux/page-isolation.h | 15 +++++++++++--- include/trace/events/kmem.h | 14 +++++++------ mm/cma.c | 2 +- mm/memory_hotplug.c | 1 - mm/page_alloc.c | 33 +++++++++++++++---------------- mm/page_isolation.c | 36 ++++++++++++---------------------- 8 files changed, 56 insertions(+), 54 deletions(-) diff --git a/drivers/virtio/virtio_mem.c b/drivers/virtio/virtio_mem.c index 8a294b9cbcf6..160c681028d2 100644 --- a/drivers/virtio/virtio_mem.c +++ b/drivers/virtio/virtio_mem.c @@ -1243,8 +1243,7 @@ static int virtio_mem_fake_offline(struct virtio_mem *vm, unsigned long pfn, if (atomic_read(&vm->config_changed)) return -EAGAIN; - rc = alloc_contig_range(pfn, pfn + nr_pages, MIGRATE_MOVABLE, - GFP_KERNEL); + rc = alloc_contig_range(pfn, pfn + nr_pages, 0, GFP_KERNEL); if (rc == -ENOMEM) /* whoops, out of memory */ return rc; diff --git a/include/linux/gfp.h b/include/linux/gfp.h index 6bb1a5a7a4ae..ff1965561d48 100644 --- a/include/linux/gfp.h +++ b/include/linux/gfp.h @@ -400,9 +400,13 @@ static inline bool gfp_compaction_allowed(gfp_t gfp_mask) extern gfp_t vma_thp_gfp_mask(struct vm_area_struct *vma); #ifdef CONFIG_CONTIG_ALLOC + +typedef unsigned int __bitwise acr_flags_t; +#define ACR_CMA ((__force acr_flags_t)BIT(0)) // allocate for CMA + /* The below functions must be run on a range from a single zone. */ extern int alloc_contig_range_noprof(unsigned long start, unsigned long end, - unsigned migratetype, gfp_t gfp_mask); + acr_flags_t alloc_flags, gfp_t gfp_mask); #define alloc_contig_range(...) alloc_hooks(alloc_contig_range_noprof(__VA_ARGS__)) extern struct page *alloc_contig_pages_noprof(unsigned long nr_pages, gfp_t gfp_mask, diff --git a/include/linux/page-isolation.h b/include/linux/page-isolation.h index b8b44d3aacd4..709a807202e9 100644 --- a/include/linux/page-isolation.h +++ b/include/linux/page-isolation.h @@ -22,8 +22,17 @@ static inline bool is_migrate_isolate(int migratetype) } #endif -#define MEMORY_OFFLINE 0x1 -#define REPORT_FAILURE 0x2 +/* + * Isolation flags: + * MEMORY_OFFLINE - isolate to offline (!allocate) memory e.g., skip over + * PageHWPoison() pages and PageOffline() pages. + * REPORT_FAILURE - report details about the failure to isolate the range + * CMA_ALLOCATION - isolate for CMA allocations + */ +typedef unsigned int __bitwise isol_flags_t; +#define MEMORY_OFFLINE ((__force isol_flags_t)BIT(0)) +#define REPORT_FAILURE ((__force isol_flags_t)BIT(1)) +#define CMA_ALLOCATION ((__force isol_flags_t)BIT(2)) void set_pageblock_migratetype(struct page *page, int migratetype); @@ -31,7 +40,7 @@ bool pageblock_isolate_and_move_free_pages(struct zone *zone, struct page *page) bool pageblock_unisolate_and_move_free_pages(struct zone *zone, struct page *page); int start_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn, - int migratetype, int flags); + isol_flags_t flags); void undo_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn); diff --git a/include/trace/events/kmem.h b/include/trace/events/kmem.h index b37eb0a7060f..a29471d33566 100644 --- a/include/trace/events/kmem.h +++ b/include/trace/events/kmem.h @@ -304,6 +304,7 @@ TRACE_EVENT(mm_page_alloc_extfrag, __entry->change_ownership) ); +#ifdef CONFIG_CONTIG_ALLOC TRACE_EVENT(mm_alloc_contig_migrate_range_info, TP_PROTO(unsigned long start, @@ -311,9 +312,9 @@ TRACE_EVENT(mm_alloc_contig_migrate_range_info, unsigned long nr_migrated, unsigned long nr_reclaimed, unsigned long nr_mapped, - int migratetype), + acr_flags_t alloc_flags), - TP_ARGS(start, end, nr_migrated, nr_reclaimed, nr_mapped, migratetype), + TP_ARGS(start, end, nr_migrated, nr_reclaimed, nr_mapped, alloc_flags), TP_STRUCT__entry( __field(unsigned long, start) @@ -321,7 +322,7 @@ TRACE_EVENT(mm_alloc_contig_migrate_range_info, __field(unsigned long, nr_migrated) __field(unsigned long, nr_reclaimed) __field(unsigned long, nr_mapped) - __field(int, migratetype) + __field(acr_flags_t, alloc_flags) ), TP_fast_assign( @@ -330,17 +331,18 @@ TRACE_EVENT(mm_alloc_contig_migrate_range_info, __entry->nr_migrated = nr_migrated; __entry->nr_reclaimed = nr_reclaimed; __entry->nr_mapped = nr_mapped; - __entry->migratetype = migratetype; + __entry->alloc_flags = alloc_flags; ), - TP_printk("start=0x%lx end=0x%lx migratetype=%d nr_migrated=%lu nr_reclaimed=%lu nr_mapped=%lu", + TP_printk("start=0x%lx end=0x%lx alloc_flags=%d nr_migrated=%lu nr_reclaimed=%lu nr_mapped=%lu", __entry->start, __entry->end, - __entry->migratetype, + __entry->alloc_flags, __entry->nr_migrated, __entry->nr_reclaimed, __entry->nr_mapped) ); +#endif /* * Required for uniquely and securely identifying mm in rss_stat tracepoint. diff --git a/mm/cma.c b/mm/cma.c index de5bc0c81fc2..e4ad8a5f8bde 100644 --- a/mm/cma.c +++ b/mm/cma.c @@ -461,7 +461,7 @@ static struct page *__cma_alloc(struct cma *cma, unsigned long count, pfn = cma->base_pfn + (bitmap_no << cma->order_per_bit); mutex_lock(&cma_mutex); - ret = alloc_contig_range(pfn, pfn + count, MIGRATE_CMA, gfp); + ret = alloc_contig_range(pfn, pfn + count, ACR_CMA, gfp); mutex_unlock(&cma_mutex); if (ret == 0) { page = pfn_to_page(pfn); diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index fb2216f267d8..b69fb43c5ac7 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -2018,7 +2018,6 @@ int offline_pages(unsigned long start_pfn, unsigned long nr_pages, /* set above range as isolated */ ret = start_isolate_page_range(start_pfn, end_pfn, - MIGRATE_MOVABLE, MEMORY_OFFLINE | REPORT_FAILURE); if (ret) { reason = "failure to isolate range"; diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 4b251aa35b73..3a9328f7b2e7 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -1913,14 +1913,15 @@ static bool __move_freepages_for_page_isolation(struct zone *zone, return true; } move: + /* use MIGRATETYPE_NO_ISO_MASK to get the non-isolate migratetype */ if (isolate_pageblock) { - from_mt = __get_pfnblock_flags_mask(page, page_to_pfn(page), - MIGRATETYPE_MASK); + from_mt = get_pfnblock_flags_mask(page, page_to_pfn(page), + MIGRATETYPE_NO_ISO_MASK); to_mt = MIGRATE_ISOLATE; } else { from_mt = MIGRATE_ISOLATE; - to_mt = __get_pfnblock_flags_mask(page, page_to_pfn(page), - MIGRATETYPE_MASK); + to_mt = get_pfnblock_flags_mask(page, page_to_pfn(page), + MIGRATETYPE_NO_ISO_MASK); } __move_freepages_block(zone, start_pfn, from_mt, to_mt); @@ -6382,11 +6383,12 @@ static void alloc_contig_dump_pages(struct list_head *page_list) /* * [start, end) must belong to a single zone. - * @migratetype: using migratetype to filter the type of migration in + * @alloc_flags: using acr_flags_t to filter the type of migration in * trace_mm_alloc_contig_migrate_range_info. */ -static int __alloc_contig_migrate_range(struct compact_control *cc, - unsigned long start, unsigned long end, int migratetype) +int __alloc_contig_migrate_range(struct compact_control *cc, + unsigned long start, unsigned long end, + acr_flags_t alloc_flags) { /* This function is based on compact_zone() from compaction.c. */ unsigned int nr_reclaimed; @@ -6458,7 +6460,7 @@ static int __alloc_contig_migrate_range(struct compact_control *cc, putback_movable_pages(&cc->migratepages); } - trace_mm_alloc_contig_migrate_range_info(start, end, migratetype, + trace_mm_alloc_contig_migrate_range_info(start, end, alloc_flags, total_migrated, total_reclaimed, total_mapped); @@ -6529,10 +6531,7 @@ static int __alloc_contig_verify_gfp_mask(gfp_t gfp_mask, gfp_t *gfp_cc_mask) * alloc_contig_range() -- tries to allocate given range of pages * @start: start PFN to allocate * @end: one-past-the-last PFN to allocate - * @migratetype: migratetype of the underlying pageblocks (either - * #MIGRATE_MOVABLE or #MIGRATE_CMA). All pageblocks - * in range must have the same migratetype and it must - * be either of the two. + * @alloc_flags: allocation information * @gfp_mask: GFP mask. Node/zone/placement hints are ignored; only some * action and reclaim modifiers are supported. Reclaim modifiers * control allocation behavior during compaction/migration/reclaim. @@ -6549,7 +6548,7 @@ static int __alloc_contig_verify_gfp_mask(gfp_t gfp_mask, gfp_t *gfp_cc_mask) * need to be freed with free_contig_range(). */ int alloc_contig_range_noprof(unsigned long start, unsigned long end, - unsigned migratetype, gfp_t gfp_mask) + acr_flags_t alloc_flags, gfp_t gfp_mask) { unsigned long outer_start, outer_end; int ret = 0; @@ -6590,7 +6589,8 @@ int alloc_contig_range_noprof(unsigned long start, unsigned long end, * put back to page allocator so that buddy can use them. */ - ret = start_isolate_page_range(start, end, migratetype, 0); + ret = start_isolate_page_range(start, end, + (alloc_flags & ACR_CMA) ? CMA_ALLOCATION : 0); if (ret) goto done; @@ -6606,7 +6606,7 @@ int alloc_contig_range_noprof(unsigned long start, unsigned long end, * allocated. So, if we fall through be sure to clear ret so that * -EBUSY is not accidentally used or returned to caller. */ - ret = __alloc_contig_migrate_range(&cc, start, end, migratetype); + ret = __alloc_contig_migrate_range(&cc, start, end, alloc_flags); if (ret && ret != -EBUSY) goto done; @@ -6683,8 +6683,7 @@ static int __alloc_contig_pages(unsigned long start_pfn, { unsigned long end_pfn = start_pfn + nr_pages; - return alloc_contig_range_noprof(start_pfn, end_pfn, MIGRATE_MOVABLE, - gfp_mask); + return alloc_contig_range_noprof(start_pfn, end_pfn, 0, gfp_mask); } static bool pfn_range_valid_contig(struct zone *z, unsigned long start_pfn, diff --git a/mm/page_isolation.c b/mm/page_isolation.c index 095cb2152fae..c39b51e96186 100644 --- a/mm/page_isolation.c +++ b/mm/page_isolation.c @@ -31,7 +31,7 @@ * */ static struct page *has_unmovable_pages(unsigned long start_pfn, unsigned long end_pfn, - int migratetype, int flags) + isol_flags_t flags) { struct page *page = pfn_to_page(start_pfn); struct zone *zone = page_zone(page); @@ -46,7 +46,7 @@ static struct page *has_unmovable_pages(unsigned long start_pfn, unsigned long e * isolate CMA pageblocks even when they are not movable in fact * so consider them movable here. */ - if (is_migrate_cma(migratetype)) + if (flags & CMA_ALLOCATION) return NULL; return page; @@ -151,7 +151,7 @@ static struct page *has_unmovable_pages(unsigned long start_pfn, unsigned long e * present in [start_pfn, end_pfn). The pageblock must intersect with * [start_pfn, end_pfn). */ -static int set_migratetype_isolate(struct page *page, int migratetype, int isol_flags, +static int set_migratetype_isolate(struct page *page, isol_flags_t isol_flags, unsigned long start_pfn, unsigned long end_pfn) { struct zone *zone = page_zone(page); @@ -186,7 +186,7 @@ static int set_migratetype_isolate(struct page *page, int migratetype, int isol_ end_pfn); unmovable = has_unmovable_pages(check_unmovable_start, check_unmovable_end, - migratetype, isol_flags); + isol_flags); if (!unmovable) { if (!pageblock_isolate_and_move_free_pages(zone, page)) { spin_unlock_irqrestore(&zone->lock, flags); @@ -296,7 +296,6 @@ __first_valid_page(unsigned long pfn, unsigned long nr_pages) * @isolate_before: isolate the pageblock before the boundary_pfn * @skip_isolation: the flag to skip the pageblock isolation in second * isolate_single_pageblock() - * @migratetype: migrate type to set in error recovery. * * Free and in-use pages can be as big as MAX_PAGE_ORDER and contain more than one * pageblock. When not all pageblocks within a page are isolated at the same @@ -311,8 +310,8 @@ __first_valid_page(unsigned long pfn, unsigned long nr_pages) * either. The function handles this by splitting the free page or migrating * the in-use page then splitting the free page. */ -static int isolate_single_pageblock(unsigned long boundary_pfn, int flags, - bool isolate_before, bool skip_isolation, int migratetype) +static int isolate_single_pageblock(unsigned long boundary_pfn, isol_flags_t flags, + bool isolate_before, bool skip_isolation) { unsigned long start_pfn; unsigned long isolate_pageblock; @@ -338,11 +337,9 @@ static int isolate_single_pageblock(unsigned long boundary_pfn, int flags, zone->zone_start_pfn); if (skip_isolation) { - int mt __maybe_unused = get_pageblock_migratetype(pfn_to_page(isolate_pageblock)); - - VM_BUG_ON(!is_migrate_isolate(mt)); + VM_BUG_ON(!get_pageblock_isolate(pfn_to_page(isolate_pageblock))); } else { - ret = set_migratetype_isolate(pfn_to_page(isolate_pageblock), migratetype, + ret = set_migratetype_isolate(pfn_to_page(isolate_pageblock), flags, isolate_pageblock, isolate_pageblock + pageblock_nr_pages); if (ret) @@ -441,14 +438,7 @@ static int isolate_single_pageblock(unsigned long boundary_pfn, int flags, * start_isolate_page_range() - mark page range MIGRATE_ISOLATE * @start_pfn: The first PFN of the range to be isolated. * @end_pfn: The last PFN of the range to be isolated. - * @migratetype: Migrate type to set in error recovery. - * @flags: The following flags are allowed (they can be combined in - * a bit mask) - * MEMORY_OFFLINE - isolate to offline (!allocate) memory - * e.g., skip over PageHWPoison() pages - * and PageOffline() pages. - * REPORT_FAILURE - report details about the failure to - * isolate the range + * @flags: isolation flags * * Making page-allocation-type to be MIGRATE_ISOLATE means free pages in * the range will never be allocated. Any free pages and pages freed in the @@ -481,7 +471,7 @@ static int isolate_single_pageblock(unsigned long boundary_pfn, int flags, * Return: 0 on success and -EBUSY if any part of range cannot be isolated. */ int start_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn, - int migratetype, int flags) + isol_flags_t flags) { unsigned long pfn; struct page *page; @@ -493,7 +483,7 @@ int start_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn, /* isolate [isolate_start, isolate_start + pageblock_nr_pages) pageblock */ ret = isolate_single_pageblock(isolate_start, flags, false, - skip_isolation, migratetype); + skip_isolation); if (ret) return ret; @@ -502,7 +492,7 @@ int start_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn, /* isolate [isolate_end - pageblock_nr_pages, isolate_end) pageblock */ ret = isolate_single_pageblock(isolate_end, flags, true, - skip_isolation, migratetype); + skip_isolation); if (ret) { unset_migratetype_isolate(pfn_to_page(isolate_start)); return ret; @@ -513,7 +503,7 @@ int start_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn, pfn < isolate_end - pageblock_nr_pages; pfn += pageblock_nr_pages) { page = __first_valid_page(pfn, pageblock_nr_pages); - if (page && set_migratetype_isolate(page, migratetype, flags, + if (page && set_migratetype_isolate(page, flags, start_pfn, end_pfn)) { undo_isolate_page_range(isolate_start, pfn); unset_migratetype_isolate(