From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from BL2PR02CU003.outbound.protection.outlook.com (mail-eastusazon11011008.outbound.protection.outlook.com [52.101.52.8]) (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 6C68E30594F for ; Fri, 10 Apr 2026 16:55:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.52.8 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775840134; cv=fail; b=g5Ri5jbwUwn2eGX09wbRjZJ6VN8UL9gBpE23JzuWYq99DDu1gp6JTeocGv73Rp+uWs1kdBODdfoHrW4Wv0b2T2OazcckXT7qawGOE3DkLmAeE/YZYL26pTROgmXO9KhVWl+VwWwUGpQ52TTa8C2w+lhzGcM/eP7/f2NMJTiaJic= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775840134; c=relaxed/simple; bh=lrZPoCuOz2KIsro9SQgnHvnWwTlq8/ko2HOKK5IpxLo=; h=Date:From:To:Cc:Subject:Message-ID:References:Content-Type: Content-Disposition:In-Reply-To:MIME-Version; b=K8blTDWBNrkcI5xx0TjF/71ZF3mxxKmElLOrvKIWIip5gP3GiG1hK0xWtDbyCYI+9FFYerJwsQJSlSj5QKSSpT9qII1wFfW2L5cuQTrksEsLDeusZVSXnDl6fSswRL5vgviEdBeCQ/JRQoXuK9SO2ioDRAqoK/mxvJktreP/yN0= 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=Zw54fCSQ; arc=fail smtp.client-ip=52.101.52.8 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="Zw54fCSQ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kJGFXAYxFQsk/mcFGHcWgvG7tC3SRwpq5YYusMLX98LCNJPVgF/yWBf/52DvAy1Xh7/y+6PlUAL9pnu9Nk54lOGm1IJF81jMWs+OqM4eeQBT8WWTYF/y+kaMTZ9DxsqpZmmpXCHUhdgdaEWHId4XjFOjkh6QJJATtd6bH59v9WCI5sQDIHGtCk5Dn9CPb6+iqhWpNxeLK3mJgvCHMmzAZxa+ToQeXZQJPHJubm+tQOMPNVNbgiPP4GP4eRF7lxtpa5LWoi5QmKipkXOwqMKhbtCo9XYy1ewOZryMv1z/kMP6y1+dHc8XZvvKarIb2Ap0uhDhn1bSlCNNFaS1iLvhmQ== 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=8lnq6cmlKRthL2MUaQv5GlOnExE+L4ORKcN6RpRRAyI=; b=J+LyGp0sA4D0zEP6DAzQtJGU/pnY6ejBqCoRmSN7UHUDjGM6mWYWH1kgjpbD8AoMBUWC38ihxRfWX3Nt9Am5Vo1AZUrqxTrX9eD7EmOEsowpcm6aGsqwYEU4aaY8mYJMTeI734BSBz7xkJ2vZQW3T0A8wmVZ7agOaE8mpeH9rsij7yacy7VFsh1omyjniS+M0oPY8HhRt3F92PyfBmOjoIF2h7sI8Wcgfkkp9flIAuXVKfSsBRzEO22vnKZMV1x1jqz2Ed7yzoosvsQve107Y/pSK6KMWvO28KQBl4xvu8KqFPmVq8+VooMopUZuUbGlsD2Fw0rgmXM5alZQ38ULSQ== 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=8lnq6cmlKRthL2MUaQv5GlOnExE+L4ORKcN6RpRRAyI=; b=Zw54fCSQP/dq5VTVKiXQDXzbSkrqGOh6HvhgAJU1ZHenrxTd9kMPp5jArmzWUKoJpCouIe6H6yaxCGsDDr7M09Jx/G5WFIQDDu2D3Gwq5hepB+s6xXtwmGp8CNQp0fRKevxRaRcjCjjVzkimtQn/EHaAVo8uXJJNxc/7ESlYKRo7GMGMAKReb6Z3T54vxdADHp3dj52zVkaieVGpP9MRnb3v88msFH8P6rn3QOBiAigqUQdI/Z9bJBd7Gre61qHNbJ66ZA8+5zcVUiEsb9P/q1GL+96PcSsgv/pW3rgbL2u6YwsXG5UMlNtMnl15xci2VNx1Vmn2po46nMzLiKpkUA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CY8PR12MB8300.namprd12.prod.outlook.com (2603:10b6:930:7d::16) by SA1PR12MB8144.namprd12.prod.outlook.com (2603:10b6:806:337::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.42; Fri, 10 Apr 2026 16:55:29 +0000 Received: from CY8PR12MB8300.namprd12.prod.outlook.com ([fe80::ce75:8187:3ac3:c5de]) by CY8PR12MB8300.namprd12.prod.outlook.com ([fe80::ce75:8187:3ac3:c5de%3]) with mapi id 15.20.9769.018; Fri, 10 Apr 2026 16:55:29 +0000 Date: Fri, 10 Apr 2026 12:55:25 -0400 From: Yury Norov To: david.laight.linux@gmail.com Cc: Geert Uytterhoeven , Alexandre Belloni , Jonathan Cameron , Crt Mori , Nuno =?iso-8859-1?Q?S=E1?= , Richard Genoud , Andy Shevchenko , Yury Norov , Rasmus Villemoes , Matt Coster , open list Subject: Re: [PATCH 1/1] bitfield.h: Ensure FIELD_PREP_CONST() is constant Message-ID: References: <20260410090927.60484-1-david.laight.linux@gmail.com> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20260410090927.60484-1-david.laight.linux@gmail.com> X-ClientProxiedBy: BN9PR03CA0464.namprd03.prod.outlook.com (2603:10b6:408:139::19) To CY8PR12MB8300.namprd12.prod.outlook.com (2603:10b6:930:7d::16) 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: CY8PR12MB8300:EE_|SA1PR12MB8144:EE_ X-MS-Office365-Filtering-Correlation-Id: 1d5b153f-73f6-471e-76b1-08de9721f847 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|10070799003|1800799024|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: 7nI0WZ73FHVH+tIpHF6yYyv1TyxBNjrA/H0I/zkvCMqp843h6prMjHJj9F0IXuImDokIhD3MLIhTqMbr+lqvDQmeDeGZOX0+R5nlW9ClU7z6lwhmD+nVh9c7nTKOgcQPBQlUDv497js8uBhsrhbJvXXFiKaqvZOmIjL8z5k2z8WF2CXZ4rNT3/lTMZ91nEeHhfJuUn2dXqlcFNHMtiBBueBpNstxFSM+rnaIRqS4iy0qFyxyPkccsOMkucq/oDeVTkV2kp5HvSm1ur9nh9HAfsMCma1EorWA2nyfDBpHGaN4Vi9f0EfWAhzBCJyhzCnla6NhSB5wUdPDExkG9RAg+7xLHtiJJYSiI5wpBIv2VdDh1Go6RlgIo5KGPoMcMbYNRTAGgaVoAVA5By40wR4jbKqz5vwyKq6TziaH84qOd2soSm8ozQYn7zTspt8FyMcqUlURWKwyimEQdB7Irwl/ABP5C7mciQ7WrdJrP1EHKtZm3GYFsUBRP3amEQKuyV5K6t+HBrgMugOfBwzaCSGQyP2hDsizYL6Hq11coaFY0VcyXpOecltPM6eS9pJx1jRjtV+pCUqIZK+SrddkklYb5SZMVvtxPaf5RpzG/OgjpL7yGc2Sa7dqBIS/frl9qqQnIq77GnOIoem8PLIVbjdWpVdHRz8g/I+pO8RvX5DezhvpLAAXkLQT2c5uGR5ojDf+K6RHqP8S+DYdHDD0YGlUNYAxs4A577SDA4hKOYezKtE= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY8PR12MB8300.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(10070799003)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?vdVAulnrbMwcWKezpGoXWj8IphYiX2+g1lw0qZhgrKVw+p5kvdLNP59xUcjE?= =?us-ascii?Q?1xpm6Mnht0iTCR+FPwHq5r+EV4I2CciD3mN+Lo93+Cu54OYSuKJ0LhHFgU7r?= =?us-ascii?Q?wne/cbuHAjkgeEH48JOR20pOPyI+GaUDRMJGO6NO++J3YujTrITxLkW7baSJ?= =?us-ascii?Q?f4O8AqFqeQNe4z0Njg3qeWdHbbDd4M5SEgseNwOOHSQ8Avo8xeSq6Wls3xQy?= =?us-ascii?Q?rv0Z7OOCz68ES72V+UOcjA0zarrDH038NJqTOD4PQnlpkJvOQChgoOZgwb4m?= =?us-ascii?Q?cYcRHA+jHb4PWFYuLUuEQbJ7cXnb4+jahBDe+tlfXR5GXtPUBTe/x0sI6S4q?= =?us-ascii?Q?aXoKvHKOvDVGmf2FrXMe3+TC38CvSflP9QVXW5PDLJybRxwuHwLfU4eonXol?= =?us-ascii?Q?YvrC/oTbv/8mj7XPLi4PS9TelKEX2Zqd5wLxkUlHVpNgYTPtoaQgts56oW6Q?= =?us-ascii?Q?mmnkKNGld1RTs9szKNBgaoi2mb64yuimL2qGnt655UQjIQ6+MFPlwtmGpxL0?= =?us-ascii?Q?UctiqzbNmh4KFtgoDBe/T34nH8fBmb5pwi6A05wHN0KGZf5Aykhv1q1VDv31?= =?us-ascii?Q?dELYDwpr64PnO63sr37d0I4IVPRqSmtf2qJPqqBeLnV4g86R5q/ZOb/y1tjF?= =?us-ascii?Q?++WYoQxkjTkaKZ0SqJ1AMdyt78pfiNNwqCdHc8QmVuvLWoGFbO2fYzpkLCDK?= =?us-ascii?Q?yG0V7uHSDAVN7PoC2TPPA/YxF6GZKaju8ksUMmX3JGzBzZngPc2KZfKzKRMQ?= =?us-ascii?Q?iSUpm8tvOI0jUnBAz0jx95TdubINFVhh/DQj2PsHWm/DJ1HKAgdsYu3ZnRga?= =?us-ascii?Q?enhSlRajl+PX33GNpLEDseQr8AKuVm3UaLRG9ncz0LqkZhhCoF2zUvIS1Fur?= =?us-ascii?Q?4VBM0KrioT9CAXrViZ7WdTwFS2tOi9LQWWjqRZSHNS6sVazCvRGDRjRqZC7H?= =?us-ascii?Q?O9fzG0Gtg/fDC4FSFzP9+cHJCzxYhlx338H9X53EpKl6TBuzGeRTOsobi+E3?= =?us-ascii?Q?rROEMqEoUyiRzXkjB22hZiW4Kb3GwvRKxIlmu7dFGNgQD+a3WZ3j6WXcUh7U?= =?us-ascii?Q?Ai6xrOteeYRVOHiMn/RjarDMku1a0dOMx5d9+2otjdLruXrr+v0JQBZy8eZU?= =?us-ascii?Q?+zOFmeTyv7anhwGY+Sofx98l7q4Qkmg8FN1qMDm5FjnpNv/CEglxLSj9IPBd?= =?us-ascii?Q?y2mZZUpw16PD79AybDRdLd/BA8VlV0rD826AmaPIlaaRk9aTd1wZ9igq/vj0?= =?us-ascii?Q?f0HA/vlDcvTjKZG1rvj9tb23D7dCUEliNBa+L8qcoH7G3NOVhdmFRHWTuJ8i?= =?us-ascii?Q?YBCrl9XRbM0yiWr2Cr8z1ZLVRuyoWgq46AW6u6xTbeXv2Q/u3oRVE2FNxlGV?= =?us-ascii?Q?s8iaiNf2cFldG9fXqc3CoY8R6vm6HFUsRgkOBJeXIHBaMhH5XdtSFxqLMWi/?= =?us-ascii?Q?3UqyUNEil2KcImqj0eH8AaIwcY/KpzbxDxy+rz0u65NCwsE31BP+yjudHwbx?= =?us-ascii?Q?m66//1X95sb5DiAkgJ4Z8dY3TvVkzIMWdBWKenXSgbunpI74+DQ7CELaBvY9?= =?us-ascii?Q?DhyWQB3+jJrYC2pKzO6x5oG2C9WPrwYoHawzMngX9K6oK4Sn0nrdHuXLoCLS?= =?us-ascii?Q?getdfeCSOO5Pkc/iQYQJ/5K+e45cns9XPlOpj5VN9GeOcV8aHLKHeZ6m6/dZ?= =?us-ascii?Q?c00GoBVgPlivr+CoRLSNyDvcgAQe410KoAv5u/WtzR/eVNtGU9B2R3TsmKGm?= =?us-ascii?Q?JZpSKPTbzh0XKlSBYux65kBfWpGA6FOMCp64GqvOw5X6O6dUi4Nk?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1d5b153f-73f6-471e-76b1-08de9721f847 X-MS-Exchange-CrossTenant-AuthSource: CY8PR12MB8300.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2026 16:55:29.0553 (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: l1SVsZy6WHakP1fbC7sh/eerPGiOeWE+fM+bS9FgvezVtnZveu+wkxvKYdFHShsKf2SjlXjQ77m1wS8VbHMx9g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB8144 + Matt Coster On Fri, Apr 10, 2026 at 10:09:27AM +0100, david.laight.linux@gmail.com wrote: > From: David Laight > > Some versions of gcc report that some expressions involving > __builtin_ffsll(1ull << 63) are not integer constant expressions. > > Rework FIELD_PREP_CONST() to avoid the issue. > > Signed-off-by: David Laight Thanks, David. So, the original patch that spotted the problem is: https://lore.kernel.org/all/20260409-field-prep-fix-v1-1-f0e9ae64f63c@imgtec.com/ Let's keep Matt in the loop, at least. Please keep the details from the original patch. "Some versions of some expressions" style is too uncertain. > --- > > Note that when 'val' is a variable 'val << constant' is likely > to execute faster than 'val * (1 << constant)'. > So the normal FIELD_PREP() is best left alone. Do you have any numbers? I'd prefer to have the codebase consistent when possible. Thanks, Yury > include/linux/bitfield.h | 9 ++++----- > 1 file changed, 4 insertions(+), 5 deletions(-) > > diff --git a/include/linux/bitfield.h b/include/linux/bitfield.h > index 54aeeef1f0ec..f21765851d5c 100644 > --- a/include/linux/bitfield.h > +++ b/include/linux/bitfield.h > @@ -45,6 +45,7 @@ > */ > > #define __bf_shf(x) (__builtin_ffsll(x) - 1) > +#define __bf_low_bit(mask) ((mask) & (~(mask) + 1)) > > #define __scalar_type_to_unsigned_cases(type) \ > unsigned type: (unsigned type)0, \ > @@ -138,8 +139,6 @@ > __FIELD_PREP(_mask, _val, "FIELD_PREP: "); \ > }) > > -#define __BF_CHECK_POW2(n) BUILD_BUG_ON_ZERO(((n) & ((n) - 1)) != 0) > - > /** > * FIELD_PREP_CONST() - prepare a constant bitfield element > * @_mask: shifted mask defining the field's length and position > @@ -157,11 +156,11 @@ > /* mask must be non-zero */ \ > BUILD_BUG_ON_ZERO((_mask) == 0) + \ > /* check if value fits */ \ > - BUILD_BUG_ON_ZERO(~((_mask) >> __bf_shf(_mask)) & (_val)) + \ > + BUILD_BUG_ON_ZERO(~((_mask) / __bf_low_bit(_mask)) & (_val)) + \ > /* check if mask is contiguous */ \ > - __BF_CHECK_POW2((_mask) + (1ULL << __bf_shf(_mask))) + \ > + BUILD_BUG_ON_ZERO((_mask) & ((_mask) + __bf_low_bit(_mask))) + \ > /* and create the value */ \ > - (((typeof(_mask))(_val) << __bf_shf(_mask)) & (_mask)) \ > + (((_val) * __bf_low_bit(_mask)) & (_mask)) \ > ) > > /** > -- > 2.39.5