From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AA05B3AA1BA for ; Thu, 15 Jan 2026 15:09:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=198.175.65.19 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768489775; cv=fail; b=EaOCQpYpf4I8bHvcAaSJmWT5PKKyiZLqcBEbI0XJvYIWhhXIeAazPv6Td7Ln1Mx4Owmrm1V78Md7MGIT7mcvRZ86H2siCvVpfR48mH7GNvaHnL6P2255B1Hj/9P8g+rldh6nTPZGUrCUjk9hfm/bj8IkHLNFz71zbaYBlIil75g= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768489775; c=relaxed/simple; bh=LrSojkchd2NpOb5RCIF8R97gSDaqS3HgR5aCV8DRQaA=; h=Message-ID:Date:Subject:To:CC:References:From:In-Reply-To: Content-Type:MIME-Version; b=Sx5HTthtPdZIe1iJcDVlrs6A0ZkV3tFN85f8vFzKYEFbThhk5kempvSPU8UE9SrwU+ov0Vcrt19XYMsKQ9VTLlFSbR6P6vIJvxiyk7WLkH4rzzPSU5CSscp7cJPtA1twIoVYwRA3bDcrQHsqr2mz6t0Wi/MEvrL8hJyTFYmQltk= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=M8ZVrIf9; arc=fail smtp.client-ip=198.175.65.19 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="M8ZVrIf9" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1768489772; x=1800025772; h=message-id:date:subject:to:cc:references:from: in-reply-to:content-transfer-encoding:mime-version; bh=LrSojkchd2NpOb5RCIF8R97gSDaqS3HgR5aCV8DRQaA=; b=M8ZVrIf9IMalQ3Sh08nidPPyrXyhk1YkxN5ISWa7W1hzO87X2lpLiITK uLcgfslKMC/wi9RINXV7gtwzWt67FgyZbtOWm7EQQcRWNCL1BxClaSDj9 QeR8AipAXCoE6JWAaNJgIyL1P67COaHkpdV3odqXxnT7ahZhXeNUwM64Q Cn7KH3oZx3KbcR2tTPRnibigsfCYXUa9uL961hQnEUCN3+CwEl8GLKL2H ivmsWLfw+T3V/jI/s57vYIxwn8mY7opI4qHOVIjJm6FD43BMTwAPDsUxe pK4T4rTCRgTDgv5am45bwfqMowawgod1yyJmWLOrvXTrD5UnYiEBJtMMN g==; X-CSE-ConnectionGUID: VHGtJllCRqupB3kB1R11nQ== X-CSE-MsgGUID: n9OAv7onRomhRtcbVQ6+0g== X-IronPort-AV: E=McAfee;i="6800,10657,11672"; a="69696285" X-IronPort-AV: E=Sophos;i="6.21,228,1763452800"; d="scan'208";a="69696285" Received: from fmviesa003.fm.intel.com ([10.60.135.143]) by orvoesa111.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jan 2026 07:09:29 -0800 X-CSE-ConnectionGUID: RD8Qar/WR1yI86yCrrYNCQ== X-CSE-MsgGUID: mB9VEDaIQ3ySuIymPLb36w== X-ExtLoop1: 1 Received: from fmsmsx902.amr.corp.intel.com ([10.18.126.91]) by fmviesa003.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jan 2026 07:09:28 -0800 Received: from FMSMSX902.amr.corp.intel.com (10.18.126.91) by fmsmsx902.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Thu, 15 Jan 2026 07:09:27 -0800 Received: from fmsedg903.ED.cps.intel.com (10.1.192.145) by FMSMSX902.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29 via Frontend Transport; Thu, 15 Jan 2026 07:09:27 -0800 Received: from CH5PR02CU005.outbound.protection.outlook.com (40.107.200.22) by edgegateway.intel.com (192.55.55.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Thu, 15 Jan 2026 07:09:27 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DXSpDCt5qXwsyVAwl8yslgxBJTbTkiiYH5CRQCww7tLyyHSyjgERrPOdWCNVE/FcO+1ld6vrrWS5Slx1kQKSiQQfPOzVHFcTEh3Uc7NqjfYNBjyBiLawPmL3mX7DYVy/fnfUVGnzljJJqGB/BbwL3rmp1/wdE/ciR4su/9vowGAqB9bBLvreL7VmLLiG+KEkFWbZVbWFrcG1t7XBVHK7GwaTKeoqjsLiLvsHlYY/J4kc1tII9L1XPPCMrRQ+6BpMkjDIhSRR4VovkI3tpKZzPRAZ9z9j2cRsKOv+UL5a+JopsdP2QEmMZEKAcQzHrR9U48PBqzRcHsFPKaSpZbbZKQ== 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=r00f0gPq1SfRtg87KvDwkgBpBCmMrx5Q1lBx54RB/aY=; b=q+CO7K/Fbmy6XtbteIpWqZaHn3xqZ1/Znja0uba/al5NVHWTvYkVuAYZF4y6vCvIYkYA8pjpbG/rkAa2SMyH71+73XkB/q1wfMHbWOSqcyQ5zynJ9MGcBpfFSmJnCkOnuO3brgraYlnT9O+Kyq3iyUmHOrTsGwzmgdxMxeOPZrjuYJqjHp4fPZktcPpcSLG00Gw+8bIH8pGyvai/7AaAiTn8UyR3AihvzHYY20pJIB7KOu9KYkqf3sjxFClfvcfMEAVKs44TQ0F2gAXLRT81sD5cSF8XRWqkmb/9SXfJWpEkRaShpgVtiFP+Tb4di2HILsSelHPDueVxMJEZ3XV68w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from MW4PR11MB8289.namprd11.prod.outlook.com (2603:10b6:303:1e8::9) by SA3PR11MB9461.namprd11.prod.outlook.com (2603:10b6:806:47f::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9520.4; Thu, 15 Jan 2026 15:09:20 +0000 Received: from MW4PR11MB8289.namprd11.prod.outlook.com ([fe80::e4be:8608:3d70:c1a1]) by MW4PR11MB8289.namprd11.prod.outlook.com ([fe80::e4be:8608:3d70:c1a1%3]) with mapi id 15.20.9520.003; Thu, 15 Jan 2026 15:09:20 +0000 Message-ID: Date: Thu, 15 Jan 2026 23:09:11 +0800 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v7 2/2] mm/memory hotplug/unplug: Optimize zone->contiguous update when changes pfn range To: "David Hildenbrand (Red Hat)" , Oscar Salvador , Mike Rapoport , Wei Yang CC: , Yong Hu , Nanhai Zou , Yuan Liu , Tim Chen , Qiuxu Zhuo , Yu C Chen , Pan Deng , Chen Zhang , References: <20251222145807.11351-1-tianyou.li@intel.com> <20251222145807.11351-3-tianyou.li@intel.com> <2786022e-91ba-4ac3-98ef-bf7daad0467a@kernel.org> Content-Language: en-US From: "Li, Tianyou" In-Reply-To: Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8bit X-ClientProxiedBy: KUZPR04CA0027.apcprd04.prod.outlook.com (2603:1096:d10:25::19) To MW4PR11MB8289.namprd11.prod.outlook.com (2603:10b6:303:1e8::9) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MW4PR11MB8289:EE_|SA3PR11MB9461:EE_ X-MS-Office365-Filtering-Correlation-Id: 04be40d0-9d7a-4a8b-d355-08de54480f17 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016; X-Microsoft-Antispam-Message-Info: =?utf-8?B?VEJPYkhtUzZSTlk4SUNKYTJvWVI2ZDZkMFFYMGJzZmF5ZzZuUlNIdnZPc2Ir?= =?utf-8?B?TnVxbE9WTTVJUitLa2RiNm5UM3NoZndpVE5RWlJSUjd1WTBpeXJvUE9wMGZZ?= =?utf-8?B?N2dOWEoxYkVwSmdJMWtObU9XS1VsMm1GeVM1dUljSGJPTWZQTXVHRlBUVU5t?= =?utf-8?B?QWEzSHRVSHJzQnlKMkpaV2N4bzNBU2trSTNPcit3WVptSmV4V2NtTUNDbm1V?= =?utf-8?B?eHZKdkx0aTdvNENpRFdIZTFGRUMxSWRvTzhYTVlkUDZRSFFlYjJ2dFdVMGw2?= =?utf-8?B?ZzNWTWFEbk1JT1hZWHNsWGZuWWJuL202VGdsZTA0TTVmYitwTnNjV20zRVJJ?= =?utf-8?B?em84c004MmtMTzVNTDVLYUVtTTQwVG03WEtQY3FOUFNPZXVMR1BlRm9uVFZy?= =?utf-8?B?MlVyZXVrN3BVN1JSUUdVQ21GME95KzRpU3VUVExuYWE4b1R3Mkp0ZWwzQkxU?= =?utf-8?B?aGFCQ3lDUXlsVXVHb0xhd0NSdE5VY0VpNk9QSTN0VWRlQVBRb0IySmlEa3p6?= =?utf-8?B?RkhWWS9OdG8rY3VJdEZQU1grVjFUZVpmVVd4VW5PL25hWWRHYnhVOU83UTdH?= =?utf-8?B?TnkwYWJnY0ViVU1MSHhPaE1ac2kzVmJGdXJSdjYxNm9UWkdCdis4dDFqVGxt?= =?utf-8?B?aUVwVWRnTmxOTFA3d25zU1NNOHBWQmMvdjduUm5lWVdnU0FvaUkwa2ptTzhj?= =?utf-8?B?Tk5hYnJMcTZER2ZpdUlZODJEdHp2QTM2VEtMWWU0RVlmV040dmdmTGo0WEZr?= =?utf-8?B?TmV0Q2pZV2kyN1hWZ0prdmIxb0g5NnkzTm9GcVVneUdYK2VVUEV5UHgzckVM?= =?utf-8?B?QVJyTXJsQnBVb0orSm1MS05nbVRNd0cvRE9wRldyUmFqMklUbDZpVkM0OXFQ?= =?utf-8?B?T0pCMGtIQ2txOVJWZXJrdHhWZjV0dCt3UDNnM2tVbzBxZy9hT25uK0tvT1d4?= =?utf-8?B?MkpncjdKdWszL0d6MW1jdVkzNkxLeXljVXlYV0xCVGo2RVU3ZGFEcFhUNFcr?= =?utf-8?B?V0NlWFg3UFNYS2E0VWJWOW9FU0RsUkNsN3JLVFo1K1pGSEtIL1pCb2d4KzhJ?= =?utf-8?B?UkpIVitrd1Uwb0VLeHBJRTVIRloyU3BYMTg2NGlaOWh2dkdReVFnZEJKb0Zs?= =?utf-8?B?eGZiM092Ui9ZVGY0TnJtK2RUTkdIV2M0UlR3SWNET2cwbW9Jenh4NjExQzI5?= =?utf-8?B?TVhFVE9mcGxJOGxObVVUWE1YVC9WOThzWmdFOFhnQWRkQVZrL2NVdGo3R3Ay?= =?utf-8?B?MkQyejJScFEvSXNGai92cWo2NW5QZkE5M3ltcDhhcDV0Unp4TEZ5K1JWZUJC?= =?utf-8?B?c2sxZTVGK0lISVRoZlY1YkE2YXk0dG5iVDRja0hpV2c5djVpV0crUWpscEc5?= =?utf-8?B?M2RuSHh2TmQxZ3I4Q2h4OUNlb2k4R09iK1Z4aHN5MklpelZTR2hacjZkNGRj?= =?utf-8?B?djVGWk05U0J4NHBYK09RZlVKVEduTFI5cnJVUzFFWGhkQmdWUTlVdVFlMnJ0?= =?utf-8?B?ZkVpZUVza2Vsb24zczZHb3ZjSGlDSWhSdE5GYnI1MnlzaTZlNkYrQ2VMQ29F?= =?utf-8?B?bnBDQnR0ditjQ3dFVHVFaFZ2bXNlNW9mL3BYb3drZGd5QzFCdDVOUDFmdWpO?= =?utf-8?B?cWZrMkpDVkVzb2RhbEdyQmxONnVBVERpOFEwMlM3VDBkTm1WTWVpQ2FDV3Yz?= =?utf-8?B?SkVoTXdmTksxZW5PWHlpeTdKTXlqc1QzWEpZdEFhTmhpQ2lpakhlQmxMMDh2?= =?utf-8?B?NGdzdlJ4Vy9zUHpyS25OYUQwVGE2ZTlFdTZVcFYwbHRXMjBTa0cveWpwVU11?= =?utf-8?B?N09QRmcwZUU3cW5aQ1g5dmZLaTFOekduc29EaXlFSWFkWDBiZXhwa3BHUWM5?= =?utf-8?B?blJPZzBnb3pveDM0K1g1ZGQ3QUJiOFZySlhua1oreVpHVE9JZnkzdFFTSTlV?= =?utf-8?B?YU1XVzgzSHk2dTBsKy9YMnhlaUh1VmR1Rkl3OXBNTHpJQjVXSWNXNm8wMnFh?= =?utf-8?B?TGp6K0xRcUlnRkcxNVBjbG1SUFdWR0dxMHRlNzdMQlllNkdBckFPQW9jQy96?= =?utf-8?B?ZUs2ckJIdjhrT2QzUFhzaURzZ1pHSVVvcWF6TjNLWU90anlnSmEvdUovelNW?= =?utf-8?Q?vyc4=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW4PR11MB8289.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RWNqOFVtV2s4Nk43VDMzd1l5UnRSQTdzUnFMR2s2SDg3amI4SlRCSm5YOEto?= =?utf-8?B?QkliSlRhU21BRWFnMmFpUitTSzFYeEpWZ0VVQlZSOGxQY0tuSlZTZ0dsUEUy?= =?utf-8?B?dmtsUmgvNVVvL24rTXltSkdwdHdrNi9OTGZ3RGY3dHhHb2RmdDllRDdQbWNQ?= =?utf-8?B?YzZJVUdoK3MwRFl1STZ1bzJieGVZQUprL1RyRDhZWUNYaU9YTTR4cWhUNDQ5?= =?utf-8?B?TlVMRzUzd3Q2dEtmQnp0bG5nZFR3MC9CemhFNWl6NXZZYWN5c0MrMFhMQzli?= =?utf-8?B?MFRnbGxEM1hpWlc5bEFGa0lFOStROVBpRW0vVEJNd2dxbWlqWm5ybmw0WDZn?= =?utf-8?B?OFJ3Ync0TlNOZ2UzaUk4VFB0NHFTYnFsUmxrcjR5ZEFiTlNGa1Qzdm5mYVlF?= =?utf-8?B?NkxZbjl4UlZaQm5PMmhPOTJ6dDc0VjhxVHpBTnNtdDB5UzFMOWdjM0VRQ2pW?= =?utf-8?B?MEpGbmoyTERJL0E5YWtENzVDclQ1RlYvMmNscmRKU21ndzdhbmV1VFkyOGth?= =?utf-8?B?VW5iSGE5N0RheDlCRWV0a0FsVmsvVDdBOXR6cEhPQ2pjOHEvL2pGd1hMcGFr?= =?utf-8?B?SnE0SHNEUTBaT3VmODV1ek11UTQ4UVY5cS9PRnlUc3BIYy9Ibno3Wk5vOE4y?= =?utf-8?B?ckEwdkZ2Qk9DN3NyWHB0cWZVVDBwU2gvMmFYSlhzaGRrMUlQOUZ2OC9OSWxX?= =?utf-8?B?VXJ2N2NGNE02K1JyZjU5RFNJSmgvRFFOa0h4UEFnYlVtS1VaSmk3dndqNks1?= =?utf-8?B?cjhCenZnaEdOb2NQNVBJekJpOXA2ZmhaVTJWTnNDOXB4MzNjRDZCdDBCNUtU?= =?utf-8?B?Z3dFd0t6UnBySWFZZGJ2QjE1K1pNMGdlWWxSZzFoakdlRDJjQk1XTWMvU2Fr?= =?utf-8?B?V0E3RDZxek9MVElHb3hHeVJndzhVckp4Ymt3clJPZHZQK2pNeGd1emN3UHcr?= =?utf-8?B?VEdKV21EZFpjZUlSOHNBUCt3L0FUMzVNNTdBWnRsbnN6VHB2bXNNSm5TUk9n?= =?utf-8?B?TWF6cW5BcSttMzl6NkExdm9MWStNWmZTaHBQNFQ2cXkya0l0emVUM1BiTTV6?= =?utf-8?B?UWozNHg0SGRrTXMxTHpONDFWTFRiOENmS1RMeDhGcjhFS3pLZ2dvMnNKb2wy?= =?utf-8?B?Sm9rS1JBYmY1cE5wNkhJaUp1VHBoM3I1ZklWRFdTWU1JWkpCUCt5Nkw5TXRo?= =?utf-8?B?SE9JemI3MVZNSDg2dkdFS2x1MWxOYklSaVpTN1UzVEI2TDViSHdLZUtycWdH?= =?utf-8?B?eFRnakp3UEtCS1JYU3hSRWZ6MEExcVVFekM2UWJDWlZBVGZ1STNQR1h4Y0Zu?= =?utf-8?B?VUxpRzZpMzhhVVlRbEl3ZWN4bmxVZ0JPUUlqd0xQR0p2UnBDV3BJNDZsM1c2?= =?utf-8?B?Sk1BSUpUa0FEbEdhRnNWS0pEU2doS1ZRaXJPQVJuUGt4dGR6aUg3VlZlWlpa?= =?utf-8?B?cFJDMDBUVU04UHF2OURYYXhRWHN5cnNXYW4vYVY5Rjk3ZWJjKzVhSnR1MnF6?= =?utf-8?B?Qkx2QitKZUNUZ0xNbGZNRDgvTGtrZU9VSlBCaW0xUDkxWk1WOUQzemVDTGx1?= =?utf-8?B?bkNnbElMcGNPaWtOUXhhWkVxN3pucnVWRDZiNHIxOFVpR3pLQm1PZkRnU1VD?= =?utf-8?B?L0JxNW4xYW8vYXQ1aE5uUVlkUFl1emVmWmdpcnp4Q2k2eFZTS3kyczdPaWkv?= =?utf-8?B?QTh5SFBLSVdyNTJzaFRTci9lbEpPQndIUUlDUHBYaE1tNFFSditwOWdWS1pw?= =?utf-8?B?bzZJS0ExM2x0ZHdPUmVseldoMVg3WlhZVDQ1cWFBelJhTmh3MUxUK25ONzcr?= =?utf-8?B?RTVRWnpKREtRUG5HNktBMitJeTNLSzY4NWZ3alJmUGVKYyt1ekY0OEpzMXN1?= =?utf-8?B?bHBVTGxnYzNock52U3lzenNBTGVGZzdOZlo5UVpOQ0ZWY0orU0Z2K0tiVGhF?= =?utf-8?B?Y2FwYVk2WmJGaGRXdkhqYXlOeTNYblFFbmtZeUU0bnlCaDFsaDhxV3lvUGRT?= =?utf-8?B?c1BzZzNEcUxic0wzYzhPenhDa28ybHRLaEhWK001RVZ0Y1ZkUVVmR29TUzJT?= =?utf-8?B?MUlYTkdaNTZMRlBncWN3OXgvbFFlOXAzSzB6a2x5c3MyR3AvRDBRVXUzTTh4?= =?utf-8?B?V0xqd1JVTXhRZVVXYXVYeWFPeDBTTTRzc3BnUUVCTDk5dU9HQ2t5L0Y5OWFO?= =?utf-8?B?Y0RPN3lwVzJUNFlEU01mWDRXMCs5T1luUzRTdDREanpUc2RRbHB0QkFkYkpE?= =?utf-8?B?K1RkdHhlSzlQcGx3Yi9sL3B6VE1BRTZWU0NnNk1HUFd6QmtRTFRsbE05OWVU?= =?utf-8?B?ZGdZNzA0T3RUKzB0OVdWeHNOcnI1ZlUrOEN5OGJkYzhEMVEva2g1UT09?= X-MS-Exchange-CrossTenant-Network-Message-Id: 04be40d0-9d7a-4a8b-d355-08de54480f17 X-MS-Exchange-CrossTenant-AuthSource: MW4PR11MB8289.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jan 2026 15:09:20.4807 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: tt4m/EtHokUxUdTlPbkSUzw1eZiFfFFt0llkz3Fzr4wizJW02YU25RJXMvs7YIhUIdeyB2BnBRPjiYV0OUi04w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR11MB9461 X-OriginatorOrg: intel.com Sorry for my delayed response. Appreciated for all your suggestions David. My thoughts inlined for your kind consideration. On 1/14/2026 7:13 PM, David Hildenbrand (Red Hat) wrote: >>> >>> This is nasty. I would wish we could just leave that code path alone. >>> >>> In particular: I am 99% sure that we never ever run into this case in >>> practice. >>> >>> E.g., on x86, we can have up to 2 GiB memory blocks. But the memmap of >>> that is 64/4096*2GiB == 32 MB ... and a memory section is 128 MiB. >>> >>> >>> As commented on patch #1, we should drop the set_zone_contiguous() in >>> this function either way and let online_pages() deal with it. >>> >>> We just have to make sure that we don't create some inconsistencies by >>> doing that. >>> >>> Can you double-check? > > I thought about this some more, and it's all a bit nasty. We have to > get this right. > > Losing the optimization for memmap_on_memory users indicates that we > are doing the wrong thing. > > You could introduce the set_zone_contiguous() in this patch here. But > then, I think instead of > > +    /* > +     * If the allocated memmap pages are not in a full section, keep the > +     * contiguous state as ZONE_CONTIG_NO. > +     */ > +    if (IS_ALIGNED(end_pfn, PAGES_PER_SECTION)) > +        new_contiguous_state = zone_contig_state_after_growing(zone, > +                                pfn, nr_pages); > + > > We'd actually unconditionally have to do that, no? > That's a great idea! Probably we need to move the adjust_present_page_count right after mhp_init_memmap_on_memory to keep the present_pages in sync. When the zone is contiguous previously, there probably 2 situations: 1. If new added range is at the start of the zone, then after mhp_init_memmap_on_memory, the zone contiguous will be false at fast path. It should be expected as long as the adjust_present_page_count was called before the online_pages, so zone_contig_state_after_growing in online_pages will return ZONE_CONTIG_MAYBE, which is expected. Then the set_zone_contiguous in online_pages will get correct result. 2. If new added range is at the end of the zone, then the zone_contig_state_after_growing will return ZONE_CONTIG_YES or ZONE_CONTIG_NO, regardless of the memory section online or not. When the contiguous check comes into the online_pages, it will follow the fast path and get the correct contiguous state. When the zone is not contiguous previously, in any case the new zone contiguous state will be false in mhp_init_memmap_on_memory, because either the nr_vmemmap_pages can not fill the hole or the memory section is not online. If we update the present_pages correctly, then in online_pages, the zone_contig_state_after_growing could have the chance to return ZONE_CONTIG_MAYBE, and since all memory sections are onlined, the set_zone_contiguous will get the correct result. I am not sure if you'd like to consider another option: could we encapsulate the mhp_init_memmap_on_memory and online_pages into one function eg. online_memory_block_pages, and offline_memory_block_pages correspondingly as well, in the memory_hotplug.c. So we can check the zone contiguous state as the whole for the new added range. int online_memory_block_pages(unsigned long start_pfn, unsigned long nr_pages,             unsigned long nr_vmemmap_pages, struct zone *zone,             struct memory_group *group) {     bool contiguous = zone->contiguous;     enum zone_contig_state new_contiguous_state;     int ret;     /*      * Calculate the new zone contig state before move_pfn_range_to_zone()      * sets the zone temporarily to non-contiguous.      */     new_contiguous_state = zone_contig_state_after_growing(zone, start_pfn,                                 nr_pages);     if (nr_vmemmap_pages) {         ret = mhp_init_memmap_on_memory(start_pfn, nr_vmemmap_pages,                         zone);         if (ret)             goto restore_zone_contig;     }     ret = online_pages(start_pfn + nr_vmemmap_pages,                nr_pages - nr_vmemmap_pages, zone, group);     if (ret) {         if (nr_vmemmap_pages)             mhp_deinit_memmap_on_memory(start_pfn, nr_vmemmap_pages);         goto restore_zone_contig;     }     /*      * Account once onlining succeeded. If the zone was unpopulated, it is      * now already properly populated.      */     if (nr_vmemmap_pages)         adjust_present_page_count(pfn_to_page(start_pfn), mem->group,                       nr_vmemmap_pages);     /*      * Now that the ranges are indicated as online, check whether the whole      * zone is contiguous.      */     set_zone_contiguous(zone, new_contiguous_state);     return 0; restore_zone_contig:     zone->contiguous = contiguous;     return ret; } I am OK with either way, please let me know your preference. Thanks.