Messages in this thread Patch in this message | | | Subject | Re: [PATCH 1/1] phy: intel: Fix compilation error on FIELD_PREP usage | From | Randy Dunlap <> | Date | Tue, 26 May 2020 08:38:52 -0700 |
| |
On 5/26/20 1:43 AM, Dilip Kota wrote: > FIELD_PREP expects mask variable datatype as unsigned long and constant. > Make the mask argument in combo_phy_w32_off_mask () as unsigned long const > datatype. > > Error reported as: > In file included from include/linux/build_bug.h:5, > from include/linux/bitfield.h:10, > from drivers/phy/intel/phy-intel-combo.c:8: > drivers/phy/intel/phy-intel-combo.c: In function 'combo_phy_w32_off_mask': > include/linux/bitfield.h:52:28: warning: comparison is always false due to limited range of data type [-Wtype-limits] > > include/linux/compiler.h:350:38: error: call to '__compiletime_assert_37' declared with attribute error: FIELD_PREP: mask is not constant > 94 | __BF_FIELD_CHECK(_mask, 0ULL, _val, "FIELD_PREP: "); | ^~~~~~~~~~~~~~~~ > drivers/phy/intel/phy-intel-combo.c:137:13: note: in expansion of macro 'FIELD_PREP' > 137 | reg_val |= FIELD_PREP(mask, val); > | ^~~~~~~~~~ > > Fixes: ac0a95a3ea78 ("phy: intel: Add driver support for ComboPhy") > Signed-off-by: Dilip Kota <eswara.kota@linux.intel.com> > Reported-by: kbuild test robot <lkp@intel.com>
also Reported-by: Randy Dunlap <rdunlap@infradead.org>
here: https://lore.kernel.org/linux-fsdevel/9960b5aa-4a8e-15a4-6e0b-63561f760d3a@infradead.org/
but I still see build errors after applying this patch.
CC drivers/phy/intel/phy-intel-combo.o In file included from ../include/linux/build_bug.h:5:0, from ../include/linux/bitfield.h:10, from ../drivers/phy/intel/phy-intel-combo.c:8: ../drivers/phy/intel/phy-intel-combo.c: In function ‘combo_phy_w32_off_mask’: ../include/linux/compiler.h:392:38: error: call to ‘__compiletime_assert_133’ declared with attribute error: FIELD_PREP: mask is not constant _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) ^ ../include/linux/compiler.h:373:4: note: in definition of macro ‘__compiletime_assert’ prefix ## suffix(); \ ^~~~~~ ../include/linux/compiler.h:392:2: note: in expansion of macro ‘_compiletime_assert’ _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) ^~~~~~~~~~~~~~~~~~~ ../include/linux/build_bug.h:39:37: note: in expansion of macro ‘compiletime_assert’ #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) ^~~~~~~~~~~~~~~~~~ ../include/linux/bitfield.h:46:3: note: in expansion of macro ‘BUILD_BUG_ON_MSG’ BUILD_BUG_ON_MSG(!__builtin_constant_p(_mask), \ ^~~~~~~~~~~~~~~~ ../include/linux/bitfield.h:94:3: note: in expansion of macro ‘__BF_FIELD_CHECK’ __BF_FIELD_CHECK(_mask, 0ULL, _val, "FIELD_PREP: "); \ ^~~~~~~~~~~~~~~~ ../drivers/phy/intel/phy-intel-combo.c:137:13: note: in expansion of macro ‘FIELD_PREP’ reg_val |= FIELD_PREP(mask, val); ^~~~~~~~~~ ../include/linux/compiler.h:392:38: error: call to ‘__compiletime_assert_137’ declared with attribute error: BUILD_BUG_ON failed: (((mask) + (1ULL << (__builtin_ffsll(mask) - 1))) & (((mask) + (1ULL << (__builtin_ffsll(mask) - 1))) - 1)) != 0 _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) ^ ../include/linux/compiler.h:373:4: note: in definition of macro ‘__compiletime_assert’ prefix ## suffix(); \ ^~~~~~ ../include/linux/compiler.h:392:2: note: in expansion of macro ‘_compiletime_assert’ _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) ^~~~~~~~~~~~~~~~~~~ ../include/linux/build_bug.h:39:37: note: in expansion of macro ‘compiletime_assert’ #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) ^~~~~~~~~~~~~~~~~~ ../include/linux/build_bug.h:50:2: note: in expansion of macro ‘BUILD_BUG_ON_MSG’ BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) ^~~~~~~~~~~~~~~~ ../include/linux/build_bug.h:21:2: note: in expansion of macro ‘BUILD_BUG_ON’ BUILD_BUG_ON(((n) & ((n) - 1)) != 0) ^~~~~~~~~~~~ ../include/linux/bitfield.h:54:3: note: in expansion of macro ‘__BUILD_BUG_ON_NOT_POWER_OF_2’ __BUILD_BUG_ON_NOT_POWER_OF_2((_mask) + \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../include/linux/bitfield.h:94:3: note: in expansion of macro ‘__BF_FIELD_CHECK’ __BF_FIELD_CHECK(_mask, 0ULL, _val, "FIELD_PREP: "); \ ^~~~~~~~~~~~~~~~ ../drivers/phy/intel/phy-intel-combo.c:137:13: note: in expansion of macro ‘FIELD_PREP’ reg_val |= FIELD_PREP(mask, val); ^~~~~~~~~~
> --- > drivers/phy/intel/phy-intel-combo.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/phy/intel/phy-intel-combo.c b/drivers/phy/intel/phy-intel-combo.c > index c2a35be4cdfb..05b7d724ceb0 100644 > --- a/drivers/phy/intel/phy-intel-combo.c > +++ b/drivers/phy/intel/phy-intel-combo.c > @@ -128,7 +128,7 @@ static int intel_cbphy_pcie_refclk_cfg(struct intel_cbphy_iphy *iphy, bool set) > } > > static inline void combo_phy_w32_off_mask(void __iomem *base, unsigned int reg, > - u32 mask, u32 val) > + unsigned long const mask, u32 val) > { > u32 reg_val; > >
-- ~Randy
| |