From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 496D6C5AD49 for ; Mon, 2 Jun 2025 15:18:24 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C4BC66B02D3; Mon, 2 Jun 2025 11:18:23 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C23BF6B02D5; Mon, 2 Jun 2025 11:18:23 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B12326B02D6; Mon, 2 Jun 2025 11:18:23 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 915676B02D3 for ; Mon, 2 Jun 2025 11:18:23 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 5CF4A16041F for ; Mon, 2 Jun 2025 15:18:23 +0000 (UTC) X-FDA: 83510816886.20.2F0AAB2 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2067.outbound.protection.outlook.com [40.107.244.67]) by imf02.hostedemail.com (Postfix) with ESMTP id CDCBC80010 for ; Mon, 2 Jun 2025 15:18:18 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=MxRNnsOf; spf=pass (imf02.hostedemail.com: domain of ziy@nvidia.com designates 40.107.244.67 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=1748877500; 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=fwi20KomilEllyctI1+J40cz0JDU1TIzlORODcSer18=; b=q1kcbBfmqwU/TMY9JWe3LL6xo32BQolP9JiaLb3lKBQ+6iXG/wu39eRIFVrqhNOifymVsp L2AD8lGH6cRKlnG1rAczycHfcpdfvR3CuzO0mkqpV7AJR9FxlZwvpGo9qko+Z0L18Q5ek0 mnvD9WLBy9x+7nnVc6KeC+V07IXjTXs= ARC-Authentication-Results: i=2; imf02.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=MxRNnsOf; spf=pass (imf02.hostedemail.com: domain of ziy@nvidia.com designates 40.107.244.67 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=1748877500; a=rsa-sha256; cv=pass; b=l2FH7JyQLVeHrSqDHEBeVzmWsIlt4Hrkiez6rJx6bEPSEh/K+c5jQ+aCaK7njeyynz6oWl h/o6HUt78/CWNIVTY++f9iKflXWA31Ow5XeIYrumL1FnOw4iXGB3C9g+XSpj/5ybGXFmdh NpxgBEhEYaEeGdz9yprlVXxvTUCC4BE= ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qZl6R6MzuvrqsZfGA0mQLrNUZ5iy8hUvu8mCA9irhUqLSR20j+1IR2E0FQISJuSUZ//Ot1axNAwOkJ876Y/UQ2ORjfrj2MESvb9fmuwW0yHzdONVss3IrhwNkL/LZFRIuRNwUNsrcDR00PLm9iT/RsvbO4QnRxkSUAXEsMyjKrb/EvmydeFSfFNf7UD/4S3HAEZjEe4YyHyohAY8fMD+AI7NbaeRisJEGlzeL8gK1WmzbiMBSWKRuClyCxR9GWURs9i9LKt/JHJfwiKyTpMUMMz8yTOARigRzPr4Q/I98xYQC3ifUNr897KdDE5lh7VslB6XM/A0nkYVxQzso8qPag== 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=fwi20KomilEllyctI1+J40cz0JDU1TIzlORODcSer18=; b=xUvOTJcGp6eSga3oQOLQDRIybN65u/ECckhkzJTElIKYCzWMJgWQnpJtkH0YHPp9gfDL1KukAXV2zS4jXtBt6KNSl2zo6ILLpZKCTGTqOCnE+ylKsoIRFcmsQrt0COFMvytbKUo3HatQVz94D40EdNIAHPjyfWKQGcuKPhhQAa/8wS1Vr5vHEEhz1oAjYZh+gNRuoKdfDN1ZzEd8ri8cgkTVImqx9Jx2n7b8cf0ebM6ykIzeIU9Os9qQiXiNAkwvRmq2uKlUt2qYxZ7UlmqDV0B9CZvB4V2ahcp60YD5bt8K2xseMMzJGhStcWO831GDNJlbuu8EZ/hySajWA+QjOA== 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=fwi20KomilEllyctI1+J40cz0JDU1TIzlORODcSer18=; b=MxRNnsOfgGcjXhgtZ2HG+85PPFbc3ehTOijuPBBT/A435gT0qSYRn3oxhqx0x765GYMv6z0Ywezt7y+yPPzXOt6rqbmKBGAgMFwvldaRUAOuyQbAsmSQUkpIcnJvqwwNN1nt1+W7eaAxpOT/+1zjUIfp8AO9YuhkdEPelbFR3bLZdsE5wlkY8QsCVE2ZK6hGtGKzTlXVN/TQwPLMRdsfs5lmUNtVtTk3+3+6ijiLxfrvFjv7cmmz9qpF0UOYeC2J6A7Ue0eE9rnSURNT+RetNruArqFIYR9TBjmsCcQdBG87xgr95QtKULhXNfTICerzY0omwhRvPWbaTFux0yS/rQ== Received: from DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) by MN6PR12MB8542.namprd12.prod.outlook.com (2603:10b6:208:477::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.37; Mon, 2 Jun 2025 15:18:14 +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.8792.034; Mon, 2 Jun 2025 15:18:13 +0000 From: Zi Yan To: David Hildenbrand , Johannes Weiner , Vlastimil Babka , linux-mm@kvack.org Cc: Andrew Morton , Oscar Salvador , Baolin Wang , "Kirill A . Shutemov" , Mel Gorman , Suren Baghdasaryan , Michal Hocko , Brendan Jackman , Richard Chang , linux-kernel@vger.kernel.org, Zi Yan Subject: [PATCH v7 2/6] mm/page_isolation: make page isolation a standalone bit. Date: Mon, 2 Jun 2025 11:18:03 -0400 Message-ID: <20250602151807.987731-3-ziy@nvidia.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250602151807.987731-1-ziy@nvidia.com> References: <20250602151807.987731-1-ziy@nvidia.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: BL1PR13CA0349.namprd13.prod.outlook.com (2603:10b6:208:2c6::24) To DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB9473:EE_|MN6PR12MB8542:EE_ X-MS-Office365-Filtering-Correlation-Id: e5c56996-edfc-4b27-c7f0-08dda1e8b15b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?uenIwWxWfbxLTTe124ES15j0+OTHPY1AKxNQv12YyvSJ+WCyfsSQfRsyXfT7?= =?us-ascii?Q?vj2M9Cg5wg+5KG32Z8Qoei7TKUqkkX+/XCbRPBmfwWkKMcLV7C3IvEbHqMwl?= =?us-ascii?Q?4/ZjwabsFvNYAByT5qX6DjRvBGHetd+7pjeRxFW1VmUvhuVNWkVbJbRMfvOi?= =?us-ascii?Q?Y1Z+IyDlsBB4EbaKzUH1z0vL7T6Wp+/m8+oQvHns89EQoDMsgfzdlD/+q8Tf?= =?us-ascii?Q?eu7F6lMEjfr0BW7fBsjX6yn0K+S/CYaB7QhFiPl7MLnMsKNS47eg+QIirt8w?= =?us-ascii?Q?dv7MWprdsR5J+PocMD6AG8P4fP44JZfPzihVERJ1kLdBUjA8/t+v/bNOED+4?= =?us-ascii?Q?f+hrZV13i1gEPQLIeR+NRD3uFjh7EwH5Rg295PJdcnIMClGJMgHFBdlSfow+?= =?us-ascii?Q?qSWEyU9JJrFeGpJB+z2q3+1TeUbRojGidr8GLlsMWBB27Uaro9LwJlmK1SrE?= =?us-ascii?Q?/ZDiMan7IaXHQ/W85/sARXHcSrdrefXA8i/KzA45BAJ7g6heYyHc3Xx3ZO48?= =?us-ascii?Q?sp6usea5zqOO0Qr2SYWU8YJsI+O1GdB9BX54FkLoCVb1FK8DJM4Rk/BgWpyM?= =?us-ascii?Q?kllBWBQLwBcLZQt23ODjla4x//cqnEsRmIz3wbGTL7xCn6tVgnjtKa8YpLPO?= =?us-ascii?Q?KViPa+s9LOgn/ajroUiscKCn/zZrz+9TYDK6I8Vmi+nXeW1Y9jRYPii+JPTy?= =?us-ascii?Q?x1xMQHieH03VQuuESd0aoxqaHZYyujirkUOHYOm/ORnmqI2FPE9ZbQWRKOTO?= =?us-ascii?Q?nyFN4p7POmgqiO/1hPpa7dSI34Qy6QzgkSzQ83uSUmOLzRaAQbthOJA9wRnj?= =?us-ascii?Q?koUlIGgkcT0+y5pt5EXpn3F+6JOdCE/Pe8wcwu6hCUWfrYdBOIGEtmBOHvR4?= =?us-ascii?Q?llpPdpyBk0vlQq9nNfMnt0xU4fnwymCd+ducluP7gkOAIKileLfPdqnTjmSy?= =?us-ascii?Q?4YIIZcLc3NltkZ19KelBAdWdRsr8++k2Xa/2ZnAVuIJZaVk6K29q0o43fZlX?= =?us-ascii?Q?moolQI4z3/ah1bUtnfv5qLWutGbzAwGbOmJX+b1k1yKVgRAjI0v8TfSfkBPc?= =?us-ascii?Q?wv4Nznul53DlOwPqo3jtWJYeE+cblo8jWuWj8/ycD6NO2GGXLnDmPGCsx99v?= =?us-ascii?Q?ldqhS1Ci+85RI931qp+wMHwL1bu0zuBUjWSX1G09vMrCd6wQeWZ2l7nTgdwm?= =?us-ascii?Q?zfk5hAQ7Y6nOoWw6Z9Ck9uyGltdxkwerJ1gXYCChzW0iErK4U3OTqYoWe6xF?= =?us-ascii?Q?aCrEI7sxLE3Ek/nl2VTz0kWGck9zmf1/D2/UW9Galg/ace/TZm/kF5l0lbFF?= =?us-ascii?Q?aL4YkSHIlePhQ7zyoNX1vMbYZD9kFIHzxEWWgRQtG28eSvd89EvwLQTvZ5h7?= =?us-ascii?Q?dBJHDq71GeEbZgdeWOgjX97epadWuX5+FP+Kw99V/pZ4uMbnz4j6fTHmIfg+?= =?us-ascii?Q?8KnX7v6UCVM=3D?= 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)(366016)(1800799024)(376014)(7416014)(7053199007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?DP5Ya1CPGWgUL0w7J08jfSYe7k7F8AIlHfcwE810GaO3oQkT4pLU+bN55sB0?= =?us-ascii?Q?uYh/6c6B9RCzcGgSNZop/JkDPPry3eRqCfcCsRWvv6bwJTE3/kTk4NE+moX5?= =?us-ascii?Q?AQ0rgQb5FbsLa+Hi1sg70ESlXmLyEpRIut64GxMwfAaw0fI5UPx1YrzgUNwe?= =?us-ascii?Q?Y+hDYKWiMoETCXIDVpaRtbUF+WN5sB+42GRp0+Ga3fiytuRWHz9iX7zK1d9Y?= =?us-ascii?Q?tGXfVqa0+TnA7dUh399vn7J5EPaJ606rLCOeIbt/0WqeTLq5g33GCFlJqndr?= =?us-ascii?Q?3ko7w1ReAbiPt+yFKQFxKrpgx7HwMARhhs1BiT3pqCMfwXkI2Ek88dE15F3r?= =?us-ascii?Q?NwXaCNKQKDIqQ8/fLlUGUKTfs735SvhyWx7HhbjUCkQ++VQA2IXkjJLloLTi?= =?us-ascii?Q?/LYklKxPuyMkPg8CJnXarpeCsvQA+Xzn2iDDEBVoK6LLe9B7AyYAzSNyzD18?= =?us-ascii?Q?fRM6O9xF3HEC6MKPlF5zBcHYCeL/tu6hdrtzpPupRE/0yCtWTqyM22ATyxhW?= =?us-ascii?Q?gGwACqlko3TC/wlgFZqocVRhTFWOqwqYo2UW6+YBlMfT7riUwKclNhN+xqGm?= =?us-ascii?Q?CQ1s8bWuvDpHZnfWU4tXrat6fxF/KaVGUrm4dTjjXikNGbM/0HrAFftdhifu?= =?us-ascii?Q?WWTppYYmC846TygqqD25wsZ6GLzdYDyPVtcw1E2p5B7PcPZKF1hJtMl/D/tG?= =?us-ascii?Q?hvjgQl0cyVjZyfwhRHuLyJUKxE/J6p6WdeArQTiFnjIQ1HlPTIm6mf0xDMTr?= =?us-ascii?Q?VBI73TT1kVRoNwbqXTET/CLlMbeVsGkbEX4gnwdeiKzQT58O/dYElXi7Vshd?= =?us-ascii?Q?BG26L/QOxJ2qWO5ExS1OOmaPq7q3IBnzpvTWG7m9syEqkVvyjZ6dF+HysZrH?= =?us-ascii?Q?1XxK8jUzOa9F/4E3hbVwVRb0MfasWFiZe91+GCbp6ilifrzR6PSC9Vpp9PD3?= =?us-ascii?Q?n3ftb1F3L+2bn/c4HKMkgIOVYQkiJKZKjB/x90t8dqdz0rvAb4qw+Oh7Sfre?= =?us-ascii?Q?JcrCck4GA3Mzl527oZBjh1kIZkcUlxFZQD65rbvL+WbZF+HlBVN48ZNsEAq2?= =?us-ascii?Q?GNJ2umEWpMuxZ64PLeWtcnDho/IGFu936KeaM5NLqMIbgUwWwcl7sJYi2k2b?= =?us-ascii?Q?KdzBIwObOHCAJRmlMlOLai1Bt9REEKlY/u0TrVRI4il6kR1bAP5WPLjLjfcd?= =?us-ascii?Q?rP+eLYqW43qQzAPla2g/s7RsFV62SVWa+/FSDdkycl0wzoA7BGQeraQmSINE?= =?us-ascii?Q?SGvwZsV7n7GfWrd3CYAFG0BTGVhQGquKWQ2TPUePJtrr2XW0IctUjU9LrQrn?= =?us-ascii?Q?yX5fZ+RtYVZFQ5/9K3wkiBaemzcSeL7RnIot5nrcerdCjcJARoqiBidFTe14?= =?us-ascii?Q?CcPwNokNqdXVX0ehGyw/WftfnNrxLZCSMRJ37/sYmwSIbb7/jjl7/20qcG+1?= =?us-ascii?Q?APAJVN+P+G2eN+o8RGz8Ifyf2hQmk3ifHXRkf5fkZKcz9Qk/Mhe4+/0jxaKg?= =?us-ascii?Q?JDG8tOQHZIoQviw9KwlNm9m3WEhwO0Du4IG7U17vC0FWAwtyEwOBi/oidnin?= =?us-ascii?Q?pLj4rxbUgUV0UOrR7DtPQsuk37RHhza73WRhUDfh?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: e5c56996-edfc-4b27-c7f0-08dda1e8b15b X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jun 2025 15:18:13.7363 (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: TQlJDvyyzLPhRS1r08k4Toz+yrZWqe88pTBjN5to+zY6l06fzD2bleKthdxglFyd X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN6PR12MB8542 X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: CDCBC80010 X-Stat-Signature: cx7qowb5dpw3qo13mrubzwnn8zamnrxj X-Rspam-User: X-HE-Tag: 1748877498-877089 X-HE-Meta: U2FsdGVkX1/ocSDcpkpW57LfghRKeEo6A9ry+PoaQfGAGU0gdt49VsMQm6jQPnhHiX9YW8+sFHSxWyJmRrifKp9CcvnU4BhP/PXow/p0UsPV3T2y8Hce+bFxVWkho4nC/nP0I6w04GYOvb24bwq729AJv9C91ng1PG+GN+Rn33GxVyn2vKqfzxAc9N8L5VllO2Qhbptfw1R/TBOerk6Myr9PJir/BghkMinzsvkNVNHms/WG/vEhLK8xtQx4w/bDLSiMSXeetLdj+iAHywP7Bhv8m5/I6ZUYl5CMLKTO1onss8Wv1G9FeSW7m5IJhXo68Lge5pC2yvPrgLM0crOsExIzxcDRQm74xEWiQSMMGLPgtJwmrN69O027hHblRAm72N3zAIvFHHRROrOyk0UheO8FbVGwgNYddG86sK29XPbR62X0gDwVneA4RXTz8N6IhaU0fUqlURYOmeBxhKvbA4VZMHl08fsfqdmkbGVoL4i3fzYCBPKEnqETfuCvBH4MDul185zPqRjRL4ljr/UOXICtLpcBRPH1+pAm7IGPZDRRRsZvGy/I3ZOsbqWJIAc+peM3Zsuw7DaYEhJ7DtulyJ/eGfULaQV7waz8fHf1W4Gfe+lk4cq+Mk5ye6GvcqveUihtbwSEIj2s7gKaaO1Xx1IxDNPYE6iqC2pCUF8eAa+Ui3xHlH0jHL9bsxr5JXC+hcPIDt4NqwzeOQk9bADv1bO+FhmDjHBGwbBkwaGH3Rj0r27Z21cOSPqFyXJ+BvPLo8Lowif6Rb3wauwPnrvgPpCH71JOvtptmkAqRvphAlqikuWOo+O6k/qic2Ogeh2ztTMUH/qzWrb58cv8jz6MZ60tgXa6qBM2OisYMSOs03vQXIWCjiGplSiPk0FgVC/OAYjAPNws6VHZgTuvYGM1N+bxMZymaUd4BMkOLAY3xl2nyIArUDCKRoCfEqZ3XCGBBUWSeQV6AGzxpa4qRYw FSVR4bJF rZcEJGtKJBJif6cM= 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 and stored in pageblock bitmaps. Change MIGRATE_ISOLATE to be stored a standalone bit, PB_migrate_isolate, like PB_compact_skip, so that migratetype is not lost during pageblock isolation. Signed-off-by: Zi Yan Reviewed-by: Vlastimil Babka Acked-by: David Hildenbrand --- include/linux/mmzone.h | 3 +++ include/linux/page-isolation.h | 16 ++++++++++++++++ include/linux/pageblock-flags.h | 14 ++++++++++++++ mm/page_alloc.c | 27 ++++++++++++++++++++++++--- 4 files changed, 57 insertions(+), 3 deletions(-) diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index 392a03e37610..0a5cdc52b405 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -79,6 +79,9 @@ enum migratetype { * __free_pageblock_cma() function. */ MIGRATE_CMA, + __MIGRATE_TYPE_END = MIGRATE_CMA, +#else + __MIGRATE_TYPE_END = MIGRATE_HIGHATOMIC, #endif #ifdef CONFIG_MEMORY_ISOLATION MIGRATE_ISOLATE, /* can't allocate from here */ diff --git a/include/linux/page-isolation.h b/include/linux/page-isolation.h index 277d8d92980c..fc021d3f95ca 100644 --- a/include/linux/page-isolation.h +++ b/include/linux/page-isolation.h @@ -11,6 +11,12 @@ static inline bool is_migrate_isolate(int migratetype) { return migratetype == MIGRATE_ISOLATE; } +#define get_pageblock_isolate(page) \ + get_pfnblock_bit(page, page_to_pfn(page), PB_migrate_isolate) +#define clear_pageblock_isolate(page) \ + clear_pfnblock_bit(page, page_to_pfn(page), PB_migrate_isolate) +#define set_pageblock_isolate(page) \ + set_pfnblock_bit(page, page_to_pfn(page), PB_migrate_isolate) #else static inline bool is_migrate_isolate_page(struct page *page) { @@ -20,6 +26,16 @@ static inline bool is_migrate_isolate(int migratetype) { return false; } +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 #define MEMORY_OFFLINE 0x1 diff --git a/include/linux/pageblock-flags.h b/include/linux/pageblock-flags.h index 451b351c689e..1cf5f0fbd627 100644 --- a/include/linux/pageblock-flags.h +++ b/include/linux/pageblock-flags.h @@ -21,6 +21,13 @@ enum pageblock_bits { /* 3 bits required for migrate types */ PB_compact_skip,/* If set the block is skipped by compaction */ +#ifdef CONFIG_MEMORY_ISOLATION + /* + * Pageblock isolation is represented with a separate bit, so that + * the migratetype of a block is not overwritten by isolation. + */ + PB_migrate_isolate, /* If set the block is isolated */ +#endif /* * Assume the bits will always align on a word. If this assumption * changes then get/set pageblock needs updating. @@ -32,6 +39,13 @@ enum pageblock_bits { #define MIGRATETYPE_MASK ((1UL << (PB_migrate_end + 1)) - 1) +#ifdef CONFIG_MEMORY_ISOLATION +#define MIGRATETYPE_AND_ISO_MASK \ + (((1UL << (PB_migrate_end + 1)) - 1) | BIT(PB_migrate_isolate)) +#else +#define MIGRATETYPE_AND_ISO_MASK MIGRATETYPE_MASK +#endif + #if defined(CONFIG_HUGETLB_PAGE) #ifdef CONFIG_HUGETLB_PAGE_SIZE_VARIABLE diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 74cb7696e527..5de23eba0db8 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -365,8 +365,12 @@ get_pfnblock_bitmap_bitidx(const struct page *page, unsigned long pfn, unsigned long *bitmap; unsigned long word_bitidx; +#ifdef CONFIG_MEMORY_ISOLATION + BUILD_BUG_ON(NR_PAGEBLOCK_BITS != 8); +#else BUILD_BUG_ON(NR_PAGEBLOCK_BITS != 4); - BUILD_BUG_ON(MIGRATE_TYPES > (1 << PB_migratetype_bits)); +#endif + BUILD_BUG_ON(__MIGRATE_TYPE_END >= (1 << PB_migratetype_bits)); VM_BUG_ON_PAGE(!zone_spans_pfn(page_zone(page), pfn), page); bitmap = get_pageblock_bitmap(page, pfn); @@ -439,7 +443,16 @@ bool get_pfnblock_bit(const struct page *page, unsigned long pfn, __always_inline enum migratetype get_pfnblock_migratetype(const struct page *page, unsigned long pfn) { - return __get_pfnblock_flags_mask(page, pfn, MIGRATETYPE_MASK); + unsigned long mask = MIGRATETYPE_AND_ISO_MASK; + unsigned long flags; + + flags = __get_pfnblock_flags_mask(page, pfn, mask); + +#ifdef CONFIG_MEMORY_ISOLATION + if (flags & BIT(PB_migrate_isolate)) + return MIGRATE_ISOLATE; +#endif + return flags & MIGRATETYPE_MASK; } /** @@ -519,8 +532,16 @@ __always_inline void set_pageblock_migratetype(struct page *page, migratetype < MIGRATE_PCPTYPES)) migratetype = MIGRATE_UNMOVABLE; +#ifdef CONFIG_MEMORY_ISOLATION + if (migratetype == MIGRATE_ISOLATE) { + set_pfnblock_bit(page, page_to_pfn(page), PB_migrate_isolate); + return; + } + /* MIGRATETYPE_AND_ISO_MASK clears PB_migrate_isolate if it is set */ +#endif __set_pfnblock_flags_mask(page, page_to_pfn(page), - (unsigned long)migratetype, MIGRATETYPE_MASK); + (unsigned long)migratetype, + MIGRATETYPE_AND_ISO_MASK); } #ifdef CONFIG_DEBUG_VM -- 2.47.2