From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from CH4PR04CU002.outbound.protection.outlook.com (mail-northcentralusazon11013011.outbound.protection.outlook.com [40.107.201.11]) (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 49A774483BA for ; Tue, 14 Jul 2026 13:10:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.201.11 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784034636; cv=fail; b=liRnZfqQr67RobbbOipoCBj4GaCxhXQ9IeGw34O0miMgSXrysQiDmRJBc0DLg6nALDfjCQXFs+UiEVahvX7MWqRCbUWP0xCggWTMGt0xh3TjXoXWWscOINrdOBoxMk8HiD5KPytP+Exem3cdV6wQIs5REHLo6AaecpGsQyobEuY= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784034636; c=relaxed/simple; bh=ZqmuVPAXAqNPXYxeQS6idcM+KxGd533KRb8e2Pd0mto=; h=Date:From:To:Cc:Subject:Message-ID:References:Content-Type: Content-Disposition:In-Reply-To:MIME-Version; b=UCAFDeYwzppW/bxaH3f/gJhuSNwBOBQzfcKZopKVHczHL3khr2KrKHYgUL3xYMpm8YjS3FjIl7VY6BogL93FUrs9iPpjk3yRVZwSXuADIVhS0q+VhEFMEyLWRQgcys5zrB5gjTFPTHZGaupkaL2zVuPrPMaabugjjafxt1fyXzo= 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=itHCJeQg; arc=fail smtp.client-ip=40.107.201.11 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="itHCJeQg" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DkxMiFRs246o15wZ8Eqjo6Dllhc9YXAbKM1yOE6I4t52Xft9c9/TpLRtK3bYPkCnJ7SzPg6lNBWp8DqV4nOm0udqNlqhzOeYq6Sysi90IlIKaizdtq8CUvLa/onZDKVJik1a5EH0xZcO5fnBREI5t64S3diacgjmSpqZE5RBflFH1HhbL7ReZYrvPynKVOHtapA4gx1x/zDty63+g8fJtsMXCshgUeqKAn4dk/Ra2NDyxltNWS4aFXFoEURVMUIWw+zsvI69UotI4SooFkTb3XinB4TNeLAprzfDdOSd1MvRuBm4Kos06BJG2rKYg3X7gnqivFKhldZ3f8nOTQW4vA== 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=47JETSfzH+9Qq13yeulDnYn8gIFhTM2mDI0j/LVolSc=; b=G7L28fYqHRZ/RgpUM9G38d2dQSj7ZYYE+JXC8YRuNbaUqdnb9foeMXlNvxhyt/vtko87CPNrQxm+LFKfXX0dSBkdkY5bT+W1c3VQlNYszZMYQ4XjMyNBqR0UwAVgnuXYuv2sjLeHi24Q+59O46D+rzumxHjKK4abnRrR8FU/XIxTzc3/xMzMPO/uX7/C7W+hjw9B8CjM5rMhNyEITHw69p5WySXxoatJwWUxOn4iirr2xLf1pXIuS24VQqTXGooddq+UBCryeZlRkWjuwTrnfzy3WXUqDpdkyA+pBu9zr0t1IkfME8IEY2XXA2eAgO0uecAEY0sGVBos33oJUlP7/A== 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=47JETSfzH+9Qq13yeulDnYn8gIFhTM2mDI0j/LVolSc=; b=itHCJeQgRcIybnYuUMMvl6NAsB+4sMFgjSP2gEoATD1DpnwpY60qccO0LZr2Lh8oG4OJe1IT7hdygbTalgjyKAqydBWf0iK9LEIWREV5RbqRVMeqQ6eY0bWttaUwu4jrbJyS8naJwxSaOfzKA5LPb8+9imgkLOf+2l5KoAihfmgiSN7Itr0M4rnVyomeVvAuAGf3kcVEf0v3COE9UYZ5tvOt31iU94jMDoH3Tox7FO3M0YGGJ+XruAIXqRzgK7YjcaDHGX7qXHoqH2h46x0hUxdL463PwUs8GY3bAwrLlU3Bz37w5N1RRQTUgfO0EBaB0LZY4ujAtl8RrHhzzTpEFg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from LV3PR12MB9356.namprd12.prod.outlook.com (2603:10b6:408:20c::21) by SJ2PR12MB9191.namprd12.prod.outlook.com (2603:10b6:a03:55a::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.159.17; Tue, 14 Jul 2026 13:10:31 +0000 Received: from LV3PR12MB9356.namprd12.prod.outlook.com ([fe80::1c36:31b4:c420:6286]) by LV3PR12MB9356.namprd12.prod.outlook.com ([fe80::1c36:31b4:c420:6286%5]) with mapi id 15.21.0202.014; Tue, 14 Jul 2026 13:10:31 +0000 Date: Tue, 14 Jul 2026 09:10:30 -0400 From: Yury Norov To: lirongqing Cc: Yury Norov , Rasmus Villemoes , linux-kernel@vger.kernel.org, Andrew Morton , linux-mm@kvack.org Subject: Re: [PATCH v2] nodemask: reduce bitmap width to nr_node_ids in __nodemask_pr_numnodes() Message-ID: References: <20260713075104.2196-1-lirongqing@baidu.com> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20260713075104.2196-1-lirongqing@baidu.com> X-ClientProxiedBy: BN1PR14CA0002.namprd14.prod.outlook.com (2603:10b6:408:e3::7) To LV3PR12MB9356.namprd12.prod.outlook.com (2603:10b6:408:20c::21) 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: LV3PR12MB9356:EE_|SJ2PR12MB9191:EE_ X-MS-Office365-Filtering-Correlation-Id: 8b46ec02-082a-483d-feb6-08dee1a94886 X-LD-Processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014|23010399003|56012099006|22082099003|18002099003|3023799007|11063799006; X-Microsoft-Antispam-Message-Info: r0ZDIfWNIkIcbo8HDmq6c0WNWr4ltLb9W8hgXWZopAxBT12tcAV6D3SmuUcvh7+UESUtUemhDjpjqz3kyPwfVU40bgVuEjkOcT/ur3lG93d+usfZGnnZpuPGTXH7guJpL0W67H+7XVzH8V7NITHV7oNzcRuezmKL7lJWZGEDQ4F7ZRPxv7R16qGTDxjVWNAYHMQ2IKhaFTSQSuRP8tXk2sFku9CjYO4iVZQj7AvjzMsrSIenbeI1sJW6FJ1Emj35UWjoYQm41YEqfWH9RcCPQH9VdWPCcuPRD6IjSdQoY14jJa3Pqpq80FMlsluE0VIdRJgw6w8hsrHGdCTHD7QgtAT3Rv1as25bYlOCN18vJZmzZPbYgtScsnbT0b3rJ8QJpA9wqGlP1FIaYjOaSKQhiEk9NyQ4s95XU9d0SR9OGbVptvarrr2khYrD7puEVS8VaJAfl3f/JrjpU47ylKDgsrT463cB58Q6X6CPN5j0yrS/LPS5PXp9ASBANJOhP9Tu0shn4SrCFnqRGxaBvN7J12XzdAezJFgSzLcKBlWrPB9K15HWiJXgAq7Ocbyrrfd/Gv9kJhsYR091sCeRtm5yPl5d8G78xmUktlW6a096ob+TkOTcRDfoznZHOkRgt4DV2tmtUpQinfN3scyKEZ4BzuW+4HGe2y6DLmRqp3RmLvc= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV3PR12MB9356.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(23010399003)(56012099006)(22082099003)(18002099003)(3023799007)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?weyVp3sD21n1vNE74CiQr1IwAQazGAaQjTvhuAvGQQkUAvmbJgfP5Zwykn5a?= =?us-ascii?Q?b50nCLnSQfncijcCHGXQQmRX99GiWDdQsXd6i/kRLmYE7xe34qMbNsJ3E51z?= =?us-ascii?Q?IF3fp7GxI9RekwmRDNDtrCiFeNC/9p7FainCs5Xxe1BRqqEa0i00/E9sVb/T?= =?us-ascii?Q?2W5N+Jbm4CVFcd/vStaA/dKnr6cAbgrIE270yLleFljKahCtsN/sPo/nASKR?= =?us-ascii?Q?AVyO+00I0QZ9lq8AL5eCfPffhOIHGvlseana/J7IgJl7Sa7m4fNv5p3VPGWG?= =?us-ascii?Q?fGN+dDqZHAor01ndBB8R76fiXm7CYfYMNg0eG1pmG6Dw6Li2KOIgVYtSaQw1?= =?us-ascii?Q?m4+Fa9jvDmXA9esSi+DZgo7OP32y8xazxgWCMGyeWA4Jxn7YnzLqo7JsB9XX?= =?us-ascii?Q?7R6Hjaov3t92EDm1t5K3p6cFRBbkYOXxDsfgOUrBqNPkgVfG642cmjfo5VRr?= =?us-ascii?Q?l5TXI1+xVxReUpHsa8y8c/wRs/upPo/Aveeo2QB/G5GULqKK6VCe1/3JwJUd?= =?us-ascii?Q?u61rLM6McO//JpOL6fc2NFSOUqbz7EqOJ2xaX4WEbSj24RrSWCgsbHLW0IJY?= =?us-ascii?Q?TYOhQacDTiRt19HqhcgG9b/J/80ndScrqZfM3f2Bgi1PHKlBitLSlLjA6poe?= =?us-ascii?Q?67gYH+n5EV1DJ5EF1E26VAP8iuBkExn2aPZeFeZj1vh+lWJ2qrlnpDAo7B4X?= =?us-ascii?Q?HRuiB+5Q5spq98kULBwpkG4+UcWE2ZUEJubRfFQXrCyEy2doCtuqoI8AkePM?= =?us-ascii?Q?mbJH9hXaglylON3bAr/0eiuEsEFN5eHHmt7y0nwV0JYSZeUkMa3BToP6SNBC?= =?us-ascii?Q?E0Y8OOTb+52lv2v43wgSEgeQp869P/PWHUnTAXrRpTq5R8Bmq5pv7ImFvIwd?= =?us-ascii?Q?SRblnsBNMZMuZkC0dzKprZ5S5oTFL/ilndS0mOD4Yrxj0lnbKkhBLSn0fbW7?= =?us-ascii?Q?c+eZHpVWk3rpWw8yWSEaeE3Blz9GJtmR/NJFPNHVuoZ1kGxeAd7K8qexIHAS?= =?us-ascii?Q?pjFUQWMlHq8oJJ49+L//idOXtZhXVUZMhZfmPjiJHo82SXfm1U09lLX5Eq4n?= =?us-ascii?Q?XnPq6/zgWJxSFAKwbDslqdLYp6AH0Vw0Pk0jHJ0t0aDMcIEGPrHYgGn9E8Z4?= =?us-ascii?Q?Mv0ppvgVFc/j7DWIeVwUEfhQx+XHkV5UQwq46Ez9sU9OmKfLvkktilREuKFG?= =?us-ascii?Q?KdY0bwbf6p9BN+1BSzhH+cCgLft6I3CQcQf8nNOBY295Ev2MX0woyqQxMaqY?= =?us-ascii?Q?GMPq1KzU1K/NR1eJZbFm3rQts/i3nea+2d4JJQPWxKeHwPJNCpiu7DavJNFC?= =?us-ascii?Q?s+Ey0eWUVIkfA7ZkwcGHfaolYz/Hb9f3Kr9MXdTrYlvCFiuHmkTtfxWn+eDp?= =?us-ascii?Q?h2RhKAtR26lMCNL6Qyzz0yFHkIirj3Q0pk3Lu705Ib2ZALpRkrxtDQAZ/CUN?= =?us-ascii?Q?pwbmnm2+xbvFy0NhuA5uowfwvdNxChcGLPF32WpvexawNpZJQOLi5FejV7gj?= =?us-ascii?Q?WMcY/sDSR+wy8WDvz4n7QkHSwJaLWYkPOZgHuVkLpLax1NIAYNrRRFJi5o6e?= =?us-ascii?Q?ANEH2hY0850HaqnLrcCSFImTFW9Glaemj6AF/b/xyQ5EuX/8n3J7gWgOmRPf?= =?us-ascii?Q?96yqWG7D8fQ/TewO5gKD50M0R7YjJuiwWp6GwW62/wsnV9iX3AWpoq5APkOd?= =?us-ascii?Q?n+zUmKJG+W5DJyjRLEpnh3WmSvTVCZ0YhvKuTLXlm1T720QZKqnSNaOk08+y?= =?us-ascii?Q?gdlrN1bNRw=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8b46ec02-082a-483d-feb6-08dee1a94886 X-MS-Exchange-CrossTenant-AuthSource: LV3PR12MB9356.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Jul 2026 13:10:31.7910 (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: 96IY5EKju0YkRW9TrwvVgxUyM4wSp6XaKkswtey70qxgtdDUbmmPrnFx6mKW1UI/+0FXfxwFlZZdf3GtkKsK9Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB9191 On Mon, Jul 13, 2026 at 03:51:04PM +0800, lirongqing wrote: > From: Li RongQing > > __nodemask_pr_numnodes() currently returns MAX_NUMNODES as the field > width for '%*pb[l]' nodemask printing. MAX_NUMNODES is a compile-time > upper bound and can be much larger than the runtime node id range, > resulting in excessive zero padding in bitmap-form output. > > For example, /proc//status prints Mems_allowed with '%*pb' using > the nodemask_pr_args() helper. On systems built with MAX_NUMNODES=1024 > but booted with a much smaller possible-node range, this produces: > > Mems_allowed: 00000000,00000000,...,00000003 > > Switch to nr_node_ids, matching the behavior of cpumask_pr_args() which > uses nr_cpu_ids. This reduces the output width from MAX_NUMNODES bits > to the runtime node id range: > > Mems_allowed: 3 > > Visible impact on in-tree users: > - Bitmap format ('%*pb') users: > * /proc//status Mems_allowed (format changes as shown above) OK, let me take it for testing. If no complains from users, it's a nice cleanup. > - List format ('%*pbl') users, output is unchanged, as list formatter > only prints set bit ranges: > * /sys/devices/system/node/{possible,online,has_normal_memory, ...} > * NVMe multipath sysfs numa_nodes > * memory tier sysfs nodelist > * cpuset cgroup mems and effective_mems files > * /proc//status Mems_allowed_list > * mempolicy strings in /proc//numa_maps > * SLUB debugfs output > * Kernel log messages printing nodemasks > > Move nr_node_ids and nr_online_nodes declarations earlier in the file > to allow __nodemask_pr_numnodes() to use nr_node_ids. > > Cc: Yury Norov > Cc: Rasmus Villemoes > Cc: Andrew Morton > Cc: linux-mm@kvack.org > Signed-off-by: Li RongQing > --- > Changes from v1: > - List the unaffected '%*pbl' users explicitly, noting that their > visible output is unchanged since the list formatter only prints > set bit ranges regardless of field width. > - Move the nr_node_ids and nr_online_nodes declarations earlier > > include/linux/nodemask.h | 15 +++++++++------ > 1 file changed, 9 insertions(+), 6 deletions(-) > > diff --git a/include/linux/nodemask.h b/include/linux/nodemask.h > index b842aa5..607373b 100644 > --- a/include/linux/nodemask.h > +++ b/include/linux/nodemask.h > @@ -95,6 +95,14 @@ > > extern nodemask_t _unused_nodemask_arg_; > > +#if MAX_NUMNODES > 1 > +extern unsigned int nr_node_ids; > +extern unsigned int nr_online_nodes; > +#else > +#define nr_node_ids 1U > +#define nr_online_nodes 1U > +#endif > + > /** > * nodemask_pr_args - printf args to output a nodemask > * @maskp: nodemask to be printed > @@ -105,7 +113,7 @@ extern nodemask_t _unused_nodemask_arg_; > __nodemask_pr_bits(maskp) > static __always_inline unsigned int __nodemask_pr_numnodes(const nodemask_t *m) > { > - return m ? MAX_NUMNODES : 0; > + return m ? nr_node_ids : 0; > } > static __always_inline const unsigned long *__nodemask_pr_bits(const nodemask_t *m) > { > @@ -438,9 +446,6 @@ static __always_inline unsigned int next_memory_node(int nid) > return next_node(nid, node_states[N_MEMORY]); > } > > -extern unsigned int nr_node_ids; > -extern unsigned int nr_online_nodes; > - > static __always_inline void node_set_online(int nid) > { > node_set_state(nid, N_ONLINE); > @@ -480,8 +485,6 @@ static __always_inline int num_node_state(enum node_states state) > #define first_memory_node 0 > #define next_online_node(nid) (MAX_NUMNODES) > #define next_memory_node(nid) (MAX_NUMNODES) > -#define nr_node_ids 1U > -#define nr_online_nodes 1U > > #define node_set_online(node) node_set_state((node), N_ONLINE) > #define node_set_offline(node) node_clear_state((node), N_ONLINE) > -- > 2.9.4