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 BEA3FC5B543 for ; Fri, 30 May 2025 16:22:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5D0726B015C; Fri, 30 May 2025 12:22:56 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5A7D96B015E; Fri, 30 May 2025 12:22:56 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 497026B015F; Fri, 30 May 2025 12:22:56 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 2C12C6B015C for ; Fri, 30 May 2025 12:22:56 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id A21255D73B for ; Fri, 30 May 2025 16:22:55 +0000 (UTC) X-FDA: 83500093110.18.29F4DAF Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2082.outbound.protection.outlook.com [40.107.244.82]) by imf25.hostedemail.com (Postfix) with ESMTP id CC81DA0014 for ; Fri, 30 May 2025 16:22:52 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=fEDcZAVS; dmarc=pass (policy=reject) header.from=nvidia.com; spf=pass (imf25.hostedemail.com: domain of ziy@nvidia.com designates 40.107.244.82 as permitted sender) smtp.mailfrom=ziy@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=1748622172; 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=0hiK3kLot4o7xS1s5Cj3Ucc8b+4P6Dh6DmiQNaN80VM=; b=7HIEQ/o9kRsIT8VBgBK4Tuiw0kH0babtp9Gg4zoygfH+zVB9MUpwm9gxdId6nvj/crFL/s llcKZUmhhRD7VFQYatyqWEPmpLJTyW1EBFh6bA2PWr8K/v+nRujAVv/uRw9d3j0JIW8wAf 4g4fC4mae2pLHG3jkPLNZGl4O2WB0BQ= ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1748622172; a=rsa-sha256; cv=pass; b=kbUiEecjmqmNsB2kBorqE/7BtNG/tMo4H8GWja9S/eEU2NO6UjRnxrPY4hgcXYT5g7KbkS PpbTl4Mn9vKOwzJOrPBfg7FOtr9NTvrxH/z6tIh21Gfi4rzWHeFkvyYbrKO1QYgfR58Gqi FdFGlc3kAtQ52Ylj2yKMiDRVQplDUy0= ARC-Authentication-Results: i=2; imf25.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=fEDcZAVS; dmarc=pass (policy=reject) header.from=nvidia.com; spf=pass (imf25.hostedemail.com: domain of ziy@nvidia.com designates 40.107.244.82 as permitted sender) smtp.mailfrom=ziy@nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=totBCeueVE5UrwBG+NjYw/V7CRDJmJyjdNXD6sCAxeodubEmfM8NXQkWoeG6L6i1XInj0YH4ny2xvdsEPWuEIBga7NSJMD0IpumASQeW53Hl2mbCk8c20Idkfaztd8ms+aMfohBOaINWXFUIaQrYFRYOXoFHBdij/sBm8j6oQlvV+ue3SQZ94HTTTUe/vbvK/HRdqGIMeBIrxQl1yq1/JtRndogzYXikylsLUKSsVBAeh7bOfMXyGbEEPbb0t0WEJ9LFKgSYHdb8SJcDJ7nuH63nI8w1P/0gIsGRjIVN9rI6dk8OUP0fb8jCBdNJGC5+YQm9KyXMD+Wa3ciQjU/+Yg== 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=0hiK3kLot4o7xS1s5Cj3Ucc8b+4P6Dh6DmiQNaN80VM=; b=SNUlPWVzl4zBZWpOm1YpRkCvjOaZs4QXxjskO/mvee6X41q2yRGbCCn+hcQmAX/xpJfGDmrWYkDBWVPHGDQIfgwE0Co3l0GQm+7nbraJxIJQdpeXl9w9PZL9ZbvJnvmiecrepJwb+GWTQU3EDrOyoLJWFMhLkDGQrMbO1WI3LhHtrWhRHUiN3eKqyOWGz/ed4G1lafkRDTuA7IxpznIwo7NzUxkSCmT/N+Cp3zihKIMi+jXdBDqxZ/dRg6B323DHfpoKpT+nBjQsWncSlN8vSXJ4dbRV1AXTMedwkVYi2BeTE0bisjKcaRWZg+NUZgNGSUVf79hVIF5ECWNYJM2v8Q== 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=0hiK3kLot4o7xS1s5Cj3Ucc8b+4P6Dh6DmiQNaN80VM=; b=fEDcZAVS+A9zoXcGu3eGSfUh8NHJwPncH+DVmA8DvLkL9qrTpN3kzB6HKUNpLa2sSvZGBKWX2WgJE9SE/sZW/VTDfXvR3gw6mqTIDX9Pq29CFbS3CYCmf/KeVKk1LQmWTa2CipuMAZUNSjVe1JXLs5H5H5Wq32+hC8ebxL3laxyFa2Selq47LFH5qh84ymjbolNapLjFBcgrLxl2UCKrq4ZSmwLJxplS7dmvZ6nYqhHb8dA1MzDJSkY+80Uhgjp2dpSdLsKaF2tUr90jy+IVVFnCw58rP1jtXziIkU3PQQ2WFFzBwSMdVkzXlsynyp0mBJLNa8ed0gd0MWKRFWT5GQ== Received: from DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) by DM3PR12MB9352.namprd12.prod.outlook.com (2603:10b6:0:4a::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.27; Fri, 30 May 2025 16:22:49 +0000 Received: from DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a]) by DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a%4]) with mapi id 15.20.8769.025; Fri, 30 May 2025 16:22:49 +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 v6 2/6] mm/page_isolation: make page isolation a standalone bit. Date: Fri, 30 May 2025 12:22:23 -0400 Message-ID: <20250530162227.715551-3-ziy@nvidia.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250530162227.715551-1-ziy@nvidia.com> References: <20250530162227.715551-1-ziy@nvidia.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: MN2PR15CA0021.namprd15.prod.outlook.com (2603:10b6:208:1b4::34) To DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB9473:EE_|DM3PR12MB9352:EE_ X-MS-Office365-Filtering-Correlation-Id: 835ec09a-6d87-487a-50d4-08dd9f963844 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Hvylag61y7I4lrJ2XyXSgkjQK8+T5mUQq7kdWGKImhvGLsXzEjDu7j8sGBSw?= =?us-ascii?Q?QZaIEkmz7dDej41YLVBHyD4W7TiQsHzk/M/Q/ap5wi9pLQ7ZNemFOPvVvlqS?= =?us-ascii?Q?IQvHLECwGKxrzXwDoClaFb/wgTlLA+JvDaAEDwGpjp1DyglDpJ1EMs15KwTk?= =?us-ascii?Q?DsDJie+edqoLESwBRcjZUDGfDphEx4oBibUa7NNmNYsKxGHIokfwlszyIVx9?= =?us-ascii?Q?7AshqRgwzzw1SGvQv+Vrii3HUq/Oe/F+lRBkCG/N5R9AKZZoeOqH1V1k1uNF?= =?us-ascii?Q?Q1XzNF0SQtvXUMHYRroBzsudyD5jV9jT8JtAlTqlZHyKC+m7TXRhDkJFsQ6S?= =?us-ascii?Q?9m0Pf4lNBo7+qs9pGhMrea4BpmO9yVI/ThOuO9JTIDPIn937cfSv7VQTq/ib?= =?us-ascii?Q?NfTKs/mCoSO5+darkCmQH4mWdprqEtgDF2Psfy60EaaDu1sLWq19Pq4Vd88M?= =?us-ascii?Q?KFFb1IfGXAIZfYu9qUoPV8gL1xcU/h15+ymLx1f7sAkuq/kgGWBNiV0+cLbY?= =?us-ascii?Q?MRDnDKK56R4xUHjffjx29AFEoAml67z0UTRuimIXc/gNabqDlr5bkYmshodI?= =?us-ascii?Q?2XRBEvQQ3N2AafuLpQ/5gyXdbiI5LS8F1iBwBys4LQZH34iAFAEQiOwsW02u?= =?us-ascii?Q?TsJd6aXn5j/1yH+dGYPZBe5a5VQ/uR+qX9iigyiMQNS0NIa7czHdMLmfQxWY?= =?us-ascii?Q?0BgCXl7eN2KFCb/AHsFgc/7WvFV4PlKBQamgnepOxTNO2VbRnyEpjpvm5Hfd?= =?us-ascii?Q?m4b+YlQM4CUW/e0/P3kZXz/T6qtlJUQGMbQkl7veaT1HpLY3ZZDDeX2zxs8r?= =?us-ascii?Q?op2kLCODXzhvrV9bEkqedrQmayQtt8qT+KWZiq+Pe5hG8h6j2GHI+0GGDXRV?= =?us-ascii?Q?o5mTqY8Bq5FTHaOsRmtT3BzaTfohgjroRZnZ5hARzn6Ql4Izqm2/ErJvGqKK?= =?us-ascii?Q?Hg5aCqab1K0UgTuMhRjvwzfAPr4CTjQnfvV6y5x7Et9f3tcGpDGvN8GIMT5v?= =?us-ascii?Q?LSToRYNgoOy/mbdL0kJ/AQ/h2mPi0BnzjQmWZi9mYH1UJ0+ljcPZ2PFwqXpa?= =?us-ascii?Q?lyTxXT7fvGnxwT022mQagTglEk5UrwcD72kzVMtOCK6UBKknLSgqbyclYDyL?= =?us-ascii?Q?vcZGLNKuISDbkEcO8jNWvjWTnLrUuEOJmH3ZsjlAeY1csdDxx2GVS9jzT4Q6?= =?us-ascii?Q?rQART2VO4hdaRgSDAXEdawhgl1Fg8po0qPzCA0TWLQ59m8lTuojzvccvb/ti?= =?us-ascii?Q?HN5E/IiFqc2LWu/7BSlucIzKjoBMazzcRsOOoUB1yHErt+sy8MRs046Cbf2m?= =?us-ascii?Q?bNcXWNtQmV4g6Kr1naBzvBbcjsCrWPIiMQvTAG1lONcNrw+JG4jkHsCxZ+jW?= =?us-ascii?Q?XBKrRVbhgb8DJbQWQHpwnOLjS8fhlEYpQ5aVtmT6rI9/efBkTA=3D=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)(376014)(7416014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?sOwNr2Av/G+I4GW1QsK0KNfA9HZespTFH2eTw/j92wuU1pUFnhINS2vSKJNR?= =?us-ascii?Q?pEdTUvRJ+/w0z3/9W18a4PJjsw0ntkdeKiYU56zZlJ7tHb6HF/lupfEzh4J3?= =?us-ascii?Q?vnerrTH43tVBFr3hLHhhuhri4ySLZ23y2iQTnf/bayJCOOlkgLDtyIO/lSu2?= =?us-ascii?Q?rsY1DvkuVFZq1/31wHWT3v2uPfEV/rSeq1UQYGTRuVY8dwg8WKctFxmmHPJi?= =?us-ascii?Q?ZsaFRhGUTRg8y2webEnGPLJpRvBZbm2QP5nTxoWiagc5ZdCC2b3lhyAOOiiw?= =?us-ascii?Q?cB4/kr8NpMin/JrEXWWI3QK21huAoz8/aTJzPLjLDR4cH0YRCPOtoB3KKsI8?= =?us-ascii?Q?FYxsubzrUPAKuO0gfkYLFYohxW4aTfrhCra7hZN4S44FwkQUvZEwDwqz2i8x?= =?us-ascii?Q?l5kQOtt1DFoPnfeT+IVLUMEab9iup9CJC2QJw6kaenrK5rbDLLh1tury50Mq?= =?us-ascii?Q?gcrACSRMRWNBpz8Ol/eRps+VOgfE9iibGuq8t1q8wecut+nH9Oh5RjBwGl1L?= =?us-ascii?Q?O95aCdSuffskzRp7QQDCUZrqYJ+F8qauX4GFhDBpKFTSC0d73IOM03hiNmBF?= =?us-ascii?Q?pbKmAAe0xJ9QL77A6pl/c+mcVPk6N+gIYufuiudwRahdGvZ8Bf9N+sub1Gfc?= =?us-ascii?Q?ho82fWcbA024KupujaM9aMeiDr+yj7JV0uv0h6jlx/oTyk1KQ9viJo2iGU3O?= =?us-ascii?Q?wC0DSs1kqaBvQ5AnAk/F1CZP2051GgcbVxLiSXfFXIF5/+7SCib0Yfbk7LA4?= =?us-ascii?Q?ZtiEHJ7aNUQ0jOwfeg3pbv2x7Fo8zlXYkP1MFp7FjJN9Kv3Pg+edocsYPkfe?= =?us-ascii?Q?rvdkP6SaI/AYrxYr0yWnowzRNwvAeOoTR3y/vjSViYN6Rhxi8RnBHzuk1wvX?= =?us-ascii?Q?4IQ5rOLMr4PQ39oeSqqteEweAUmKu78s6cXaCkuBoFKSTME+n6995Gc/KYF8?= =?us-ascii?Q?zV+MUsJGsGXZIhtm9fUMqM8YdnpluyxqagbrbSH0X6Mb2kQChjeE/aiNuyTx?= =?us-ascii?Q?xSqSUa0asF7BcWJwjkPAbDzS6JBL2E4xerw/5m8qE9KI1do+bETgDDEzWn1w?= =?us-ascii?Q?mKclE7A2sL1jy7AsIWR152Bcw5Ml9NRTB7TvTa+pYHbxj1fObT/aPLAw1KTl?= =?us-ascii?Q?iNDKcimQxu1hMO0KRSvMsaL+HOTmyByaHIlbyVdjP4WWxx1Gy8sun8DDGFCG?= =?us-ascii?Q?Ss9lZkbPo7dQ4dmncXEH6tmlJ4Mdfi7oxLrfZ1HUI9RZ1JEXiCQ2Kd649Ks/?= =?us-ascii?Q?Yv0wxvlSvkJsjzfi4Ffx+f7YbBssocqtdWzEg6sghms1pW6imn8HRUlyLIXw?= =?us-ascii?Q?aMWeNPI0gps08SYyJuaDi9ylFmU8RmKmY/yUyWTPCgdfeB7EFTn+s5Llb3tu?= =?us-ascii?Q?JX8grPpreBNTky7BfEZiu4/jMYmcoLH6hDHPE2cBtgrpA9Wf1nwbQ3bQfIj4?= =?us-ascii?Q?PWQPygTaWN/SNPkC5yKPipnrR3LgptzmUIMpAwdtgjhg0BfHjh1wlot/2YG4?= =?us-ascii?Q?nUCqGHW4Np9i1JCPEKLmiFaC4z532eRAGqugcsz6cnEK0aU9hvvhRUOhFz2z?= =?us-ascii?Q?mVsoJO0P1wSAFRIpj+OErQg9HmKRAxHBlKmad+Tf?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 835ec09a-6d87-487a-50d4-08dd9f963844 X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 May 2025 16:22:49.5639 (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: e3qLjEezvwlWmPhmxu1c8GX5CazhWVUY7rU4d/iRnhSCAgltXcahur8rH4PH1YRf X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PR12MB9352 X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: CC81DA0014 X-Stat-Signature: u76gbhqzueacts1dnkg1m4xawmoisqjq X-Rspam-User: X-HE-Tag: 1748622172-426253 X-HE-Meta: U2FsdGVkX1+2nHXjso/AwS2yNeWh6Tn+liWytl4ZLarugmVu/uqs6/g+b/rpw/Qb4SsVde3wKqAPiyYHMY6sJ2fBfuqx3ay1RabXZHEMqyKaEvwEz7q+qyHogOHe3xbq/g02RzgwK7m2OQS8A6Q3S9LJ/KIftDpHRMDIe3IANayo1cFr/M9dB/Eu5VLc3XCLKeBpn/M9r/8l2e4eU05XHYZoallC1+i8UH9Pcq0wvOKAS1BYaIOjZ43Jt4tZptdQcYbNtSmGVeEqqkmRGZhi9/EpWPzq6RgQpE/HPqSoDkyu9VPBE1ULTs03Q4xrKOhHnj5pWNUU1m6jEqVrlvm5suDdVhZJY435ZENPR0X/iF4oqyRhBq0qbjBQPhabYcWYPY7jfKkhIDXCZhHBFRZhH4szCqFWfSAmUjc0MaFFvKiivFOr/GyDuavWES0v4J79awxI1l0exeix3VbGzAjCka5nmSA7zb0tUzOuWA5//zQ3FVPdSCECSONcvfW3xHkoxTZPwIIfFGbofXRgdM8amTY+0I8VwJ+dXlP2SHMq8ubCXu55sHt8QwQyON3jW/FFmDrIHyrDHPwoKZlfnflvFIVTkxsnVqdhsmG11R7GueoSQhBPoCKspaonzvH27cpgs/9wwOoSTgf0KKEfayKNU6+vBzS1gA3stPBXtD2Q5NIDRn+Qeu96bNlJxRRAMsJ9mvhRIyMp8uiuPCAH5JRtQboma3MrneGG6iTtgZDdb3OW0uZeqi5a3rGK2q6cNmt+7hISfw5EtNBEAR1eHqvJ5VpGVDoXX1BbqDeZtfWwWadHGzKAG5eohAS40Gx6FEYzWm9B967MjjT6cq9yenVxowqRL5rDBHeUkUIcu6Crsp0Bs65KSJRsu9l3MBRb4uuK23WPNf7P108ZJg1BH/a9gLoVuMzpIiapETEXECt7gT9ccmpUBN05cDNINMiznOCkEZNlVhJsuh1175YLVfQ yW+qeFXq FmcPr1xFsde/t7AqBGnOy7kb2jtB2YegQ/az+KjsFeW9CsbAzfb+ffHkDUjMfjzhocfe7rl67hDZw53Sz/tfRIUTYiFamXiWUGV7E7BFYBIWQxFdFaVfiicYBCN6WeZbfWJ8PFGJgkP+4wWb/GHwDplBXvffnvdn1KUqjM/KxaUhp9btQaO2/1L7tLY2cXW6MF8ftmK0ZpMS3bkvAYMcPkW29Un+UpXyAnttptZfBTCB2ojstebeRh3U8AIIUFvLUpVG/kK7RrN3O8WJ+mKXJ0NFdPMSiOis+EEf12C99DZSfH3UfVmx5pij7xRqxHd4ggYZYnoErLxvSs7zHKMoQLkk4eQSCExRq9ryYlDVIWVX+RcpErVDMhvkh5W+MNqvXBjhbk7kpt+1JPiVbKhKPK1BQyLoPL3hjFImaF8pfXxh5HswKdFcS2XObwsHTo1UGC8E7zOiO6uuVjBehmtgQ4fV7hz4HH0IyBOsWxlsbkZlxVG0= 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 --- 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