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 9081CC5AD49 for ; Mon, 2 Jun 2025 23:53:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 316CD6B036A; Mon, 2 Jun 2025 19:53:16 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2EE3B6B036C; Mon, 2 Jun 2025 19:53:16 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1DE6F6B036D; Mon, 2 Jun 2025 19:53:16 -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 F221D6B036A for ; Mon, 2 Jun 2025 19:53:15 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id A60A3141628 for ; Mon, 2 Jun 2025 23:53:15 +0000 (UTC) X-FDA: 83512114350.05.1DAC5E8 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2073.outbound.protection.outlook.com [40.107.94.73]) by imf03.hostedemail.com (Postfix) with ESMTP id CA5A52000E for ; Mon, 2 Jun 2025 23:53:12 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=oL5knMP6; dmarc=pass (policy=reject) header.from=nvidia.com; spf=pass (imf03.hostedemail.com: domain of ziy@nvidia.com designates 40.107.94.73 as permitted sender) smtp.mailfrom=ziy@nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1748908393; a=rsa-sha256; cv=pass; b=HcVsBFQX8lPbcUMzZ0DfUM1fD0YerqDWxvB9m7KzBzBE1ZEdbpDGOUKNoIfaoi9M4WyPWp 7AkmrO5gLvoxqwKTi3twmjZxwy70pvkspK/ggNosKku0+M5rRabsEusyhFhTShbdlFBENH SMvHuMAFSLOkWBAomzeZZL8xjgdNscQ= ARC-Authentication-Results: i=2; imf03.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=oL5knMP6; dmarc=pass (policy=reject) header.from=nvidia.com; spf=pass (imf03.hostedemail.com: domain of ziy@nvidia.com designates 40.107.94.73 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=1748908392; 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=w+CERgYeZSlbecY4hOVuMr1EZZ9RgZg5X3a4td65eNLT2eP67o2EJBF3JkuDt7ijNvQcSl m5z9ZsK/qypg+cXKhat6eo7gFFW+z6FKPz9mU0Ppycwf7HOjTzXi8b48WFSvygDglrnGqO Qb0MPEd6djKvIl75l4+lWWzIoU5Psus= ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=rMb1p6CcF3y8Lu25hewdhrGhkD/iK9eLMVez/KN37367BUIUi1j3mlGv30rNEsWmEw5oz6Dci3XoZE2TzhUdcb3sqYrdJ2Ij/jUVFor85Dxxm5JrtScsxswcfxjzMKj6SIoOvjlMHTRrMI1apw9QGkOwLt7+Y32B1ASpoy2kT3KsRRCYVDfz0+NSnn5wQkq9Zsb6Lhy4Ubn0Zvi265Cvtz++VpP4sgR0Tfd0yKYe6DuGQXJ60qvag4DEPdJ1OCgMG+eJVPqQZr7mm/JPwFPMq6sw7UsnHCMPGgdEEZM32XnVghmRzy40/BMvv+73hZhBFHgs3IDxfeYfLqcZUjpPew== 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=ZblF6L8sGwofwgvQpCVCQtcAeBpK4iFeUsPB+v1LHx7XoIRyImhBKEqV4JTUBPF4RbUGTi2DfETgSjJhJrZxMK5c+Ti46fpOCL9AXcvdo9TmHOr4L+9lupSqPAoJP5Y6J1Ql+j+sdIs/zxjo+l7vx1TuHtXJbylE8NRPosoYFPwaEuPHSUHsm65mSCtLpD8R9Z5UyzjwTJ3lXybIvisgtGrYrmI3hveQ7tmhFuEElrfv8d3z45pJ9Un5g8eHRXxC1VOibKRt7av5XbuJ3n9i+b3fr08xeQJ3CgS13WGbe2geEENuLwyMLZXJMHNMHZCVrnrKs89m0KKfUCnFVhYfGg== 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=oL5knMP67IfmTV3sXs7UmoopVtQs8YmjxIe+1TH7pPFwpG48HPkYuBitsLD1EcXj+QiIvU7AZiHIVSdiHCDzupLit7YGPOSm8oELuGbFI7OLgwa+1s/ptbRUBaf5ErgFMfQTkgszgCSt9SZUABlxK4aaQiB0ZFMdZsyleISxDXORhIsUc7OQKLF32zF/Oert4JF2iqOIq15La7OqKrNYXmEcsLVYkWBRyf0snlWcleJoV+f7jnYFO53id7GpmWlvaOJvXrA1mIaJMSTwCxNBvdFEbAvHpviWr/qy+L8zPn/MCyjfTmnDwckwyEV7Blca9+fdFa8CFQnCOBqEvCL10g== Received: from DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) by LV2PR12MB5726.namprd12.prod.outlook.com (2603:10b6:408:17e::9) 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 23:52:59 +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 23:52:59 +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 v8 2/6] mm/page_isolation: make page isolation a standalone bit. Date: Mon, 2 Jun 2025 19:52:43 -0400 Message-ID: <20250602235247.1219983-3-ziy@nvidia.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250602235247.1219983-1-ziy@nvidia.com> References: <20250602235247.1219983-1-ziy@nvidia.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: BN0PR02CA0055.namprd02.prod.outlook.com (2603:10b6:408:e5::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_|LV2PR12MB5726:EE_ X-MS-Office365-Filtering-Correlation-Id: 57f0f769-40d3-4bf8-bace-08dda2309a96 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?niof8WsMIp6BDCL86KcuWYgnD/+Svt+V4Y6PDm3rOFAozP0DmUAV9/hrE73z?= =?us-ascii?Q?DtNLDe8CVW9TDBZP3cUupNuennTnrU2sMYWkN8h21noS0UKgS/rm/rxUC+cI?= =?us-ascii?Q?iRTJhXpF8ZVgaNF//gli8UNoeBiyVDnmck8R8Hdvd8eTEIXZcaJaXHi6asEA?= =?us-ascii?Q?GUjPNKkDewQlDPvbUwOA7j3YujLvIptfP9xBH5j4oN0lGsLznw9vsaqjSetV?= =?us-ascii?Q?kxeeu0LaYMbLZ1yqkIQTIwfrdHIx/BvkzfLgfa8jG50u+8veEMLoCMj98w9V?= =?us-ascii?Q?XPOhVh1PDwbVJoDeMjjLLzMJBmz1JPx4zmRShglYp3tZw8DAX/bUfZAibJHo?= =?us-ascii?Q?Gy0WxmVsgjzfrgXzL5qEqzfLT5vp7hfgfR4BMhwYDCHE0C9DMTugV/KoVgfb?= =?us-ascii?Q?FzlaLVsZ+ic75GyYrH68egcWc9GJiwpkW/O/ZF2Wm92dJV7PzK7fCpbFWrpX?= =?us-ascii?Q?S9A7qjMJ4ro/+AuHJX15C7eJ3G9T0kw5+H2dA/Dvb0olUY6bVeN6S+5gVwfJ?= =?us-ascii?Q?1A1yOo1KxTCiKWA4clIAkU1WBfC0EXjn4QTbOc/Q1TvvZkSUlfzhGIEDBDvN?= =?us-ascii?Q?bNVQvmFisQ1BCGFhaybjSQwb55VS+hGhNgVoFXlDqe49wWTXVJVSDhqFeRpK?= =?us-ascii?Q?dWDKuc4+xVRF/NAnYE4SNwppRG2TQ6v91Yq+zW2paUISWHUFBLuGWWwNj7T0?= =?us-ascii?Q?oud35jMhmrtpgKSAPTyL3lLKHAQngrDksnIU2O8PeyXEHVrMhQU/vYGbkAOC?= =?us-ascii?Q?+puGm2QJtWv5QZZuhW5/+atYVdYqNA/9Ah7M889mJYFDvOmwrbEjfTkc1IN7?= =?us-ascii?Q?NT3ElQgAexz4Dlih4FfqmHF1Rx2Vojf/NwxU7+H9OVkQFiykFTpv1VGNsNWZ?= =?us-ascii?Q?CZ2N5wE+pBPKr/+H3pJDH+ua5/Yid9l9GIiAiWMzzJUlhOPpw8v6dYvdMOQM?= =?us-ascii?Q?RM7nyn18hYNOLDZ80ajORx/vZ4b1n2n86n9DF6JQIzCqwwW75yHTp0Jd1/Ab?= =?us-ascii?Q?9lQxAwFo7wJzmuurJwPoftJYu5Nar3p70RLADlETHJZmO9gd7y4+sv6VKhp7?= =?us-ascii?Q?W77o4kiPja7StrJgAgM27eG/1hCUgSfosc6J01z6jVWBpQIaPgKahZAhwaU3?= =?us-ascii?Q?DEUY+5NSOq/NZNyND1WCl/0xPiuLngv6J2u0370hq56RRMjBnwuqou3KGjFL?= =?us-ascii?Q?ccyA/TtSqQG6ftObsj1gZ3jXapCkAVMJ1cLdp/I6UvuiKj4+TzaG9wz9qahT?= =?us-ascii?Q?7aW4wWnOEcwbZwuSF4TLSKVN8kndQVxkVaXpDromZlVO4PFEYDMHYd3p0D98?= =?us-ascii?Q?UyoVvHuz4Y4MFH/Nk3/hGUD79jLCACveZSwYy7OXMiIW7rZp4pUHCISVu5Vj?= =?us-ascii?Q?ud8yc0Y4Uk50DVkxvkRDR2J0WHv/PIHg2E/exI4miY+++AXfRw=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)(7416014)(376014)(1800799024)(366016)(7053199007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?BFHkjTNj+WdpHHJLWIzELgwjxy3f3oJH4EfBThy79X/kWyRIW87lSdp/ImSF?= =?us-ascii?Q?90whpgK1q3KjL5WRvjSPWQDSdzEVdyhzBF79vfb9g5zRN3YPt9+Uy12rFC2G?= =?us-ascii?Q?Iz1SFYPSPCH1nZS5gCtYKXVEaOsQd5rTNd3y8/Rx3LSNyO7woxQDJGrLm2fV?= =?us-ascii?Q?jwDRV4D9OFLw4eDH6l/G9yEQYS0KVaNW3twXIbBwNWDTxpXu9B3ZH0/Rx2HX?= =?us-ascii?Q?qSN7gm8v2dk2luLKY+93Y/Qr2X+DXlIza8c3Ii44tSwkjNPvv7jNGRq2B0a3?= =?us-ascii?Q?1FhzBeAz1kaRE/wR86rk5P+zp554iSzq36ba9hTEPn0wJdS1WgIRawivQOG8?= =?us-ascii?Q?bvtefwzP/f3fgu/FMpGzM7HZE8rNaC8yxftLsD7z9ktK9x9Q9LLDF+RR7fls?= =?us-ascii?Q?ca6dswvByiVuQOFUeH2nxLtkbe0KdiL5krxEAIJWi4p3S/2O/OSnf9qdgjeE?= =?us-ascii?Q?cy5P/W9Lz6J5hZE16mEgPy507By2sJ7nPwhlSFbv3FQRN0NwVSoq+BSUquHx?= =?us-ascii?Q?VodRBKb03/fkgRlVFORn4RhaJ6poEcnbiD6UG+rExZcg+4zBDaspl+xaN2fF?= =?us-ascii?Q?j9EkIwKPZgxA6QQALgX6hOKBXrXKWQiEs2TdxNIVx/I5g5nj32bpXzNQ2ICP?= =?us-ascii?Q?vfGsjGeKfEuJKhZy4va0SvIdnYpuOjfl91dFmJVnSKQyFAZu5tgi1LnwPA2Y?= =?us-ascii?Q?d3JRWtulRIONd6CyEa2E2Xyeh8NShXg7NL5uaW44NQXtFwHyr6XxmIy0RbYj?= =?us-ascii?Q?a8BlXw02RjkZ8nNm438IJNiGNfWPMkY60K3jA3Bd/Dxnhro53UZoX9DgnMeu?= =?us-ascii?Q?UrvZPCkWb9ynRG7w2g6rgAy6OVre6d5yUZQM2LfXs52ZexUCma211VwM5g3Z?= =?us-ascii?Q?NJPtJ3SUP2KXWNMIyE8eOURJrHlTaebLGYUEErlEsBX4vzKvBs3keNaBQg7i?= =?us-ascii?Q?AEP7dithbIyjW+Hidh5BgIOUvws9l/XvTa5bvBBbYg6UUHngilD03Wogq8kn?= =?us-ascii?Q?l2hVCChKOAa1D8szflkZ8oJ4QAfhaEZqDQTL3ziA1JaxGv9owdO3J6mkwg4H?= =?us-ascii?Q?9JKtsJ2ezvmZNaE/qgzdg9zS2eY5LYe+M3hfmVQ7ny6RE/1DqF1fSGEms8/T?= =?us-ascii?Q?W0WGNk0op3oA/F6P5CKkgaNMx9Rx7V+sgVHDHPCQHH6yDqaEgBDCq/3PvzSU?= =?us-ascii?Q?tFRlcO5EcEVWdBi1c8Pi4kyAaph0Nfly7l4Nkey7Y9rpASp9UUzEYCBwA0Qu?= =?us-ascii?Q?2s3D7n3Dje6BgtpZHIz2325CqiJAccvad/4U2YUjs9Z2Ne/P7lR5Ywj3XfLK?= =?us-ascii?Q?CD9TDpThkFJ3qQvp4LygPDLi9pp3HOKOoWQQhNahjAQOXGivNWZvKsMRpNIa?= =?us-ascii?Q?QSCMk8EGnibXr6x2nvBLSCUqay3/gNc+150M8SAF5jLonNR8dqpZBhItEMsW?= =?us-ascii?Q?2OQUsPkw7Z2HZsImR2wE0JLewVOnhlRpaT1s/C6pFb/N7pZrmppYya87TGAu?= =?us-ascii?Q?EUMhF0z+4Z++HAK+JfJVgOae5X+Fz1YsAX7pX87TLy19KMTn6LxE6Otalr6d?= =?us-ascii?Q?gA4CVp0PVDQUptSezERS04H93oM0Ni8+q6L1283i?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 57f0f769-40d3-4bf8-bace-08dda2309a96 X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jun 2025 23:52:59.3585 (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: F8QNBvSYdKtxrcc/MGnbykWd6+YDturH1/5qGm0/J75DxeWE1t/7TmxHlHoUM7x4 X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR12MB5726 X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: CA5A52000E X-Stat-Signature: 5c8458fnb7y5x9rttu7ioroq4mfbjfhz X-Rspam-User: X-HE-Tag: 1748908392-664297 X-HE-Meta: U2FsdGVkX187cn3zmdPi4jiggVxejTRG00VY+zX0mOW2lmKOgr/oCYh7+lE17JIG3ePOA2p4fIGLVG46SxqLdVwvSL1tagd1ZLaQ1UXN76T1h16Ilxz5AnVEUH67w/hkS17Zv53odtSefuM7PQGUsS2L9AWhlYWUIxBL0qvx9uGQBFJryFMBCWLL5vIBoZRwZMHJLxDODdIbOaa5cCtSipjG660BD+THhvqdS9orah+El6cm/N8JaUzG3JS053SfosWnrhOqqbi+LB3/TKJow6agTV8AcvybA6hoNUJKu1BqUeBYME9nbql7dcSOSjIxWc0MPd+uSdtbGXDgcH5znbd5viQsROUv2GJLweRdGcwzN2jXUpJeSLZrMW/t7N8dEnECJxgJJgbtTwDOivXD5rou7lokKP3GW34fdlQa+KwLGwKnzL8Nwwl6tEFha5bJGf3A1K5vgvQtbk8xQ+xrvne0v6ulHu4go1QGsItEcVzJ0iDZh/suF1bHkLE0AzD3N3bXlgceZ6b/cDHwks2A4hPWwHY6B54IEMShXniy2Tjk7NQXzQHF3HqbXX2+v9WzxqbMk24XmicI+CQ8FFH9TiK+zHl5O1KrX9CQeyjx2EFbaSCftOo+QzP4eUIwcJmpiIMM3hGxFbxKhnt/TyKY/fwtwmVczmWj5nEgFVO3Qoi7ZQrJQzuSeckRn9XD62F1br/rO7+Zf4lo3TM8rXLeERArPx5z25bNT0JjMMiVXuEXC8cTHP15hoc8OJv0pTjAKtWLBAt6MZjmpX50B+uYP5JxAt4bKGmPM6grw0X6Alhm/Fi88B9/zE/A3csuxX9vIOz0u79ta660zvjdb/EhWMXfLUHgyPY4P/kgb6xNTPkRp+7NHL+K9JyjMAPdR5tKq9m/3/FNW4P3bWsu/zi9ocLhvUzwHKLfRDrut2oEgp/ESAgaWYPgEa1yl5qkzE4BiTP6GmAHHXFWY/u7q/O U18JiEJz rekvZCzwh7uF5922si5f7mmVTuatJ0eHwfOF9gjppALGfgzEQEQKMHL7fXtLSW7EvTqAp24pUFVwqepTRHNdOWg9xiGgKBBYWlicwUpdr8aFI3Aq7FsIto37R2uBR2/RfpWSjGAnuLhjHqHOpQb9F+3AS2FhH2CoIhetE/NLW1c4xwyViDeD2L2OaPko+KCWSyR5b2lfoVQbyGccMOcD1kB8NjyhRQe/QkwxGBpEHv4UlF018wrkdypFqBm1GottE32//UZStyrvMtrxEgqsfX/9oCOGeWXSE/aXnGZGbECiuzHrebhQWpaBi9NIfAx7KbKW3OgxfF7/7AuSbESJhUuDB2yskTug31BTEdBPX76DgvjykU8XU3diMPc1lHO1uHpyiBJcfeCvNimPSFBYAYRSua/eYgtioFZkJAScEpCCzRgeKLwiEelQ5bXdXZ0zCQLYQpEW+f6Hib1T1STZQ6H1eRR2K9vL4xXeoTzQQsMQiVhb/3a783gq4ytUDBKuGMhlJ 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