[PATCH v9 19/23] scsi: ufs: mediatek: Rework hardware version reading
kernel test robot
lkp at intel.com
Sun Mar 8 03:31:44 PDT 2026
Hi Nicolas,
kernel test robot noticed the following build warnings:
[auto build test WARNING on 11e703f54ac21f4dc609ea12ab578ffa47c87e11]
url: https://github.com/intel-lab-lkp/linux/commits/Nicolas-Frattaroli/dt-bindings-phy-Add-mediatek-mt8196-ufsphy-variant/20260306-215930
base: 11e703f54ac21f4dc609ea12ab578ffa47c87e11
patch link: https://lore.kernel.org/r/20260306-mt8196-ufs-v9-19-55b073f7a830%40collabora.com
patch subject: [PATCH v9 19/23] scsi: ufs: mediatek: Rework hardware version reading
config: arm-randconfig-002-20260308 (https://download.01.org/0day-ci/archive/20260308/202603081809.R9OrrITa-lkp@intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 8.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260308/202603081809.R9OrrITa-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp at intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202603081809.R9OrrITa-lkp@intel.com/
All warnings (new ones prefixed by >>):
In file included from drivers/ufs/host/ufs-mediatek.c:10:
drivers/ufs/host/ufs-mediatek.c: In function 'ufs_mtk_get_hw_ip_version':
>> include/linux/bitfield.h:195:40: warning: result of '268435456 << 24' requires 54 bits to represent, but 'int' only has 32 bits [-Wshift-overflow=]
*(_reg_p) |= (((typeof(_mask))(_val) << __bf_shf(_mask)) & (_mask)); \
^~
drivers/ufs/host/ufs-mediatek.c:838:3: note: in expansion of macro 'FIELD_MODIFY'
FIELD_MODIFY(MTK_UFS_VER_PREFIX_M, &version, BIT(28));
^~~~~~~~~~~~
vim +195 include/linux/bitfield.h
e2192de59e457a Johannes Berg 2023-01-18 142
e2192de59e457a Johannes Berg 2023-01-18 143 /**
e2192de59e457a Johannes Berg 2023-01-18 144 * FIELD_PREP_CONST() - prepare a constant bitfield element
e2192de59e457a Johannes Berg 2023-01-18 145 * @_mask: shifted mask defining the field's length and position
e2192de59e457a Johannes Berg 2023-01-18 146 * @_val: value to put in the field
e2192de59e457a Johannes Berg 2023-01-18 147 *
e2192de59e457a Johannes Berg 2023-01-18 148 * FIELD_PREP_CONST() masks and shifts up the value. The result should
e2192de59e457a Johannes Berg 2023-01-18 149 * be combined with other fields of the bitfield using logical OR.
e2192de59e457a Johannes Berg 2023-01-18 150 *
e2192de59e457a Johannes Berg 2023-01-18 151 * Unlike FIELD_PREP() this is a constant expression and can therefore
e2192de59e457a Johannes Berg 2023-01-18 152 * be used in initializers. Error checking is less comfortable for this
e2192de59e457a Johannes Berg 2023-01-18 153 * version, and non-constant masks cannot be used.
e2192de59e457a Johannes Berg 2023-01-18 154 */
e2192de59e457a Johannes Berg 2023-01-18 155 #define FIELD_PREP_CONST(_mask, _val) \
e2192de59e457a Johannes Berg 2023-01-18 156 ( \
e2192de59e457a Johannes Berg 2023-01-18 157 /* mask must be non-zero */ \
e2192de59e457a Johannes Berg 2023-01-18 158 BUILD_BUG_ON_ZERO((_mask) == 0) + \
e2192de59e457a Johannes Berg 2023-01-18 159 /* check if value fits */ \
e2192de59e457a Johannes Berg 2023-01-18 160 BUILD_BUG_ON_ZERO(~((_mask) >> __bf_shf(_mask)) & (_val)) + \
e2192de59e457a Johannes Berg 2023-01-18 161 /* check if mask is contiguous */ \
e2192de59e457a Johannes Berg 2023-01-18 162 __BF_CHECK_POW2((_mask) + (1ULL << __bf_shf(_mask))) + \
e2192de59e457a Johannes Berg 2023-01-18 163 /* and create the value */ \
e2192de59e457a Johannes Berg 2023-01-18 164 (((typeof(_mask))(_val) << __bf_shf(_mask)) & (_mask)) \
e2192de59e457a Johannes Berg 2023-01-18 165 )
e2192de59e457a Johannes Berg 2023-01-18 166
3e9b3112ec74f1 Jakub Kicinski 2016-08-31 167 /**
3e9b3112ec74f1 Jakub Kicinski 2016-08-31 168 * FIELD_GET() - extract a bitfield element
3e9b3112ec74f1 Jakub Kicinski 2016-08-31 169 * @_mask: shifted mask defining the field's length and position
7240767450d6d8 Masahiro Yamada 2017-10-03 170 * @_reg: value of entire bitfield
3e9b3112ec74f1 Jakub Kicinski 2016-08-31 171 *
3e9b3112ec74f1 Jakub Kicinski 2016-08-31 172 * FIELD_GET() extracts the field specified by @_mask from the
3e9b3112ec74f1 Jakub Kicinski 2016-08-31 173 * bitfield passed in as @_reg by masking and shifting it down.
3e9b3112ec74f1 Jakub Kicinski 2016-08-31 174 */
3e9b3112ec74f1 Jakub Kicinski 2016-08-31 175 #define FIELD_GET(_mask, _reg) \
3e9b3112ec74f1 Jakub Kicinski 2016-08-31 176 ({ \
2a6c045640c38a Geert Uytterhoeven 2025-11-06 177 __BF_FIELD_CHECK_REG(_mask, _reg, "FIELD_GET: "); \
2a6c045640c38a Geert Uytterhoeven 2025-11-06 178 __FIELD_GET(_mask, _reg, "FIELD_GET: "); \
3e9b3112ec74f1 Jakub Kicinski 2016-08-31 179 })
3e9b3112ec74f1 Jakub Kicinski 2016-08-31 180
a256ae22570ee4 Luo Jie 2025-04-17 181 /**
a256ae22570ee4 Luo Jie 2025-04-17 182 * FIELD_MODIFY() - modify a bitfield element
a256ae22570ee4 Luo Jie 2025-04-17 183 * @_mask: shifted mask defining the field's length and position
a256ae22570ee4 Luo Jie 2025-04-17 184 * @_reg_p: pointer to the memory that should be updated
a256ae22570ee4 Luo Jie 2025-04-17 185 * @_val: value to store in the bitfield
a256ae22570ee4 Luo Jie 2025-04-17 186 *
a256ae22570ee4 Luo Jie 2025-04-17 187 * FIELD_MODIFY() modifies the set of bits in @_reg_p specified by @_mask,
a256ae22570ee4 Luo Jie 2025-04-17 188 * by replacing them with the bitfield value passed in as @_val.
a256ae22570ee4 Luo Jie 2025-04-17 189 */
a256ae22570ee4 Luo Jie 2025-04-17 190 #define FIELD_MODIFY(_mask, _reg_p, _val) \
a256ae22570ee4 Luo Jie 2025-04-17 191 ({ \
a256ae22570ee4 Luo Jie 2025-04-17 192 typecheck_pointer(_reg_p); \
a256ae22570ee4 Luo Jie 2025-04-17 193 __BF_FIELD_CHECK(_mask, *(_reg_p), _val, "FIELD_MODIFY: "); \
a256ae22570ee4 Luo Jie 2025-04-17 194 *(_reg_p) &= ~(_mask); \
a256ae22570ee4 Luo Jie 2025-04-17 @195 *(_reg_p) |= (((typeof(_mask))(_val) << __bf_shf(_mask)) & (_mask)); \
a256ae22570ee4 Luo Jie 2025-04-17 196 })
a256ae22570ee4 Luo Jie 2025-04-17 197
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
More information about the Linux-mediatek
mailing list