From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.12]) (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 3971428727A for ; Tue, 2 Dec 2025 10:42:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=192.198.163.12 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764672121; cv=fail; b=h5sIUzjsnT9lQ6ixvLbf1VT8fl6vKKouHlTjT5g6G7djbiUgjE4yguT1ONOLuSLa2tq7a9Ip2Py2U7o7jpnnbbyWt5EQR5O0anEX0s7zhEfrLy6XzcAxHTRcZn4VhmmCLOiIexAGlkSDbcPtxzfNt1JCHfRyEUs3QgG/2lSgx/k= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764672121; c=relaxed/simple; bh=xbJKnORX8O22CeO7maJhWIH2N4eyhgVNkNA4V+zUJVM=; h=Message-ID:Date:Subject:To:CC:References:From:In-Reply-To: Content-Type:MIME-Version; b=MP7Uk36YaQFKJtDu7wTg4wzcHJaeuwPKXL6oJI5uN49YV/wqxxlHcSZUi6t1BAMwCM4gWiU6xA2qH42ckbSCNGJegAbR7W7TWNUiaRZ/10kzGgzEoOeC5kyfR036QTjCy1mhIqWX3jTm8fDHdRLz5b5vTJDXBcsgqQwcl1rjWt0= 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=hLhzNd5+; arc=fail smtp.client-ip=192.198.163.12 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="hLhzNd5+" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1764672120; x=1796208120; h=message-id:date:subject:to:cc:references:from: in-reply-to:content-transfer-encoding:mime-version; bh=xbJKnORX8O22CeO7maJhWIH2N4eyhgVNkNA4V+zUJVM=; b=hLhzNd5+4EP0LEV9cFhMH+kaLzhsAvYKKSCMBmDqn2rJJetBuVuIgBpH /LwWbL/uGJ1NGShWn9O+w3ei7YjE9itMFRYRHdN7RurkZ0wx7GeVehaI5 RVKwSL6KxDTNYyTR/BfC92xZnRPAe5E8aqWU3mDjGNe0Y34N9f4zv9GW5 L5U4hIpJZPlLru7R0pcCtSwLKzjLYt5F9J3Eij4O3cqLVQ4kqD7W2tCkc tTyC7uJrTa0eFKCyvlT4ZndshLDefhgE8s8hpqZJTAkN6pxAxBraatfvY VKKboFq4dNp2QioCjibfrYgVa25qsirQEb+QUE44Y+aKCLX3JV/gYjbG9 g==; X-CSE-ConnectionGUID: ty1g0qmSQ+WU1z3B3a9d6A== X-CSE-MsgGUID: vuvTS354QLKNnQnjdIwq9A== X-IronPort-AV: E=McAfee;i="6800,10657,11630"; a="70482355" X-IronPort-AV: E=Sophos;i="6.20,242,1758610800"; d="scan'208";a="70482355" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Dec 2025 02:41:59 -0800 X-CSE-ConnectionGUID: m8dIQnsETqKoPAzRPVTWNQ== X-CSE-MsgGUID: QsgFsgpcSjqhfXrEl9shQA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.20,242,1758610800"; d="scan'208";a="194333695" Received: from orsmsx901.amr.corp.intel.com ([10.22.229.23]) by orviesa007.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Dec 2025 02:41:59 -0800 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Tue, 2 Dec 2025 02:41:58 -0800 Received: from ORSEDG901.ED.cps.intel.com (10.7.248.11) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29 via Frontend Transport; Tue, 2 Dec 2025 02:41:58 -0800 Received: from CH5PR02CU005.outbound.protection.outlook.com (40.107.200.17) by edgegateway.intel.com (134.134.137.111) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Tue, 2 Dec 2025 02:41:58 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ZbBELpKXvHr6CpNsoV/t53kBuSipObhC9aV9YRKP5ZQ5xiUbzWlL+k+bHxyIaXkDmeZ5MlFN8Y1xnekjweAsHYozoK07TShpCAmqM73aafNO3VlPK6pBlD/ru+K4vTZcX+etkErRJL18HehtC6Alg0XAGdSHkszoBSk3HhwmX6kJJJUTs3O+cD1J7zgKsNTHbQtTUcpubWw3LxkA1T0mztbIynIoETmazU1TAfffG211gB/Nm8JGVSTnTY0VOJaGQbhi7IRVbexYhWdfJCBFPzCJmY9bWl1+eJg5wEAnnGaDWGxYrtq8gKPNLKgoA+V183lChc2ERtPEKcita6z3bA== 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=tg9S48xZjz+jXtjZ9wBl9wW3cL7HmLMqNafxgvVXScE=; b=yBMiOEZ7zV8u1XvD/zYHgMXm0+BJ1pRc9CVPPo7dAcPB0GzAFvYh0Ixxo1xIMn3vNx9idqrM6sgq8IVEG0hUk3jrTnofbTV5a/Q3Qi91QJmWimgZOWhoxkWn1fg45kK0R2MEcTltkuy+njSGjZ+D8rzZpSBkj42OLyaYhaJsO3dEtBt8iv26ycq5oes7+xWolLR66x8W7tkDfZiKZuCwzVTufgdq1x6ELz3DdJjgLgRFtl+fHhsNyEEejDVlx1H+OE/K1DTKhdgximJwlPPrD1Eh7M7WYOm1xa7wNhiYPe3Uy9z3ovNdiEdC/ubR0sw7GFT2bo6DLO1EgphCVU9TQg== 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 PH7PR11MB8035.namprd11.prod.outlook.com (2603:10b6:510:245::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9366.17; Tue, 2 Dec 2025 10:41:51 +0000 Received: from MW4PR11MB8289.namprd11.prod.outlook.com ([fe80::d626:a4f8:c029:5022]) by MW4PR11MB8289.namprd11.prod.outlook.com ([fe80::d626:a4f8:c029:5022%6]) with mapi id 15.20.9388.003; Tue, 2 Dec 2025 10:41:50 +0000 Message-ID: <7761ab95-4cf4-4a6f-a979-ce862ad97f85@intel.com> Date: Tue, 2 Dec 2025 18:41:40 +0800 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v4] 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: <20251201132216.1636924-1-tianyou.li@intel.com> <7633c77b-44eb-41f0-9c3a-1e5034b594e3@kernel.org> <0d9da08d-4293-4dbd-bf59-999488d73763@intel.com> <2901df56-bf0c-4d08-b043-eca294b981f9@kernel.org> Content-Language: en-US From: "Li, Tianyou" In-Reply-To: <2901df56-bf0c-4d08-b043-eca294b981f9@kernel.org> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8bit X-ClientProxiedBy: SI2PR01CA0051.apcprd01.prod.exchangelabs.com (2603:1096:4:193::6) To PH8PR11MB8286.namprd11.prod.outlook.com (2603:10b6:510:1c6::15) 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_|PH7PR11MB8035:EE_ X-MS-Office365-Filtering-Correlation-Id: bd7873ae-1619-4f1c-3081-08de318f6603 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?B?VFFMVUtiSXdJNGFVMG9vRDJoMmdTWHdLcElLcmNHZ2Fwb3pKK3g0bzRnTTdK?= =?utf-8?B?T1B4NWx6blJJUitwTTd5dWZCQVY1WWR4WGdEbHdlNE0zQXNSbFUzdmRrdTY4?= =?utf-8?B?bU9IZXBCZmYwZ05NZVNuODlRaVlTRU9TcHBXeW9JK1hOK1JwNXcvS3I1RXEx?= =?utf-8?B?OGRVR1VVcWlZQk81cXc1RXQ3RVNseXlYRW9QelJqMjkwRzJmWEk1NTFQNlEz?= =?utf-8?B?VlVGSlhGVE5TMWNNZmd2V2hWL1ZNbmt0TFdEUUx0ODQrTTR5TGhFSGRyWFpq?= =?utf-8?B?bU5acE16aTZIZTRkVTd3MitMM2JvbGMrRUM1ZWV5bFRlRHNTTWpwK2VMWjIw?= =?utf-8?B?cFhyR2h6SGUwTjlFcWV5VFJoZmEwNU5DMFZTblllK1BtMVBxOWFjQXc3T251?= =?utf-8?B?cHpJQkZXVGFjdHJZSE5xZHZUT2NSSUpGRU5jeUlITDZuTklna1cwRERiODZQ?= =?utf-8?B?UDBFVDlqa1pOYVl6WXNQNCs5ZENXbXkrVG9KVjcybDZkTHZRODV3N2FyTnlq?= =?utf-8?B?MFJWeWpiVUJaajZBN05YeHcxSVdCajh2Vkp5Tk1PNEVzdklZLzdrL2FETVBS?= =?utf-8?B?VGp0YlJpZTU5RWpjQ25DNXY4TmRZRWc4VnMxYnEwOVcyeEhmZmhoRklLci9Q?= =?utf-8?B?MG9MV1I1UEJMeXoveVRzYXFFRlNZUllIZHlVYmNyZjhRaXBFbkNDUCt4VXRj?= =?utf-8?B?T1U5bGJSQWZidlZZNElvRFhtVDNTRUd1WWVmblFmQ0RKSytsVm15U0E5T1Q0?= =?utf-8?B?eDBQOTNMbEZFYUZkZ1BDNG01Z3JEamJUMWw4OHBGMTI4ZDU0eEVmV3piaWNW?= =?utf-8?B?MG9UaE9aQjRzNy9oRUdmWUxnTkN3bGJQQVFIQ1VsUHRvUVo4NWhVUmZJb1Bz?= =?utf-8?B?czdpOXRScFJwSzVoT0lhTDJPNWI3SCtrcmtaaUgyTElIQ3hNeTBBS2ZmUXRh?= =?utf-8?B?emhwUWpmeTB1b2NWcXpDWk1RZlIxcnNRUUVSVVZBZHkrS0g5cUFTWVJva0FZ?= =?utf-8?B?dU50SVEva3JFSlpiREIrMFlPZmhzaXhNbWwwUzBhRmFDUzNlT0xGQkRjU1V2?= =?utf-8?B?UkFzRm1Yc2xaQldDclQ3dS9aZUswSDhCWE1JNm4vQUphc2Z0Rk1tUTBpY3J6?= =?utf-8?B?L2t1QkhnQng1eXdWR2M1YmxTb3I0WXNKOTkrdGpWRlRrbmE5QzkvdTNCcVR4?= =?utf-8?B?L2R2Y0FWajJKYkZXS1lLeHJtV2NQcE5JdWdKZGMwQ0lKY2VoNDhFSGs2Sm9N?= =?utf-8?B?cWkxN0p3TFZJYk9mN0lQTFdSeXJzeDhOb3l0VnJmMjVTZXBiRzRvZkdmelVn?= =?utf-8?B?U1dodU44ek9hb21FSU5FR1YxQllMMExNYVBNWUpoYytwaDFSQk81N2hvREIw?= =?utf-8?B?OG9VaTlQNklqdmFCVkVpOEVoa2JYa3dLdFJIaytzUGU5bG9uSkQvUnJHYWQ4?= =?utf-8?B?NEszR1pQTFAzQWlmS2FnZitFYll2eFJiRzZoSmZvTUlGNU5leFJadnNaRkxz?= =?utf-8?B?Uk8rZlVodDdkOEsxQW5HdHFINHVvRXFkbXdZVzBDWDBDclNheUE1UzQyaVdI?= =?utf-8?B?eUdqNERzd1NTVS8vOTdpYVlBLzJ1MEI2OTIxVjhzT0JZZGhsL1hva0lST2di?= =?utf-8?B?WFk3TUtxR3ZndEFuVlFLMlVjTmpxMXNjT2VlcG1vb3YrY3NrOVk2QVpKNXph?= =?utf-8?B?VUxkVFBNR0lLVzY0M2w1YWpiYXJHUnpkYXF3RlgzZWp6M0FlVTFZWHYyZDl6?= =?utf-8?B?cmNPYkU2anowVnovUmd0Zi9kTjdlTkZiQ1RUTzlselc0WFA5MmgyRHRGOWNS?= =?utf-8?B?eUdKNDN2WVlmd1VBRFRTc0RWV0V2Wjd3eUc3SnBTQWVlZWpsVnk5Vk05dkVi?= =?utf-8?B?U0wyaEltdHY5M2VKOFYrTUtIRXByOG9janEvbld5dHo1YzFJSDBPT3BEeHBX?= =?utf-8?Q?M6SRJgE33GOaTCITdGN/IZQ7/ddX+6YF?= 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)(366016)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?NVpmekV2MEFLRFl6cGtiUFQ3WGl5OS9FazIwaHhNc2VwVW04amJDN1drd1VD?= =?utf-8?B?WW1XL2ROVnBHTTdMYUhGcm5MWmtiWGxWZkcyQVg5Z0FsOW5kZ3M3MGxYVmxV?= =?utf-8?B?STFOSEpYL0M1WlZqd211R3VNYi9rSlhKQTUrRVVRMGg3dk01V2JJbVU3azNi?= =?utf-8?B?ekpZMUJ3WlZvUzRoV3ZPeGdLK0YySGhnejhXUGtMNkZQclkzWS9NdjAybG9S?= =?utf-8?B?SXREdDQ0bml5TWdrelhEbkRJVWo4VFZGNVNrZnhTSFVpMkxUeUl2bEw0Y3FS?= =?utf-8?B?K05iV1dxekhqeG9sZXYyeXc4aXBEcEpIY2dwNlIvWnRMbER4d1RVVjFNWUgv?= =?utf-8?B?VlFHMmxIT0RFWC83Y0dWeWtDKzV5SWtaNEJOL0p3MFNReWMrTkhqdjdoUENk?= =?utf-8?B?cjFNT2NiR2xIbG1JcEtXV1ZJTG01Q1drTURwMVJTZ01DKy9pV1lQZDNZckd3?= =?utf-8?B?bFZWV1BLdjBhMXJXNlhWd0VKU01PZ3ZVeFJ1N1JiU0QvdlhGMEJweDV1K2Iy?= =?utf-8?B?QjBIQVBabU83WVdQYkptNVIySjlYMkRIQm10NzJRYzkwUm5ZeHVzcG1JV3pF?= =?utf-8?B?bWV5bEljcFh0NU16d2UwdW5EeDdMalpQREZGTzAxeU9GSWQwSnJPVXFXVVRL?= =?utf-8?B?ZytvS0lqaE8vOTBZOFRoVTVGeHl3ZUIzZEh1MXlpdDhzQXB2OXdyMGh2NjJh?= =?utf-8?B?U3R3ZUFHTkFxdEJiWFNyM1ZYTUgvaUYrMkl6Nzh5TTl6dW9YNklDRzFIMWJu?= =?utf-8?B?ak1qN3JkR0lVcjdISzIxcHFJakVYRXZIZTlXYVlQWUNuVkRSMW5LOHczWGx0?= =?utf-8?B?SFZHLzJWYW9QSWFZOFpPUTVVRHNqTzJFVzQ0cUx5WE5Ma01GZzI5OFJTZDlG?= =?utf-8?B?TnNRREREbTNtUkFEblJEQW1ZaVkxNnVJNWNqR2puYTBYNWJVM0lBYkRIczhY?= =?utf-8?B?c0IwaVdmemQ0dmRvRi9rbjdkcWtTSVZiMEh3QmRPWXBaQmNSOXRqOHhhamlF?= =?utf-8?B?eUJObTRTTVViN1Bva1hTMzV2UlVhQjJtdWpJbzgyOE1pWEFQNVdOVG9RbDha?= =?utf-8?B?WWh3RDlnZTFTdHRMVllBOGE3RkdGdzZBYjF6UkIvY2EwMjhpODdmTGxBYXRB?= =?utf-8?B?ck9pTXBZeldQVnY1U1dSTFFFY1VGRzA3NjZTRkZHQWUxMlUwM0xXc2lMUE5P?= =?utf-8?B?bzBhaWlUdk9iMlBrK2I1Z1htNXVQODVRbU54NFNyT1ovWVB4YTIxTVdpVjYz?= =?utf-8?B?dGxpZm5wdU9oU3BDajJQNU56eEhrclF2ZVlhTXBlaC8raXAxbVhlSG1uMGcw?= =?utf-8?B?bmpWeFc0R2cwZEJsOExRSTZ2RHFEV0liK0Q2NnA1TEc3U3hZRHJSbXJUVlFi?= =?utf-8?B?Yi82K2JzQnJSNVNBbEZFM084em83YUltSzIvakYwdTU2QnFOSFIxWDMxZzlv?= =?utf-8?B?TE1KSkZIejBmeStPNU9iRXFpaDlUdENNaXBob2NyTGM1b0R3ZUZZRjJpU0RT?= =?utf-8?B?eEtaQmphcTM1dHcwTmxjMzdCSVdJbFI5RzgyM1FIaWFqNnQ2SzRCUm9SdC9X?= =?utf-8?B?R09zUjljQ3FhRkNUb2FUd2FnYUZ0ZTJ6SzNYMzdrRDd3ME9JMjhFMHZxOGZR?= =?utf-8?B?M3B1cEtiQk1lSFVhZ1dmVEdtaE9WK3g4Y1o3SFVnZ0t4cFluRXNtS2hVSmlq?= =?utf-8?B?UHhUaXZUYXJ1Y0xNUnZnMEdOejZkZVd5KzVYRzNYd2k1RVJnTzhJNHJBWWo3?= =?utf-8?B?RDZPb1RUSXpQYWNOU2RUQWZJYVdRMDhId0VXbWNUTmJkQm4waUlobTZTdTBv?= =?utf-8?B?R2pRdS9vcFYwZC9oWHJ2clVGTm1URWprRmJwWm9IcVZFTVErKzlpQjBTVDBu?= =?utf-8?B?VDRScG05Z1dMSmEwc3F5YmtHYjJTY1BHQXB0YStQRXcxTzFZcmMvalZseHp3?= =?utf-8?B?Y3pvZVgyMjhpa3p5b3JtNFJiaFFicHVoU2s4ZXRqL0RFNnJ0NXcvRXNIaVA4?= =?utf-8?B?SVFOWGlSMVN4c0NzS1U2WVNyNG11MytBRFFvRVk5WTlHK2VhbndsMlNVaFpO?= =?utf-8?B?RWMzVzJTRVlPYk54VWhyY3JYajFwTWFzaUdzaUNrcmpONm45OHFQL1FUWXZP?= =?utf-8?Q?GTbvKeM6J0qKTGytzI0qiKaJf?= X-MS-Exchange-CrossTenant-Network-Message-Id: bd7873ae-1619-4f1c-3081-08de318f6603 X-MS-Exchange-CrossTenant-AuthSource: PH8PR11MB8286.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Dec 2025 10:41:50.7360 (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: 9RBTcvPRGYzv0PkJg6R/VZE1AAIUr0ce57OENlT04iZ+Ty2niQGBNkTAv19aS/AcW66wq0FN7cXRbj8TesKARw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB8035 X-OriginatorOrg: intel.com On 12/2/2025 6:24 PM, David Hildenbrand (Red Hat) wrote: >>>> +}; >>> >>> I don't like that the defines don't match the enum name (zone_c... vs. >>> CONT... ). >>> >>> Essentially you want a "yes / no / maybe" tristate. I don't think we >>> have an existing type for that, unfortunately. >>> >>> enum zone_contig_state { >>>      ZONE_CONTIG_YES, >>>      ZONE_CONTIG_NO, >>>      ZONE_CONTIG_MAYBE, >>> }; >>> >>> Maybe someone reading along has a better idea. >>> >> >> I agree it's better. Will wait for a day or two to make the change. >> > > Yes, good idea. No needs to rush at this point because the merge > window just opened up. > Got it. Allow me to take one more day then complete the patch v5 with sufficient testing. >> >>>> + >>>> +void set_zone_contiguous(struct zone *zone, enum >>>> zone_contiguous_state state); >>>>    bool pfn_range_intersects_zones(int nid, unsigned long start_pfn, >>>>                   unsigned long nr_pages); >>>>    diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c >>>> index 0be83039c3b5..b74e558ce822 100644 >>>> --- a/mm/memory_hotplug.c >>>> +++ b/mm/memory_hotplug.c >>>> @@ -544,6 +544,32 @@ static void update_pgdat_span(struct pglist_data >>>> *pgdat) >>>>        pgdat->node_spanned_pages = node_end_pfn - node_start_pfn; >>>>    } >>>>    +static enum zone_contiguous_state __meminit >>>> clear_zone_contiguous_for_shrinking( >>>> +        struct zone *zone, unsigned long start_pfn, unsigned long >>>> nr_pages) >>>> +{ >>>> +    const unsigned long end_pfn = start_pfn + nr_pages; >>>> +    enum zone_contiguous_state result = CONTIGUOUS_UNDETERMINED; >>>> + >>>> +    /* >>>> +     * If the removed pfn range inside the original zone span, the >>>> contiguous >>>> +     * property is surely false. >>>> +     */ >>>> +    if (start_pfn > zone->zone_start_pfn && end_pfn < >>>> zone_end_pfn(zone)) >>>> +        result = CONTIGUOUS_DEFINITELY_NOT; >>>> + >>>> +    /* >>>> +     * If the removed pfn range is at the beginning or end of the >>>> +     * original zone span, the contiguous property is preserved when >>>> +     * the original zone is contiguous. >>>> +     */ >>>> +    else if (start_pfn == zone->zone_start_pfn || end_pfn == >>>> zone_end_pfn(zone)) >>>> +        result = zone->contiguous ? >>>> +            CONTIGUOUS_DEFINITELY : CONTIGUOUS_UNDETERMINED; >>>> + >>> >>> See my comment below on how to make this readable. >>> >>>> +    clear_zone_contiguous(zone); >>>> +    return result; >>>> +} >>>> + >>>>    void remove_pfn_range_from_zone(struct zone *zone, >>>>                          unsigned long start_pfn, >>>>                          unsigned long nr_pages) >>>> @@ -551,6 +577,7 @@ void remove_pfn_range_from_zone(struct zone *zone, >>>>        const unsigned long end_pfn = start_pfn + nr_pages; >>>>        struct pglist_data *pgdat = zone->zone_pgdat; >>>>        unsigned long pfn, cur_nr_pages; >>>> +    enum zone_contiguous_state contiguous_state = >>>> CONTIGUOUS_UNDETERMINED; >>>>          /* Poison struct pages because they are now uninitialized >>>> again. */ >>>>        for (pfn = start_pfn; pfn < end_pfn; pfn += cur_nr_pages) { >>>> @@ -571,12 +598,13 @@ void remove_pfn_range_from_zone(struct zone >>>> *zone, >>>>        if (zone_is_zone_device(zone)) >>>>            return; >>>>    -    clear_zone_contiguous(zone); >>>> +    contiguous_state = clear_zone_contiguous_for_shrinking( >>>> +                zone, start_pfn, nr_pages); >>> >>> Reading this again, I wonder whether it would be nicer to have >>> something like: >>> >>> new_contig_state = zone_contig_state_after_shrinking(); >>> clear_zone_contiguous(zone); >>> >>> or sth like that. Similar for the growing case. >>> >> >> In both shrinking and growing case, separate the clear_zone_contiguous >> from the logic of zone state check, right? > > Yes, I think that makes it look a bit nicer. > Thanks for the confirmation David. Noted and will do. Thanks.