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 9BECDE7717D for ; Mon, 9 Dec 2024 21:42:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2928B6B00B9; Mon, 9 Dec 2024 16:42:30 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 2421E6B00BA; Mon, 9 Dec 2024 16:42:30 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 096726B00BB; Mon, 9 Dec 2024 16:42:30 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id D1FD36B00B9 for ; Mon, 9 Dec 2024 16:42:29 -0500 (EST) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 89B901A0B10 for ; Mon, 9 Dec 2024 21:42:29 +0000 (UTC) X-FDA: 82876743894.01.9E7487A Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam02on2041.outbound.protection.outlook.com [40.107.212.41]) by imf30.hostedemail.com (Postfix) with ESMTP id 8914980009 for ; Mon, 9 Dec 2024 21:41:46 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=PHVUQI55; spf=pass (imf30.hostedemail.com: domain of ziy@nvidia.com designates 40.107.212.41 as permitted sender) smtp.mailfrom=ziy@nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1"); 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=1733780537; 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=yjRkupsTDMLhwCjuI8R16WiDgrVIM+xfy/2moaxXIaA=; b=JMX8ElUBSPom0GOIJXNtaOztBU44z7PRWDu2lVMBkKoeRX85gXvBztVuhyU1Q7l8c91kuk T6TeB8rq3bnHreaouQRsuWpxi5VSoma33uuVH1JE0KFPw/UyefQn1Q/j996X+0Z9f8QhIC 5f8AkJ3oV7mKxluPmww3SLFcLTZob/I= ARC-Authentication-Results: i=2; imf30.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=PHVUQI55; spf=pass (imf30.hostedemail.com: domain of ziy@nvidia.com designates 40.107.212.41 as permitted sender) smtp.mailfrom=ziy@nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1"); dmarc=pass (policy=reject) header.from=nvidia.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1733780537; a=rsa-sha256; cv=pass; b=jiJe5RPTCVEkofM4gh5W5rEepYB3LXIj34gSDuur9lGbW2JJxSUzeXZ9Ul4e0U7ALWgFHU Iy7/yCp8bGP4mWFQ11/BBsM20VpqgpI7rQphx6zHPKQxnHxEjfTMLC1rwwCIovH+V5irRu q1rtMhEH3sumdDXwPRsfhEOSixnvqK4= ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ADtwjZLs3DoUNUuF+Oijc66TvFz1W3pmKiQWEV++/zaqbpF0Y9ZfAqqxjiucP1KYriujflvGD8rIZ3ZMdxoPETJ6W1dFgaXV8eHsCO83BaPZvASgg96MW6L7/A7oCuNMFUnlCRVTxNRQMOnHzoBt9WZJKJwbepbN7//7NJP6WIEaCrFWaoRHtr/W0O3/mNB9pov6dVGrrPqTAyc4ChGdAgnyWEN+GW5Mgv8yRgFb6CSYaD6vlnHwcKMgFhtiulAq7cMAA9Zc42E5UqijWFeR0tG+0nwr2uFvpbpwEB77aJHfKJB9HeXdEFq3iyYga15ijtxrZXRUbj4qb8BhPMkN1A== 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=yjRkupsTDMLhwCjuI8R16WiDgrVIM+xfy/2moaxXIaA=; b=qy1nrBYPnXOQHM2jIzNTy8T2iJ1KX1V7ykqtyU9VQB2GfefBWZhqTr2xKGoBVDbLNfzGX/5CfDMLHJI2AGD7kcP8eMA9WwSHaeUVqdxAJgA+FSMlP8df1mITqLuIFxnjdA4V3/BvcMMJqlKiA1YiV5iR+M4j6/+/aLufUcmW/hh+nWDB/dm3LMlB3kaiPQiWaoBubfu+pXUQc4UBKIo6jMZLWk6BGyohGtYuoAOcHGG/pRSbrL4vN+wxEbSpvQVR7KumCj3Yf6qCkEVmVKL+yvTzrkl7ktucF8nu8K3GEExJpJe1flaRwdF83h2qkNgJTxBb9L0e0a75jRNJR9ufAQ== 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=yjRkupsTDMLhwCjuI8R16WiDgrVIM+xfy/2moaxXIaA=; b=PHVUQI55zg8LQpSYbXubPtaPipfipkoBjDYLG1uXtp5sb/XstvL+wljkozREZCUNs1n0NL6PQe1EFlaaZJNnWZn/HggBeGiCyjJDjRyvRnSfb/2HQFiutMy1VsNxpzyPlEqjootqPi0RRqCFfwVQTnoLygql42Laveo5uK3uAM3daaXp9PXxz587PyNP8jokIFIBUG1U8PK9scDmC+EqUiaCQTYgtP7rqz/jzKesYhlVVFVXtC6k3M7aXNkaYC21A5bPsH3FMApPbACDzXmTvbTIwmixnac1ARldek1NNt6EmS8IYa0WanM9093B8zT+wDOKpEYcG+07oPKp6J4FCw== Received: from DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) by DM4PR12MB6182.namprd12.prod.outlook.com (2603:10b6:8:a8::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8230.18; Mon, 9 Dec 2024 21:42:23 +0000 Received: from DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a]) by DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a%3]) with mapi id 15.20.8230.016; Mon, 9 Dec 2024 21:42:23 +0000 From: Zi Yan To: David Hildenbrand , Vlastimil Babka Cc: linux-kernel@vger.kernel.org, Johannes Weiner , linux-mm@kvack.org, Andrew Morton , Yu Zhao Subject: Re: [PATCH v1 1/2] mm/page_alloc: conditionally split > pageblock_order pages in free_one_page() and move_freepages_block_isolate() Date: Mon, 09 Dec 2024 16:42:21 -0500 X-Mailer: MailMate (1.14r6065) Message-ID: <0162E372-2B68-494D-8DFA-F3AF0EC6F5E8@nvidia.com> In-Reply-To: References: <20241206095951.98007-1-david@redhat.com> <20241206095951.98007-2-david@redhat.com> <37B7A92E-B58F-442D-8501-B07A507F0451@nvidia.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN0PR04CA0067.namprd04.prod.outlook.com (2603:10b6:408:ea::12) To DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB9473:EE_|DM4PR12MB6182:EE_ X-MS-Office365-Filtering-Correlation-Id: 75613d71-1451-4a43-152b-08dd189a5da5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014|7053199007; X-Microsoft-Antispam-Message-Info: =?utf-8?B?UDBaWFdCeklhdnk1WkVJQkxSSXZZdWVOWkhwalBtUUQyU3BIY0JJdHBtYkl4?= =?utf-8?B?ejYzeUhBcHdoVzBGMTJ5R0hITnkvQUtLVWtyQzVBeEM5K29SNEJ3YWx1TnNr?= =?utf-8?B?SGZlMUpKMmdCcndEczlHQnRBSUlwWkNJWHU1RUtaQ0lxb0QyZ0FpditYWENt?= =?utf-8?B?NXpGUHhGeXNTT3l5dzU0Tll4czFpUWhlV1FDK3JhcGY1bFVORUtDWW9VZ0l5?= =?utf-8?B?a1BJUCtrenFTa3NyQXlRdnRSdjBHN0ZGY0RmUVVtazdSZ1laYVRoYjVtaUxv?= =?utf-8?B?OXd6bTE5andyUDJuWHBKVjNUK3A5eTNJZ2hJWHEwcjBwVjRvcDVLMWFXaHlJ?= =?utf-8?B?b2tHSEdPbWN5OVlHVEtlZDVPVzR2ZmVCOE5xOWRlU0QrZHRBOVIyR3QyNnhu?= =?utf-8?B?ZVFXWW02WHlCWEhDZEQzNTIrL2NCc1c5NHBrRU44YXNaVHc2THNlL25tSFp4?= =?utf-8?B?aHRpbHdTZFFZU2ZjV3cya0tMQks4VWZUZWtzcUFleU5USmhBMTdZY0I3SHVB?= =?utf-8?B?Wm9LYUJRczExZjlaLzQvSHZQcW0vVlljNjUxOVFiVVFReFEyZ0xMTWM4RGVu?= =?utf-8?B?YktTZUlPY29FTkllTHZpT00wVHEwWkJja0pnb25nVnBYRVh6MDRtblFSMnV5?= =?utf-8?B?MXV4UFJRUEhKT2xCQUlsSktnOFpGSFdsdkorbkt3Y2tXRVdPYVE5WC92bWFU?= =?utf-8?B?VVV2b2hKM0xZbkZoT0dzcHBPL0dzMUR5MnFvYXdIZnFuTnBoLzZqVHliZXo0?= =?utf-8?B?cGQ5dit2dlFsYWpONThzWWFyRFdLdXYzcmx2YW9NdHBTdnNQbEdrOC83VU8v?= =?utf-8?B?a3dSVUU2Ri9zRnp3enFjMnZZelcxbTA1V3VhSVd6bm5EWUlFQnY2T1EwZXRR?= =?utf-8?B?clYwelpZZVZXWmNjMDFHSDFzVzFick55dnJFc2lsdldrK2cwd2lNSjl5ZzRj?= =?utf-8?B?dkN2WFdhWnRPS1A2Zk9UNzY0WXpaT2U0TE9ja0hKa3V6cXhhU3J0a1hCc1kx?= =?utf-8?B?eDcyaWVVS1dqOUpicWE2TjU3dWN1MUNTZWVqaHBBeGRxZFJjaFpvZjNybTNh?= =?utf-8?B?UE9qdzY5SG45aDVMSVpwcVNIbWRyZDh3ZG1pRHJ3WnJHVWRjd0I4akdsby9H?= =?utf-8?B?eUJ4WUlib00rT055Q1dJam5RZlRoQnNqMCtoVE9iSjMyam9XcTdaZW5XeDI1?= =?utf-8?B?U2hDbFB2enpuU2dZd3NwK3cwdkZTbTBwaXNoY243VUs4MW03UVFSdmswMjNu?= =?utf-8?B?Y25hekxMRTdCMnZjbDBBRElkT0tNUWsyYkpodnR2Qi9XTnhpWE45dDFCeEdl?= =?utf-8?B?MC81aVo4L3BTTVd3dk5vY21nRjhWcWNrRTFKSW5DYllqcVltNk5RcTIxalor?= =?utf-8?B?bjJ3UGtnVVYxLzI1bnBtWDkzZGxkamJCcUpGOU5CdkI2NGRydjV5N2N0UTdF?= =?utf-8?B?QVl4WFBCMHZLK0F4bDdlY3hIbjN4WnIwckpqNUFEUzhCVlBOd3NEclpQdXo5?= =?utf-8?B?Z1RvOFZkWkl3R1VoSDhWVEZuNHBzL0dxUUg0TTBpSTY4akNIYjg0V0h2M0NE?= =?utf-8?B?Vlk2OTl2ajdSTnlDYzJTcUd3Q28zcU10ejFoWnZ1eS9LbDRjdjJOa243UWIy?= =?utf-8?B?SHhnSi9YNWJaQ1hRbTh0T0hQUXJMR1dCUzVRT2ZNSFJjUDExMWJjTVh6bE1h?= =?utf-8?B?NTZ4UDQrdVhOcFBsVTlhaVRtVzUvbkZzTXBUTUlicFg1UE9OalliVTE2WXJy?= =?utf-8?B?QTVmZFJnbi9ZNWNXdnhFWHJkTHdPOE9XeUkwd1IvdWwyYzkyZXRTTjRmWkJm?= =?utf-8?B?LytnVGF1alMyalVvaU1iZz09?= 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)(1800799024)(366016)(376014)(7053199007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aHg0QjRBSnZQS28xWTQrYzd2NXBkQVlia3FZOHpJQk1ON0Zkb2lkZ0JQUHlQ?= =?utf-8?B?ZVRFekVoWkZYQzFwQmhUbmFVYXRFTCtzTUlVbkFyZ0oyUlVPK2c0REFhMmZi?= =?utf-8?B?NWJ2M0U2RFFGU3ZrMkFyd3BEZ3BCNUc4bTB6TXBTc2hCcjhJVS8zMWhaYUl4?= =?utf-8?B?ZU01UFhrZzBNRmZ4dFlnMjZTL2JpQVV6YmJ5ZnVQVCttRTdoL0JJZVkzTzFH?= =?utf-8?B?aUJhTWd6eGMzMHFmRW9sbTNVYWlSaXBJbktMRUFCUmZRV0dtOUJiYUx4N1NP?= =?utf-8?B?NjZQREJrb1BIQm83WVFZZWloem5mTGVjVXo0SlEzRXdYL2JOaW1hSUlnUmV2?= =?utf-8?B?RWRHZE5zdmhuUm56VG9mOVgyTUJYNnlVZWRKUU9NcEZ4Uy82MFRVVVh6dm56?= =?utf-8?B?QThNc3haOTg4ckVOVGlPK1NldkFrcksxd2xhbG5hVlhJTTNHMGFBM2ZFMGVU?= =?utf-8?B?QzJhRndNZWFyK010MmZtNFh3dU1qSkxHS05BMzVwODlhUmZqYjZpMzlsNThG?= =?utf-8?B?VHhGZW5CUUN5ekdUMGdDeVZpZnllRVdIS3pWc0FBSmpjWWJsWVVDc2IwZ2FM?= =?utf-8?B?RnpPVXRnbDV3MlF1VmtUQnVGb0JzME10aWVLckFONi9uNkFMbHBHTlMxWUpI?= =?utf-8?B?WHpSYVNpREdFcXFvSGplOWV4a2x3NXlvRFhoTCsxWHFtRGwydnl3UzJIbkJK?= =?utf-8?B?azIvTSs4dm9FNEtmTE5rKzdlNzFsU0xnNTNlM2tkMkowb0FqUTJ5Vk5vUWhO?= =?utf-8?B?RVUwK0ZCRWtaM3FzQWdldHBFSFRXZDJyTHQ5ajkzK1o5VUNNUWVCdlVZSDRH?= =?utf-8?B?U0VCMjR1QXc5dXpQWlBudnFKQm1nMzlBanVrdjI4bWFDTUxia2M3VHNQME1z?= =?utf-8?B?aUlFVVpqWUJiMnN6QlY5aUo1di9QUDh0MStrREpYOVBwOFIyMm0wV0kvVmQ1?= =?utf-8?B?aU9IM2xwZHpHVmRrMEJzeERwZ0lER1hsV2Q3NnMvczh0clpQTzYwQXBoS0lV?= =?utf-8?B?NkFRZCtrUUFzeEpjWDA2VlhvYmZld3J0Z2VGZWJqaVNraCtwVnI0T0dGZm9i?= =?utf-8?B?YU42S2IwckJVMlZ4LzI4MzZvaHVXN1R2bjhzK1g5b0JldHVoRm81SUZSZ1VC?= =?utf-8?B?Z2tqeHRsUTl1RzladUZCT2lFYmV2ekd5K1duVUM3dnRSYjZPakVKYm9IcHVo?= =?utf-8?B?c3lhbHBxUExiMXBpTGsvU21LQjRCUXF2VEdoNFUvTFpQK1NIZTg4bHVCU05K?= =?utf-8?B?ZksxTkJibjQyU3UxbDk0Mm1aQm9lcEF5dFNhUk92cXJDYXhucCsxMkNTbnFF?= =?utf-8?B?SkhmeHZCSXoyUWZ6N1owdFZoWDVtaWZCWXUrY0Nrd0NaQkZOSnVwb2tHK0M4?= =?utf-8?B?UG0zNlVLRUUvYnBkM1RVWTBGbGkyQUNHWFpKN09wd3pSZDlGcVV5Wnd0QmVy?= =?utf-8?B?VlN5R2dRRlNWU3ZUN0N5L2hyR1N6Ylloek9QUEFKL3hmZ29udFBDOHdVK3F2?= =?utf-8?B?cTJWRzJWclJiR0xQTGkwK2NTbmhVQVRnelIwTTRzaEliNjVDZW1DMjBSS0pM?= =?utf-8?B?V0d6b2tremtSMlNxNWpFMFlBenFLUDQ2a2dhUDdLeFZxWVB0WTZqbzkzQzk5?= =?utf-8?B?WTBYNHJyMDREZEZuaWdwTVhPY2lRcSt3UVo4Y0kwQ2R3OTNQcWpQaWx4U0VZ?= =?utf-8?B?ZDBJMmN1RFFnYjRCR284Nmlra3E3cUdoSUVxOElTcTVEajJ3WmlPbmtCelZP?= =?utf-8?B?WVhpTW5SclFrUDk2dHB6TlZDN0poTE4wOGNHQm9Uc3VtVlRGRHBzQmkvUEpu?= =?utf-8?B?OVg0bzFTVU5hZG83WlZIc1ZwWEJoSldSR1M1aXh1VGszZEExY2JGV3h2bnJw?= =?utf-8?B?VitmRjA5dWdCbVdjOHdBSXhQcTlyQVpTL2xVREs0NzdOUXFJOGhyaXdCdmRn?= =?utf-8?B?Q3c1aDJCYXZMUVdMTW9HTDhyUElnd280Y3ErM1prQk0xZnloOEdoOThMcVVO?= =?utf-8?B?aHBPVVd1OUZoNzBjL1Q3RXUvSU1OVFo2TWxZT01KVDFDS21pOWFzRExLR0l1?= =?utf-8?B?RFNUbWZ2dmRYOFA4M3Z5bnNNRWFOejN4aG9yTUxBRUpqRXdVOTh4b29aQWsz?= =?utf-8?Q?Eds8HPlEazZR3uXdauoKk3vgl?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 75613d71-1451-4a43-152b-08dd189a5da5 X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Dec 2024 21:42:23.2605 (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: mUYaLv3wmao43b+xbpUdh9LSvK/lre2B9J5a0vCpwJqLwgHUwnXSXO3SAnqvg3Sz X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB6182 X-Rspamd-Queue-Id: 8914980009 X-Stat-Signature: 5ybob55odb1ebrmjbifpr1ts4j4kceuc X-Rspam-User: X-Rspamd-Server: rspam11 X-HE-Tag: 1733780506-409291 X-HE-Meta: U2FsdGVkX18kcXbNpBW+5/aDa9Zxc/JpmYAmVQRVUOMwYZBB+BW+C0vGWXbfBaQSxVNzI0mdaxg78MmTBrh6HIW7mdS3Ru7fKbqmfeKYzSGfW1TdnbHelXm0AgkiEvgSHLwM6MGiqfyXRib7ws99QWIs9S2PUXXsP2GwXTUXZM4/aSTC3xOtGTuU27gCRUMVut2F91s1wD04Sc73X5YVvgf+vrrxRGY6NLWF9yc2OCyK9nYtUVvREg2YG8sFuAQkp7TFXvs96bhdU7fZf7NUFbV4ciP9zyWeQ8pShu3RaPxzd9oGdiFXrEwLSyuc7Y6v2a81zlWgMqa3Qx/8hi3fQrpNRiDixavlaEXYzaL9EOYmDZpv6NLgb6LIjc6tXQNyaHorMKH7noKAkDnLa3XEolHYRZ4dmqG2XbkuD8C+Ya3rq+c3HwjPT7je09bbzASNZtRDjEv1bk3NGxnXESqmZ8lYCJcmflCQ0AwJpGwv4Fz/PUFtuTIoS0f1rtRrJtqIB9la67xcjeBRyz6uV2IT1+C46OUjjvwmDdCiTJDv4E6/KxmkxCi+BojXP0aWUuBUyOA6H1kpiCRdebBmPq5YUA/r99tzfJD9Z4fNgT0/NrnTALIEapHWO5vJuAz1O9RvsXTm8/jK4meqQPKX+Kg1Fu2nJvjhsup1CvDOfBN5Cx3+0MhtXRlcsxJSBq7lPPpxI5ai0PeLJgxUrZivSng9ap7MgNy37ZAj1XurNEpGqs9Orco9r3rYh/2noUFtf02yv94ygj6htJUeR8ZToG2un0bhQ/LCiAaQKE8lsmXO34mpgiTzBm8W65uUYjytTTKsH09ywZw3gpm41cgCb9q/gLdtb7PL9fLW6tDxe7valaNFeHkkb43SPpnpaLxh/aMLCWpvQek+UNv2y+td7XdVCuT/UgLFOuQb8JKFrJwgJ9rrbd2b0fO+tlnt/gV6Na1SNrVxjMN6LW0rLpCuJOu QNG6b2Wj JZrnach+zZ/U86GZCmW2qZ8Qkz4ElIs309NX8phaFmaDJ+u4DStTTTu3OYND8zlIYfE417HTpQzBdPtNR0obFBfoXk1VegYqA9s85LSZfLP6NEl4wB9PXXL3yn0JtDeHNQP7nRV+qzn+eC1Voff3jhTWxOsuBa7AfY3tUwL3roBhGfuQve4fXY4s92IvNsqzpg5q5JAlfrgavF+HFWS9+7N6bTSaCqQMcTaubRAeWjt5dDTWQdVasM15T9wEPjwGhER8kpGjXPPQvoGY/wNnmBYKxaqbWPDqZCqq4kJwDMFWfPsjJGjaB7GcGCIQU4kt7LRNYL3XiLB1GuswtjYRd8CGfZGGlF9pEcAb0upbIkwoIwCIvBbeUzfIyiaXzjJH6vRti+71OILGcXG0= 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: On 9 Dec 2024, at 16:35, David Hildenbrand wrote: > On 09.12.24 20:23, Zi Yan wrote: >> On 9 Dec 2024, at 14:01, Vlastimil Babka wrote: >> >>> On 12/6/24 10:59, David Hildenbrand wrote: >>>> Let's special-case for the common scenarios that: >>>> >>>> (a) We are freeing pages <=3D pageblock_order >>>> (b) We are freeing a page <=3D MAX_PAGE_ORDER and all pageblocks match >>>> (especially, no mixture of isolated and non-isolated pageblocks) >>> >>> Well in many of those cases we could also just adjust the pageblocks...= But >>> perhaps they indeed shouldn't differ in the first place, unless there's= an >>> isolation attempt. >>> >>>> When we encounter a > MAX_PAGE_ORDER page, it can only come from >>>> alloc_contig_range(), and we can process MAX_PAGE_ORDER chunks. >>>> >>>> When we encounter a >pageblock_order <=3D MAX_PAGE_ORDER page, >>>> check whether all pageblocks match, and if so (common case), don't >>>> split them up just for the buddy to merge them back. >>>> >>>> This makes sure that when we free MAX_PAGE_ORDER chunks to the buddy, >>>> for example during system startups, memory onlining, or when isolating >>>> consecutive pageblocks via alloc_contig_range()/memory offlining, that >>>> we don't unnecessarily split up what we'll immediately merge again, >>>> because the migratetypes match. >>>> >>>> Rename split_large_buddy() to __free_one_page_maybe_split(), to make i= t >>>> clearer what's happening, and handle in it only natural buddy orders, >>>> not the alloc_contig_range(__GFP_COMP) special case: handle that in >>>> free_one_page() only. >>>> >>>> Signed-off-by: David Hildenbrand >>> >>> Acked-by: Vlastimil Babka >> >>> Hm but noticed something: >>> >>>> +static void __free_one_page_maybe_split(struct zone *zone, struct pag= e *page, >>>> + unsigned long pfn, int order, fpi_t fpi_flags) >>>> +{ >>>> + const unsigned long end_pfn =3D pfn + (1 << order); >>>> + int mt =3D get_pfnblock_migratetype(page, pfn); >>>> + >>>> + VM_WARN_ON_ONCE(order > MAX_PAGE_ORDER); >>>> VM_WARN_ON_ONCE(!IS_ALIGNED(pfn, 1 << order)); >>>> /* Caller removed page from freelist, buddy info cleared! */ >>>> VM_WARN_ON_ONCE(PageBuddy(page)); >>>> >>>> - if (order > pageblock_order) >>>> - order =3D pageblock_order; >>>> - >>>> - while (pfn !=3D end) { >>>> - int mt =3D get_pfnblock_migratetype(page, pfn); >>>> + /* >>>> + * With CONFIG_MEMORY_ISOLATION, we might be freeing MAX_ORDER_NR_PA= GES >>>> + * pages that cover pageblocks with different migratetypes; for exam= ple >>>> + * only some migratetypes might be MIGRATE_ISOLATE. In that (unlikel= y) >>>> + * case, fallback to freeing individual pageblocks so they get put >>>> + * onto the right lists. >>>> + */ >>>> + if (!IS_ENABLED(CONFIG_MEMORY_ISOLATION) || >>>> + likely(order <=3D pageblock_order) || >>>> + pfnblock_migratetype_equal(pfn + pageblock_nr_pages, end_pfn, mt= )) { >>>> + __free_one_page(page, pfn, zone, order, mt, fpi_flags); >>>> + return; >>>> + } >>>> >>>> - __free_one_page(page, pfn, zone, order, mt, fpi); >>>> - pfn +=3D 1 << order; >>>> + while (pfn !=3D end_pfn) { >>>> + mt =3D get_pfnblock_migratetype(page, pfn); >>>> + __free_one_page(page, pfn, zone, pageblock_order, mt, fpi_flags); >>>> + pfn +=3D pageblock_nr_pages; >>>> page =3D pfn_to_page(pfn); >>> >>> This predates your patch, but seems potentially dangerous to attempt >>> pfn_to_page(end_pfn) with SPARSEMEM and no vmemmap and the end_pfn perh= aps >>> being just outside of the valid range? Should we change that? >>> >>> But seems this code was initially introduced as part of Johannes' >>> migratetype hygiene series. >> >> It starts as split_free_page() from commit b2c9e2fbba32 ("mm: make >> alloc_contig_range work at pageblock granularity=E2=80=9D), but harmless= since >> it is only used to split a buddy page. Then commit fd919a85cd55 ("mm: >> page_isolation: prepare for hygienic freelists") refactored it, which >> should be fine, since it is still used for the same purpose in page >> isolation. Then commit e98337d11bbd ("mm/contig_alloc: support __GFP_COM= P") >> used it for gigantic hugetlb. >> >> For SPARSEMEM && !SPARSEMEM_VMEMMAP, PFNs are contiguous, vmemmap might = not >> be. The code above using pfn in the loop might be fine. And since order >> is provided, unless the caller is providing a falsely large order, pfn >> should be valid. Or am I missing anything? > > I think the question is, what happens when we call pfn_to_page() on a PFN= that falls into a memory section that is either offline, doesn't have a me= mmap, or does not exist. > > With CONFIG_SPARSEMEM, we do a > > struct mem_section *__sec =3D __pfn_to_section(__pfn) > __section_mem_map_addr(__sec) + __pfn; > > __pfn_to_section() can return NULL, in which case __section_mem_map_addr(= ) would dereference NULL. > > I assume it ould happen in corner cases, if we'd exceed NR_SECTION_ROOTS.= (IOW, large memory, and we free a page that is at the very end of physical= memory). > > Likely, we should do the pfn_to_page() before the __free_one_page() call. Got it. Both you and Vlastimil gave the same corner case issue. I agree that doing pfn_to_page() before the __free_one_page() could get rid= of the concern. Thank you both. Best Regards, Yan, Zi