From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from BN1PR04CU002.outbound.protection.outlook.com (mail-eastus2azon11010002.outbound.protection.outlook.com [52.101.56.2]) (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 B1EED1DFFB for ; Sat, 1 Aug 2026 23:49:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.56.2 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785628162; cv=fail; b=WX4GpJx53rysQw7gz8/22dw2RYwlsDKBlLhpxY5r81nDi92+AaYSFjKLU7cPH9+F3dFw/TpqVwhmaZlbvR6FfBhruOHknQfyLlSuK5hETL+eBtltAMWesi0KrGM06v5HD81QwwgyXj5896aAQcdtodXcgq6dQwO2Wnkpni4DAEs= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785628162; c=relaxed/simple; bh=Qg2OB5vRTj42vFWgFSsRzNt0hjq3HaJsY8q+NJZCpAE=; h=Content-Type:Date:Message-Id:Subject:Cc:To:From:References: In-Reply-To:MIME-Version; b=QdbENCj+LZe18NX+pSZ6gXPgIBvquk1V56V4fHargeEnLVLSIY3Q9aaJMewmrruXjbgMuNlTcpe39JeOgMZvsf6DBCFSADKPVvp3VFtu52jZP6VoHKWBY9czzX8mHtmHFCSbUkCDKHX2qDbCxyvNzfpuKAPAbZo8mykJXwQvvHo= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=pc+afZLV; arc=fail smtp.client-ip=52.101.56.2 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="pc+afZLV" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YZfq3lL/EFyEjwA7FA9Ng8mI4EWDDkOoBTVgG0+soqsd9vZx5ZWtvwS9tz/Em81KCWVAdBxgSg2338OYXXhGIbwTrizo6y9LDeIHdpEa5+dTKUJMxweZJ5/eFFUtjdlCG0QYzpvza820Y0Z3h6UloLtTq2/XvAqc1CrBviRmaWOJliIAr1kjGpBrw12FuyRnC/teZkc4z2DVVTNZ6H/RxuoIEG4aciKttfARx3Ccooii7g6myGYUkGNbqm5wSkNV00jEqF1XSRZav8zI1ZxqvqyQFjA7MY52Qwepy5ipYESPViaHyOPfzBjfmPFirgyyOKswmnQa0Bi49e9pyfcc+A== 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=30xn7m+YWLcrrPLRcpfSBfFygOd84hTKO+ow1FprtnQ=; b=FEXS5/BSGJiMcDLte5JzcChZpYVb/KmmmiiXT5z4jmbUrf7tFrr4wdBLpIqa1+7FnC6JGqHCRV+D9lpXfTH2SrkD9qefn8PHVnHfaDGuYL0eRdn/gWwKul56PH3ebxsM9lu1DAhpdxuYVV/CsDXjImOVzs71hiUfq0jmtGtx7BCuSdBlsTxVok+RrlEJ9e+zwbYmtblYPWMJdiev7lKhJYBV6ubaZNMkRx/NLLtYx6TlaBLbaEQF9l6O8Vg6VJZVGjB1kXWmf3k5t8CMtPgg36nXMyyVgMEb8g6c090czvhi4U5eTvTBuHeKo7SoVhReYLog11AhRSnetgqd7GajAg== 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=30xn7m+YWLcrrPLRcpfSBfFygOd84hTKO+ow1FprtnQ=; b=pc+afZLVCFnDlLWmw3rwHSfqRQEDK3ZPX0/7M480pPjGvT8LxbpYLTfgfzncB75OajS4OyAauz2Cu4rs8lcbXeigGc+Z0Iw7puWRHPibtINiwUJKnceFk+nejNHIxo3eFSk/dzSavATCyQUfCQD5UHGfxnzH1G0n3+bpfCD/73JrmktVkhWZx697MfJaPRP+2A9O2pErKjGd1h3Ia9ONAgM8WowW76hbtmeZ4s0Cp7QqZn6+LlmCPP2JfFEv/xNU1/thWvu/4EYRYR92NfcJu8rf9LALAK53lOSVBWm/+sRE8mqcSWmD38cj/y1GzcHyvYUf/aIDuUTqs/Tb2j//hw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from IA0PR12MB8374.namprd12.prod.outlook.com (2603:10b6:208:40e::7) by MW4PR12MB7467.namprd12.prod.outlook.com (2603:10b6:303:212::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.270.17; Sat, 1 Aug 2026 23:49:16 +0000 Received: from IA0PR12MB8374.namprd12.prod.outlook.com ([fe80::d85f:4c87:ae84:3f16]) by IA0PR12MB8374.namprd12.prod.outlook.com ([fe80::d85f:4c87:ae84:3f16%5]) with mapi id 15.21.0270.016; Sat, 1 Aug 2026 23:49:15 +0000 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=UTF-8 Date: Sat, 01 Aug 2026 19:49:11 -0400 Message-Id: Subject: Re: [PATCH RFC 01/14] mm/zsmalloc: replace PG_private with pointer comparison Cc: "David Hildenbrand" , "Matthew Wilcox (Oracle)" , "Andrew Morton" , "Muchun Song" , "Lorenzo Stoakes" , "Liam R. Howlett" , "Vlastimil Babka" , "Mike Rapoport" , "Suren Baghdasaryan" , "Michal Hocko" , "Baolin Wang" , "Nico Pache" , "Ryan Roberts" , "Dev Jain" , "Barry Song" , "Lance Yang" , "Gregory Price" , "Ying Huang" , "Alistair Popple" , "Johannes Weiner" , "Qi Zheng" , "Shakeel Butt" , "Kairui Song" , , , "Minchan Kim" , "Sergey Senozhatsky" To: "Usama Arif" From: "Zi Yan" X-Mailer: aerc 0.21.0 References: <20260731-remove-pg_private-v1-1-142c97ba3562@nvidia.com> <20260801141259.627022-1-usama.arif@linux.dev> In-Reply-To: <20260801141259.627022-1-usama.arif@linux.dev> X-ClientProxiedBy: CYZPR02CA0021.namprd02.prod.outlook.com (2603:10b6:930:a1::18) To IA0PR12MB8374.namprd12.prod.outlook.com (2603:10b6:208:40e::7) 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: IA0PR12MB8374:EE_|MW4PR12MB7467:EE_ X-MS-Office365-Filtering-Correlation-Id: bb8b7019-c806-4af3-84f2-08def0277ef1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024|23010399003|4143699003|10067099003|56012099006|11063799006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: 3TT4/zYVPX8Q4JNTlm9h44A02F2jcV1W3V639OUf+Cldam2UNdvR5er4uwIThTwvlZh+YDf2u88aP0n8e8hVJz5vGUnrMYNcEkVm/VsEcdUiSQm4m/6LQMs9lO4NhgY9Wiv+q225vVk2NcPJyfb1XpUdF265sOTBcNE5RRHWNkOg+PXq9VZTFl5NxKmc5imPPjaLd0TGwtwNCGsMlME0BuC/p13/gecloGPnl0jnjKnWo1MYd6xBeg7psHoqu/3IFEWKHkO/JZIHuTUR9R3IId2sOAi5RVcUr5YGJXvOOHOs3JMq+x5TXv41S5yc+XvKvu+LJ3qhCPt0R85ut5pne73WeyJrAzWFQ3ZVZomOFoj6Or/Gb2U/7Q3ZsjXhT1+JUlDAJZGDJjf0gdUGJJXDHti9C1guWveKwQbzeAPZo55E06OvlSW6pVe7P2vCoMWeIaAjog1bFhte3qQDI4KVpssvQ/kd/Aes6qkIH7dI7+iggk5jSX2BBMoQ2YdO6wqxX+/O2cXL/jhWFqyoLb8V6W+IUrUVt6femqm6EZFbHhF31aTlrfN2t0/mNF+gRHqZGBb2THxXtH3PrYuBHwpI3qjefS+LPw9OEcJvPBhBYJuCSyF5Z2q/ON7runu6p9QcgMjmrJ4ptUe6bAOvp3a28pCG2AWp+ysBFCOzy+pz+Vg= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:IA0PR12MB8374.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(23010399003)(4143699003)(10067099003)(56012099006)(11063799006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?SnVRSjNvd1JWeENEYW5RQ1FHYXhYVHRvbzB1enRFd0NFUW4wV1pOTTA0cXNi?= =?utf-8?B?L0xPaENpdXRUUjZUZkszb0owejdpc2l0a3FSVUNrT3hDanUyQ3dOeGJsNTV1?= =?utf-8?B?ejFjTTNvS3Z0aGZmRkEzelhWQWhUSGpjM1FnekdpTXQ0OFZXa3UrSkxzbklo?= =?utf-8?B?K2srcytzcmdDeXB0M2lMWXBPL0w0THByRlhtWHEybXpiM090SUpUSzRMTjA2?= =?utf-8?B?VEVqbEp5cHU5d2V2Yk5xaGJWbjZlRFR2cWIwUFFLUXdDNE4rUzFydVdTazIz?= =?utf-8?B?azZySUtFZ0ZIUUdtY1RnSG80TFRYQndpR0pHYUpiMEdRKytCNTVqUzB5em1E?= =?utf-8?B?R2ZjaHJ4Ujl6Sm56aEpXRERXampFVHB0c1NpOHpLRzFoNTVWZlBDdDRMQ244?= =?utf-8?B?RGlXVWdvdkpwOGVXMWxKMVdKYVFZRHNvOUloaXFZMm1qN2tOTEFrdUhjL29V?= =?utf-8?B?Uk9JaEZrN0o0NktHV29WMEtCd3cwcDRDcnZBcG11WDdyOHgwNkJhbjlKRGRQ?= =?utf-8?B?d2V0Rkp0MXQ4cVZZdTZKZXYxTFZGamxiaDlzZE42VE53YXhSaUxwNGYzYVhp?= =?utf-8?B?R2pxSENtTHBJLzQ4cXFEZCtuNU5UZ2VwOGtVc2FtRVVucUhqYVk3NTVlczQ4?= =?utf-8?B?R21HVFNMaFVXVVAwTVhqa3N5ayszNEFJeVBoYUNSZ0FkcitrbUFxejVCakJk?= =?utf-8?B?UDZjeU92N1JIRUduWW02SW1yK2JsRjh5SDJGNFpWUTQ2am51VzRmRzN1cVJx?= =?utf-8?B?WWdkM3RyUUJuNmQySGR6ZjNpeHRPTU84YlBlK2xCb05hdnZCaC9PWGVnMjR1?= =?utf-8?B?VUtJVCswZ3J1UWQ0bW1hTldZWHR0eGN1ZktLMXJJcGlGUi9YRUdMa0J1Zy9R?= =?utf-8?B?Ylk0c3FTeldhODFMWFVzdHNCVTAxY0FjbGNYZlNkRE9qMVcwc3JwS1lsZldO?= =?utf-8?B?MkVRN2NPSFhLYmZQZ2l6M0ZWbjFWNFpOeWhWUkVGaDJSb0p5TjIzTUVrTHYx?= =?utf-8?B?QmFpc2l4cENoeEhIcENzWE5TRXR0UlB6ZzdnZGNTUGwrRDdYNW5ENHpabkhl?= =?utf-8?B?VWhqcFdHbUtBV1FWcWJIMzJDUW9vN3B1WGM4cFNqMUF4dDVwVnYwK0tkcFdr?= =?utf-8?B?Q0pXMlg5Y2tMR09RM1piVmd0c01WanFJQjUxalgzVUhudnVyOFZPazBSMGJ0?= =?utf-8?B?M1hMczE4NXF0UVVEUzlxM1NNbWdaOVVnU1RMM0RLZ2xlWGYyWUxTRG4xeE1p?= =?utf-8?B?Y0c1V3pqRnNETXNRUmhHQnBmVHArOFkrNWxhK3pMaUdsbmxyU1lXT0w1ZEhS?= =?utf-8?B?SFNmeVJ6UDM3YWxMaXZiY0R1elQ1dk9HNXN4Wkt0RlhnZm5mNlJQR21kNXJq?= =?utf-8?B?NUxHWlJaK1lMQXZMeEV3T1g2Y0I2NkZQUnh0U0FRbUtlaXpKdm9YcTU3eXlG?= =?utf-8?B?c3MxQUt5dHVVNVhHd0tMRlJZdGNmelRrWEd3WEE2Yy9abVRwVmFqV0ZyRVpP?= =?utf-8?B?SmtYV1UyNk4vNHpRcS85YzV6eGRpQ0Z1NndkbkZTNUpqSUxSV1NnK2R2bVhv?= =?utf-8?B?KzJIUXMrMGNLVDdOaEVrdVlOYko3L0FENCtTYlllckZsSHhLTmZlem1oclhl?= =?utf-8?B?UHdYZndTdGdLbEt6dTBQRUxMMFlleXIzcHdTNjdlR3pKQTB5cU42STVSdGIz?= =?utf-8?B?VEVDc01jeWtOYmpTYm5hME43VURLT2R1bHFiREl4dUVjd0hPZmg5OWRROUk4?= =?utf-8?B?K1lFMjI5UzlFVWVYZ0o1VHBQVkdZNjR3dlJzTnlDZFVOOGxzUHhqRHNab2dK?= =?utf-8?B?U3pVN1lsWTdQMCtxaHNOSFFIUmFwb2lFV0pQSUJMRDB0TXlJMTJFUHFQejJS?= =?utf-8?B?eTBNRW84cFlHUGFHM2ZtTkhUY1ROdTlMdDFoOFJLaStBVWxnRHJURjVTQVpv?= =?utf-8?B?NDI2NWVoY09aSnNOZkFVbzNqbVlMd2FSY2NiV1k3MDZDRjZBS3hMSFpyVDZI?= =?utf-8?B?SDdyTHVXSTBkZktTR2xLV0FvdXp1Wk1DbE9nanNxbktzdFhPbmNzR0YyRkxW?= =?utf-8?B?bGN1SXFYeUZhWFNtbTlvN1EvTEIvMk1Sc290QmNaRUNUUUwxVHJEZVZaTytY?= =?utf-8?B?TGNsS0prcDVBZTZTYVRBQnRsT3NyZUp6N2FnSldWZmhNeC92UHFMWkxaNzY2?= =?utf-8?B?V1o1Sm5FaWltc3FkeFAzbHFDTWlWdVF0bDVsNkExYU1QOHFwenE3RUhaSllm?= =?utf-8?B?UHhNbTNIbXRabUhvNmFYc0RYUlZ5YWIybEVzOVBWMHRweDJDa05GLzJHaFlO?= =?utf-8?Q?w3jRrbCvtXXdzyYg5f?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: bb8b7019-c806-4af3-84f2-08def0277ef1 X-MS-Exchange-CrossTenant-AuthSource: IA0PR12MB8374.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Aug 2026 23:49:15.8699 (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: 91eg2Ou0WFBDlG3WmW4xUSOcDcrVFFAhnGJt6ase5+2XiS2MqdSP2N7GuE9B1Gzj X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB7467 On Sat Aug 1, 2026 at 10:12 AM EDT, Usama Arif wrote: > On Fri, 31 Jul 2026 22:13:24 -0400 Zi Yan wrote: > >> zsmalloc uses PG_private to indicate first zpdesc in the zspage chain. >> Replace it with zpdesc->zspage->first_zpdesc =3D=3D zpdesc. The check, >> is_first_zpdesc(), is only used in VM_BUG_ON(), so performance impact >> should be negligible. >>=20 >> It prepares for a future commit that remove PG_private. >>=20 >> No functional change intended. >>=20 >> Assisted-by: Claude:claude-opus-4-8 >> Assisted-by: Codex:gpt-5 >> Signed-off-by: Zi Yan >> To: Minchan Kim >> To: Sergey Senozhatsky >> To: Andrew Morton >> Cc: linux-mm@kvack.org >> Cc: linux-kernel@vger.kernel.org >> --- >> mm/zpdesc.h | 2 +- >> mm/zsmalloc.c | 15 +++------------ >> 2 files changed, 4 insertions(+), 13 deletions(-) >>=20 > > create_page_chain() sets zpdesc->zspage =3D zspage before assigning zspag= e->first_zpdesc, > so LGTM. > > I think the assertion in get_first_zpdesc() > should be changed to > > VM_BUG_ON_PAGE(first_zpdesc->zspage !=3D zspage, zpdesc_page(first_zpdesc= )); > > in the current check, we are checking > > zspage->first_zpdesc->zspage->first_zpdesc =3D=3D zspage->first_zpdesc > > which is just testing the backpointer. Got it. Thank you for pointing this out. is_first_zpdesc() is also used in obj_allocated() for the same check and getting rid of it in get_first_zpdesc() causes inconsistency. How about the changes below on top of this patch? is_first_zpdesc() can be used for both sites and looks cleaner. And VM_BUG_ON_PAGE is replaced with VM_WARN_ON_ONCE_PAGE. diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c index e8ef227624efa..f021d2df99404 100644 --- a/mm/zsmalloc.c +++ b/mm/zsmalloc.c @@ -471,9 +471,10 @@ static void record_obj(unsigned long handle, unsigned = long obj) WRITE_ONCE(*(unsigned long *)handle, obj); } =20 -static inline bool __maybe_unused is_first_zpdesc(struct zpdesc *zpdesc) +static inline bool __maybe_unused is_first_zpdesc(struct zpdesc *zpdesc, + struct zspage *zspage) { - return zpdesc->zspage->first_zpdesc =3D=3D zpdesc; + return zpdesc->zspage =3D=3D zspage && zspage->first_zpdesc =3D=3D zpdesc= ; } =20 /* Protected by class->lock */ @@ -491,7 +492,7 @@ static struct zpdesc *get_first_zpdesc(struct zspage *z= spage) { struct zpdesc *first_zpdesc =3D zspage->first_zpdesc; =20 - VM_BUG_ON_PAGE(!is_first_zpdesc(first_zpdesc), zpdesc_page(first_zpdesc))= ; + VM_WARN_ON_ONCE_PAGE(is_first_zpdesc(first_zpdesc, zspage), zpdesc_page(f= irst_zpdesc)); return first_zpdesc; } =20 @@ -828,7 +829,7 @@ static inline bool obj_allocated(struct zpdesc *zpdesc,= void *obj, struct zspage *zspage =3D get_zspage(zpdesc); =20 if (unlikely(ZsHugePage(zspage))) { - VM_BUG_ON_PAGE(!is_first_zpdesc(zpdesc), zpdesc_page(zpdesc)); + VM_WARN_ON_ONCE_PAGE(is_first_zpdesc(zpdesc, zspage), zpdesc_page(zpdesc= )); handle =3D zpdesc->handle; } else handle =3D *(unsigned long *)obj; > > With the above VM_BUG_ON check change, please feel free to add: > > Acked-by: Usama Arif > > >> diff --git a/mm/zpdesc.h b/mm/zpdesc.h >> index b8258dc78548d..4fd81c2e80769 100644 >> --- a/mm/zpdesc.h >> +++ b/mm/zpdesc.h >> @@ -26,8 +26,8 @@ >> * with memcg_data. >> * >> * Page flags used: >> - * * PG_private identifies the first component page. >> * * PG_locked is used by page migration code. >> + * The first component page has zpdesc->zspage->first_zpdesc =3D=3D zpd= esc >> */ >> struct zpdesc { >> unsigned long flags; >> diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c >> index 8204b76f78308..e8ef227624efa 100644 >> --- a/mm/zsmalloc.c >> +++ b/mm/zsmalloc.c >> @@ -290,11 +290,6 @@ struct zs_pool { >> atomic_t compaction_in_progress; >> }; >> =20 >> -static inline void zpdesc_set_first(struct zpdesc *zpdesc) >> -{ >> - SetPagePrivate(zpdesc_page(zpdesc)); >> -} >> - >> static inline void zpdesc_inc_zone_page_state(struct zpdesc *zpdesc) >> { >> inc_zone_page_state(zpdesc_page(zpdesc), NR_ZSPAGES); >> @@ -478,7 +473,7 @@ static void record_obj(unsigned long handle, unsigne= d long obj) >> =20 >> static inline bool __maybe_unused is_first_zpdesc(struct zpdesc *zpdesc= ) >> { >> - return PagePrivate(zpdesc_page(zpdesc)); >> + return zpdesc->zspage->first_zpdesc =3D=3D zpdesc; >> } >> =20 >> /* Protected by class->lock */ >> @@ -848,9 +843,6 @@ static inline bool obj_allocated(struct zpdesc *zpde= sc, void *obj, >> =20 >> static void reset_zpdesc(struct zpdesc *zpdesc) >> { >> - struct page *page =3D zpdesc_page(zpdesc); >> - >> - ClearPagePrivate(page); >> zpdesc->zspage =3D NULL; >> zpdesc->next =3D NULL; >> /* PageZsmalloc is sticky until the page is freed to the buddy. */ >> @@ -1001,8 +993,8 @@ static void create_page_chain(struct size_class *cl= ass, struct zspage *zspage, >> * 1. all pages are linked together using zpdesc->next >> * 2. each sub-page point to zspage using zpdesc->zspage >> * >> - * we set PG_private to identify the first zpdesc (i.e. no other zpdes= c >> - * has this flag set). >> + * The first zpdesc has its zspage->first_zpdesc set to itself, no >> + * other zpdesc has this set. >> */ >> for (i =3D 0; i < nr_zpdescs; i++) { >> zpdesc =3D zpdescs[i]; >> @@ -1010,7 +1002,6 @@ static void create_page_chain(struct size_class *c= lass, struct zspage *zspage, >> zpdesc->next =3D NULL; >> if (i =3D=3D 0) { >> zspage->first_zpdesc =3D zpdesc; >> - zpdesc_set_first(zpdesc); >> if (unlikely(class->objs_per_zspage =3D=3D 1 && >> class->pages_per_zspage =3D=3D 1)) >> SetZsHugePage(zspage); >>=20 >> --=20 >> 2.53.0 >>=20 >>=20 --=20 Best Regards, Yan, Zi