From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010000.outbound.protection.outlook.com [52.101.69.0]) (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 B3DE424166C for ; Wed, 26 Nov 2025 09:07:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.69.0 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764148067; cv=fail; b=CBNkfX4N5e8VXvAXE+eylh+/aKCSketRpNoADXm6zqAek4UFIhSnXGBPEkc6JrdQk2jTYOxcnSyS7u+Aq4EU9priijeVcq2a2vdMHBGU6MRljq53gk36m4KPmFfDPQa2kRN+UjyHbFObh9JmrQQcQ0SWqmkDZV6NhwepXdvEBDo= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764148067; c=relaxed/simple; bh=J/oeFFQtR1VzNBmVS8rl3eBp2uNf4kCdjilDr4HeN38=; h=From:To:Cc:Subject:In-Reply-To:References:Date:Message-ID: Content-Type:MIME-Version; b=L3uaUP0N5uF+1ktYcuPEYGBUYnX9JxqZ591m34bgTo7xK1WdrLsFDCCkjCSZVMmoralZgunvAyvs2YFWPxO/6QQ6N01mJzqzEBZgOTCIUrUXTrZXCKwix3ychMkfZXzLr16PzfispNIc1m7we8aacBRfG2BGjI62/jsvgFy2Pt4= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=prevas.dk; spf=pass smtp.mailfrom=prevas.dk; dkim=pass (1024-bit key) header.d=prevas.dk header.i=@prevas.dk header.b=SSKh5OND; arc=fail smtp.client-ip=52.101.69.0 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=prevas.dk Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=prevas.dk Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=prevas.dk header.i=@prevas.dk header.b="SSKh5OND" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=AfJe03Fvm+oB2s49/jjD2Z9nnLufzn2p69QaKN061sM27HT3MeMyoyydh5BEsiL9a4cTlCX178yiVybjiwBJ0QN7Kb/ZA4BjtZSZ6F4fm2fv7//N9Vy6njW74wzVnQGPE5HuCjK5Cm8aTGIFwvYbLsQ52bDJ8LZ5GQYvpwcv6Fw3mYQYw9gpL//rlIvGTGSUCPHr8MBwVEDdondgv9lptERsGt+M8QIpzrY2XD5CRpkFR4tVjccy2cnZsfSWKw2YSBTQigHMT92F4HdbrlQiodH7e+ItSKZnJK3b2B25yYUYCkiQtcPxvoHZB6ikNhCkfQ7BZSQimoMUyDJnBHtBvg== 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=3r+Z6fkqLBIJZiiYJBrSrh652amXW9mktMCyYMFHzuk=; b=T9OD75qr4edK0HSxEi6DiUah+MsoPMiuHLv/lJYKE+QTwLBlTZN2znKL0EjZ0L3SnYZtXmHl6OFZiqxo6kxlVBAhnqokqwHLxia/GoVs3chHFZWcYT24Lbh5+PA99B2905cb7NGThaSoOsMGtz2wyPE6mL9EFTcyhtk/7hEcOjRj0kUEMGmogvWpRr9oE2vfv9Wuob6fgB/u5UbHuMpHUQZz3ZN8uArsAGIjBokap+TBjSG0MKlqfd0nMhp3bQLPkv0PCeVz0JYsN3w0qw8dqVh0mn6VFMpMKhvMILehFHi+S6gBexMRDJchRoFX6EkQxSC4JsRKCak+WbV/VtkpYw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=prevas.dk; dmarc=pass action=none header.from=prevas.dk; dkim=pass header.d=prevas.dk; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=prevas.dk; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3r+Z6fkqLBIJZiiYJBrSrh652amXW9mktMCyYMFHzuk=; b=SSKh5OND8zW9XGTXQ8CbHERR3Wh+vpudyZ1q7mh2c19Q8lyDrkaNDm5U1S6oJNcjIikJ73BC+dDvaogCBXNX15+7d5GnmTEqM5t5OvqwI4vk0BmIY1o+UFgws0LXNtbEfWYAng2cQJOskvio8KtEodADKH8j0Gle2PuqR6uQ9mY= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=prevas.dk; Received: from AS5PR10MB8243.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:681::18) by DB9PR10MB5668.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:10:2ec::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.17; Wed, 26 Nov 2025 09:07:38 +0000 Received: from AS5PR10MB8243.EURPRD10.PROD.OUTLOOK.COM ([fe80::c2c9:6363:c7c2:fad5]) by AS5PR10MB8243.EURPRD10.PROD.OUTLOOK.COM ([fe80::c2c9:6363:c7c2:fad5%6]) with mapi id 15.20.9366.009; Wed, 26 Nov 2025 09:07:38 +0000 From: Rasmus Villemoes To: Linus Torvalds Cc: "Yury Norov (NVIDIA)" , Linus Walleij , Nicolas Frattaroli , linux-kernel@vger.kernel.org Subject: Re: [PATCH 00/21] lib: add alternatives for GENMASK() In-Reply-To: (Linus Torvalds's message of "Sat, 25 Oct 2025 10:56:24 -0700") References: <20251025164023.308884-1-yury.norov@gmail.com> Date: Wed, 26 Nov 2025 10:07:34 +0100 Message-ID: <87ldjtuppl.fsf@prevas.dk> User-Agent: Gnus/5.13 (Gnus v5.13) Content-Type: text/plain X-ClientProxiedBy: MM0P280CA0067.SWEP280.PROD.OUTLOOK.COM (2603:10a6:190:8::34) To AS5PR10MB8243.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:681::18) 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: AS5PR10MB8243:EE_|DB9PR10MB5668:EE_ X-MS-Office365-Filtering-Correlation-Id: baccf714-f9f3-4c1f-c833-08de2ccb3ef7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|1800799024|366016|376014|38350700014|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?a9byjqd5c/tgJTH5Oex+9SpLIqjnk2LESq4/FG+lZik657/32xx69WpzSoHy?= =?us-ascii?Q?NQ1VSMK7w9lbrL2NwiFyJwvo47ASTLkwfNwBFvJE0gz1c5dpOhgf1S1JbfbC?= =?us-ascii?Q?jNWzWeWyds9XTnKAyDzB74D0y3nUP/9c5votxDXxIzJ38Q/AhXpBxxqUexPo?= =?us-ascii?Q?aJ6pVsroBE0xKhAzHoU2YkwSK6ZBhaQoWICxtPz83Y7B1DbewxN3RYveNRXG?= =?us-ascii?Q?J65qboPt8WEFl3NXLSpGo5Ve+HRs5KBOK0KrbENWaBYJqG8L5rvWGYFvgyN/?= =?us-ascii?Q?UNxAp7tX055ya9lv/91qsRjmFcnAhnE0+OIPkLAbHB8MI8lLAgsBDPrGWlCX?= =?us-ascii?Q?DJhIquBdAdH1dkO54AbpIyZqi7wJo95SGu/TT+5/DZsJy7fe8dRmqNRLs9Ji?= =?us-ascii?Q?oY7os6/w4SrT2hJ9gm0QvB3ahPteXkrRyr1DJrEvEhj45lzHyP9e8+8MLUS/?= =?us-ascii?Q?Jm4QycoSH+T8foZo8y/1aWczSuZzHyOUr07RpAKAt4jrxzDOF3hSxcSHcZpF?= =?us-ascii?Q?pq4EF2a6ArvtrRH2O0QCzFdLdTs38rk0wNsgT9x1/8AF/rmyNXZ4/lx4aQn2?= =?us-ascii?Q?eb16WsfQ1103gaHpvQ+iIuc3A+m8jjRXeMIiva90xqol4Br10vG9oAQhhR5k?= =?us-ascii?Q?8r3gjVuKnWWOhgbkG30QkH4XAT+0RdejARPtg9VoQ/FAN2z0GY4OStS5RDNq?= =?us-ascii?Q?eGVL/4sOc6pK3QCKLPxC5Veod5YCsU5tZ+DY58mNVsB4np2RTGK+EjkA8Jlg?= =?us-ascii?Q?ERI2CMP++Ue8weKpZ7pZ5gawIoW4vVu76HERv3VIAzKyVcAwSvjekRUXjJ4j?= =?us-ascii?Q?0oEG+VcGTdq5ylyMaw6IYysmp6e46fjpQ2u25vEFk29mVcO/toUkAN+l21qo?= =?us-ascii?Q?xXOi/fRDMqIqfhd8uw5AtZOZ3soMVLSefhsc/HPkDFOb1sJ415bfcccfY36s?= =?us-ascii?Q?MrF4BErUc8YdW0DIyNwAMzaRRb0yNK5vN4LjzdjqDlJxalbsM84G5QFGeOqO?= =?us-ascii?Q?R2EVHwWhiaG1BY9vFRKhhJEWxBKmEDbYE59EF+t855l+1ewFaeBcU4qxyLr1?= =?us-ascii?Q?Y7JyZiUYZB4Mu7VoO4CIjmzoWmsjt+t2qa3UCEYstFlYmgEmkc7Wgm3RmDnH?= =?us-ascii?Q?zRjAiYMfSGhpBoFDCObrjhaM8J9VWeTDoQ/Avjvbg0RBjyRC655DAWsra5Dm?= =?us-ascii?Q?1Q9JRMS1TlVF3AEYr4hCGxhN//mVqiheBomkyTS0dfvERdeg4Qc53XVJNkgP?= =?us-ascii?Q?M+4RVZovE92jTOL8qSMxS/KP90be9Yqf1R+/aLi0km3xDUwVa0lXOfbhzF5B?= =?us-ascii?Q?A7h9XOJuiA7ktPDEqO8q0Gx5fbgjZOoB0SvkXuQFNyfANRpZXMYhMGubUVy0?= =?us-ascii?Q?O7zmG2BR8ehorViMmAUBy95MmvBYX+nNq/CTzfJgT+9ugyRHS7EPKXP2I0nF?= =?us-ascii?Q?juRQWyCo5JZODfiqf6p5+cTcoyghU/Eywt2pRqPUrizgwkTdivStLsvvPAVD?= =?us-ascii?Q?mkTOy8VOXtqZAxfkXSVioTbRHYsmbu+/azzH?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS5PR10MB8243.EURPRD10.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(52116014)(1800799024)(366016)(376014)(38350700014)(7053199007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?vfcyTBnt9OqTaBwwvnhGz4mImbBiejeWzPWki8r+mgSywSX3MiUDEFdI6zMo?= =?us-ascii?Q?3DJoERJq0eGCTjJ2ZNXveRxomSAc4lRwGuA2gANvnMTZ/CS9d6e7jFYFa7tz?= =?us-ascii?Q?pqhshsBOJ6+EHyJfd5TQRnDcO8vRt1r3unlmF18nTkn3pfoMcMtWL3whdPPQ?= =?us-ascii?Q?7e81VQb7LBL7WX6ymY5zO+MuTpbpIKhM8DU4NlbV9Yqrpaf9YkPqPK6i7KQd?= =?us-ascii?Q?oXK6x3wTxipeSIIXA5uyZfYQuQSka792Ny6a1bAzTWahsLJx/FeXg0wfjh1W?= =?us-ascii?Q?sdvaBW/3V7iWChPXeUBSnCYXeKu6UksB3HsgHsi+doSrH4WIZx9fKCRv1cjc?= =?us-ascii?Q?YyfqdgRz9rBfIyf1Hn5ExCOl21kJwE0OlrHdAtq1I3qy+9//CV06RAoe6C3v?= =?us-ascii?Q?tcSmV6pjbXJBSm1j5PQCzersKKw9N6TYQV+YFmlLj9NssXtpFAN1peAEpmI5?= =?us-ascii?Q?UPNAboWNnkVdEzQlGpe1QSejKbDlB5f2kG5alJwcy4U1ZFrx6XU8c3JpzK5z?= =?us-ascii?Q?s2nz/Obx6kKK2z+fxC7dBPFwCYOfTmBgbTxwcvahblqKyyrETYwAKwngI9k6?= =?us-ascii?Q?sEBOiH8lORwEIPf0d0YhpigMIZo1oHwWRNQ3mDV4IZT86qktcpGRvZsM+UKo?= =?us-ascii?Q?PH0iYCShlHZ+NGfocR6tU9o75UD+IOCxHR3yzl8JLsdTd2hoOLB0bAjY6EiW?= =?us-ascii?Q?N1SMto5AgWL45opBHrHTe/L+NlCNBTMUUSgn5RE66z2w/5ibJtgUH/yITwhc?= =?us-ascii?Q?BS4uPYU5lWVl0iy2BM++6a/tz+Ns0RKPAow/pNPJ29Xxb8rCqYlZyhWJyZbk?= =?us-ascii?Q?NHuLOsD5TPuLWkNGrtsL/MzTx/0QmYV8zINgVf2A8G2jEJaTMvoHDuMtVt+Y?= =?us-ascii?Q?TSJSnNqeB+uCf1MB9H6lt0DnHKVMjXmzA1hoRbljBoT0ZeUB9iH8Tanl0W0H?= =?us-ascii?Q?Hiwqti79Yf0CqBk6xbG60qSznDmbswlQpR3NrAH5ctoTGifMJVPU2HRgPth4?= =?us-ascii?Q?eFDq6/wZ4f1DrrY5H5PloFTd+PfS9L9wp8xPt7kGMeBSHwhgq0PBAsF5dvAw?= =?us-ascii?Q?W2gtmEa0We8FlOWeuv/K6n/XW/gFsKspt+dsjI0sfZQTYBP5sbuFialmWiA2?= =?us-ascii?Q?DM9yJK2/T8ZOV2FTbigkxJ6rKplbpyqvEv0MOVCyqKm476+tlaaVwvZT3prA?= =?us-ascii?Q?Wt/oSpLr0csWevkH9tTiJPgDD/tgaACKy7Rsob/ie/KjvFvUYA36aSjQcYFd?= =?us-ascii?Q?PF/elDd7JOo7NvfYZHfphHFd7fNSy47LrVBqqvlGSorQm3G3jHmMzQBrHR6f?= =?us-ascii?Q?jn/SnVGJ4mpwdQHdcwMPCP6GeWflEukwV9DhLvvuF4+Lr+gQ/rBTEfopqXsd?= =?us-ascii?Q?02GYKXyts2QlfNkaWC/g17uPympIuussDRpaY+Gxgj34Zoq/zaqrl6GoTkH4?= =?us-ascii?Q?/K+3nzGEC5lFUr1X8RoKpQRA63G3L/PdHyMbpYJ2OjS5Nzzw0g+1qoEcrONY?= =?us-ascii?Q?toKCFm5JIp2O570eZw1jvpKLC1/EE4CLRpnORLCmubnGSJLsutWNeALwRpoW?= =?us-ascii?Q?gtvPYZl79gvH/J9OVZjxvSAICGpd/Veo2PfZdzDKL6k98mAcehdu9RpPnfft?= =?us-ascii?Q?8A=3D=3D?= X-OriginatorOrg: prevas.dk X-MS-Exchange-CrossTenant-Network-Message-Id: baccf714-f9f3-4c1f-c833-08de2ccb3ef7 X-MS-Exchange-CrossTenant-AuthSource: AS5PR10MB8243.EURPRD10.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Nov 2025 09:07:38.2025 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: d350cf71-778d-4780-88f5-071a4cb1ed61 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Dp0PhacgZBQdb0XKAfJf7w3xAfmEzbxu8oIDHeSODSILlieHYZtOwYw2xpnZo2zn36dPRbIwS+B3O3lZfF8xtIepihUmUicj36iAVXrDe54= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR10MB5668 On Sat, Oct 25 2025, Linus Torvalds wrote: > On Sat, 25 Oct 2025 at 09:40, Yury Norov (NVIDIA) wrote: >> >> GENMASK(high, low) notation reflects a common pattern to describe >> hardware registers. However, out of drivers context it's confusing and >> error-prone. > > So I obviously approve of the BITS() syntax, and am not a huge fan of > the odd "GENMASK()" argument ordering. > > That said, I'm not convinced about adding the other helpers. I don't > think "FIRST_BITS(8)" is any more readable than "BITS(0,7)", and I > think there's a real danger to having lots of specialized macros that > people then have to know what they mean. > > I have an absolutely *disgusting* trick to use the syntax > > BITS(3 ... 25) > > to do this all, but it's so disgusting and limited that I don't think > it's actually reasonable. > > In case somebody can come up with a cleaner model, here's the trick: > > #define LOWRANGE_0 0, > #define LOWRANGE_1 1, > #define LOWRANGE_2 2, > #define LOWRANGE_3 3, > #define LOWRANGE_4 4, > #define LOWRANGE_5 5, > // ..and so on > > #define _HIGH_VAL(x) (sizeof((char[]){[x]=1})-1) > #define __FIRST(x, ...) x > #define ___LOW_VAL(x) __FIRST(x) > #define __LOW_VAL(x) ___LOW_VAL(LOWRANGE_ ##x) > #define _LOW_VAL(x) __LOW_VAL(x) > > #define BITS(x) GENMASK(_HIGH_VAL(x), _LOW_VAL(x)) > > #define TESTVAL 5 > unsigned long val1 = BITS(3 ... 25); > unsigned long val2 = BITS(4); > unsigned long val3 = BITS(TESTVAL ... 31); > > and that syntax with either "3 ... 25" or just a plain "4" does > actually work. But only with fairly simple numbers. > > It doesn't work with more complex expressions (due to the nasty > preprocessor pasting hack), and I couldn't figure out a way to make it > do so. It's cute, but no, I also don't know how to make it work without the preprocessor concatenation stuff. There is, however, an alternative that resembles the syntax in data sheets even more closely: #define BITS(low_high) GENMASK((0 ? low_high), (1 ? low_high)) That'll work for unsigned long val1 = BITS(3:25); unsigned long val3 = BITS(TESTVAL:31); for most of the things TESTVAL might expand to - I'm not sure what would happen if one of the lo/hi values contains ternaries and isn't properly parenthesized, but nobody writes stuff like #define RESET_BIT(rev) rev == 0xaa ? 7 : 9 It doesn't work for the single-bit case, but I don't think it's so bad to have to say unsigned long val2 = BIT(4); and obviously BITS(4:4) would work as well. It also doesn't do anything to prevent the hi-lo 11:7 order. Rasmus