tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: 92edc4aef86780a8ad01b092c6d6630bb3cb423d commit: 4a2d447bea5bdb175e0defaefcba74fc1517dff0 [4911/5794] pwm: Add PWM driver for Intel Keem Bay config: arm64-randconfig-p002-20201116 (attached as .config) compiler: aarch64-linux-gcc (GCC) 9.3.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=4a2d447bea5bdb175e0defaefcba74fc1517dff0 git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git git fetch --no-tags linux-next master git checkout 4a2d447bea5bdb175e0defaefcba74fc1517dff0 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arm64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@xxxxxxxxx> All errors (new ones prefixed by >>): In file included from drivers/pwm/pwm-keembay.c:16: In function 'field_multiplier', inlined from 'keembay_pwm_update_bits.isra.0' at include/linux/bitfield.h:124:17: >> include/linux/bitfield.h:119:3: error: call to '__bad_mask' declared with attribute error: bad bitfield mask 119 | __bad_mask(); | ^~~~~~~~~~~~ In function 'field_multiplier', inlined from 'keembay_pwm_update_bits.isra.0' at include/linux/bitfield.h:154:1: >> include/linux/bitfield.h:119:3: error: call to '__bad_mask' declared with attribute error: bad bitfield mask 119 | __bad_mask(); | ^~~~~~~~~~~~ vim +/__bad_mask +119 include/linux/bitfield.h 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 43 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 44 #define __BF_FIELD_CHECK(_mask, _reg, _val, _pfx) \ 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 45 ({ \ 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 46 BUILD_BUG_ON_MSG(!__builtin_constant_p(_mask), \ 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 47 _pfx "mask is not constant"); \ e36488c83b6d871 Arnd Bergmann 2018-08-17 48 BUILD_BUG_ON_MSG((_mask) == 0, _pfx "mask is zero"); \ 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 49 BUILD_BUG_ON_MSG(__builtin_constant_p(_val) ? \ 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 50 ~((_mask) >> __bf_shf(_mask)) & (_val) : 0, \ 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 51 _pfx "value too large for the field"); \ 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 52 BUILD_BUG_ON_MSG((_mask) > (typeof(_reg))~0ull, \ 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 53 _pfx "type of reg too small for mask"); \ 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 54 __BUILD_BUG_ON_NOT_POWER_OF_2((_mask) + \ 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 55 (1ULL << __bf_shf(_mask))); \ 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 56 }) 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 57 e31a50162feb352 Alex Elder 2020-03-12 58 /** e31a50162feb352 Alex Elder 2020-03-12 59 * FIELD_MAX() - produce the maximum value representable by a field e31a50162feb352 Alex Elder 2020-03-12 60 * @_mask: shifted mask defining the field's length and position e31a50162feb352 Alex Elder 2020-03-12 61 * e31a50162feb352 Alex Elder 2020-03-12 62 * FIELD_MAX() returns the maximum value that can be held in the field e31a50162feb352 Alex Elder 2020-03-12 63 * specified by @_mask. e31a50162feb352 Alex Elder 2020-03-12 64 */ e31a50162feb352 Alex Elder 2020-03-12 65 #define FIELD_MAX(_mask) \ e31a50162feb352 Alex Elder 2020-03-12 66 ({ \ e31a50162feb352 Alex Elder 2020-03-12 67 __BF_FIELD_CHECK(_mask, 0ULL, 0ULL, "FIELD_MAX: "); \ e31a50162feb352 Alex Elder 2020-03-12 68 (typeof(_mask))((_mask) >> __bf_shf(_mask)); \ e31a50162feb352 Alex Elder 2020-03-12 69 }) e31a50162feb352 Alex Elder 2020-03-12 70 1697599ee301a52 Jakub Kicinski 2017-02-09 71 /** 1697599ee301a52 Jakub Kicinski 2017-02-09 72 * FIELD_FIT() - check if value fits in the field 1697599ee301a52 Jakub Kicinski 2017-02-09 73 * @_mask: shifted mask defining the field's length and position 1697599ee301a52 Jakub Kicinski 2017-02-09 74 * @_val: value to test against the field 1697599ee301a52 Jakub Kicinski 2017-02-09 75 * 1697599ee301a52 Jakub Kicinski 2017-02-09 76 * Return: true if @_val can fit inside @_mask, false if @_val is too big. 1697599ee301a52 Jakub Kicinski 2017-02-09 77 */ 1697599ee301a52 Jakub Kicinski 2017-02-09 78 #define FIELD_FIT(_mask, _val) \ 1697599ee301a52 Jakub Kicinski 2017-02-09 79 ({ \ 444da3f52407d74 Jakub Kicinski 2020-08-10 80 __BF_FIELD_CHECK(_mask, 0ULL, 0ULL, "FIELD_FIT: "); \ 1697599ee301a52 Jakub Kicinski 2017-02-09 81 !((((typeof(_mask))_val) << __bf_shf(_mask)) & ~(_mask)); \ 1697599ee301a52 Jakub Kicinski 2017-02-09 82 }) 1697599ee301a52 Jakub Kicinski 2017-02-09 83 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 84 /** 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 85 * FIELD_PREP() - prepare a bitfield element 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 86 * @_mask: shifted mask defining the field's length and position 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 87 * @_val: value to put in the field 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 88 * 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 89 * FIELD_PREP() masks and shifts up the value. The result should 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 90 * be combined with other fields of the bitfield using logical OR. 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 91 */ 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 92 #define FIELD_PREP(_mask, _val) \ 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 93 ({ \ 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 94 __BF_FIELD_CHECK(_mask, 0ULL, _val, "FIELD_PREP: "); \ 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 95 ((typeof(_mask))(_val) << __bf_shf(_mask)) & (_mask); \ 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 96 }) 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 97 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 98 /** 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 99 * FIELD_GET() - extract a bitfield element 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 100 * @_mask: shifted mask defining the field's length and position 7240767450d6d83 Masahiro Yamada 2017-10-03 101 * @_reg: value of entire bitfield 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 102 * 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 103 * FIELD_GET() extracts the field specified by @_mask from the 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 104 * bitfield passed in as @_reg by masking and shifting it down. 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 105 */ 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 106 #define FIELD_GET(_mask, _reg) \ 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 107 ({ \ 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 108 __BF_FIELD_CHECK(_mask, _reg, 0U, "FIELD_GET: "); \ 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 109 (typeof(_mask))(((_reg) & (_mask)) >> __bf_shf(_mask)); \ 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 110 }) 3e9b3112ec74f19 Jakub Kicinski 2016-08-31 111 e7d4a95da86e0b0 Johannes Berg 2018-06-20 112 extern void __compiletime_error("value doesn't fit into mask") 00b0c9b82663ac4 Al Viro 2017-12-14 113 __field_overflow(void); 00b0c9b82663ac4 Al Viro 2017-12-14 114 extern void __compiletime_error("bad bitfield mask") 00b0c9b82663ac4 Al Viro 2017-12-14 115 __bad_mask(void); 00b0c9b82663ac4 Al Viro 2017-12-14 116 static __always_inline u64 field_multiplier(u64 field) 00b0c9b82663ac4 Al Viro 2017-12-14 117 { 00b0c9b82663ac4 Al Viro 2017-12-14 118 if ((field | (field - 1)) & ((field | (field - 1)) + 1)) 00b0c9b82663ac4 Al Viro 2017-12-14 @119 __bad_mask(); 00b0c9b82663ac4 Al Viro 2017-12-14 120 return field & -field; 00b0c9b82663ac4 Al Viro 2017-12-14 121 } 00b0c9b82663ac4 Al Viro 2017-12-14 122 static __always_inline u64 field_mask(u64 field) 00b0c9b82663ac4 Al Viro 2017-12-14 123 { 00b0c9b82663ac4 Al Viro 2017-12-14 124 return field / field_multiplier(field); 00b0c9b82663ac4 Al Viro 2017-12-14 125 } e31a50162feb352 Alex Elder 2020-03-12 126 #define field_max(field) ((typeof(field))field_mask(field)) 00b0c9b82663ac4 Al Viro 2017-12-14 127 #define ____MAKE_OP(type,base,to,from) \ 00b0c9b82663ac4 Al Viro 2017-12-14 128 static __always_inline __##type type##_encode_bits(base v, base field) \ 00b0c9b82663ac4 Al Viro 2017-12-14 129 { \ e7d4a95da86e0b0 Johannes Berg 2018-06-20 130 if (__builtin_constant_p(v) && (v & ~field_mask(field))) \ 00b0c9b82663ac4 Al Viro 2017-12-14 131 __field_overflow(); \ 00b0c9b82663ac4 Al Viro 2017-12-14 132 return to((v & field_mask(field)) * field_multiplier(field)); \ 00b0c9b82663ac4 Al Viro 2017-12-14 133 } \ 00b0c9b82663ac4 Al Viro 2017-12-14 134 static __always_inline __##type type##_replace_bits(__##type old, \ 00b0c9b82663ac4 Al Viro 2017-12-14 135 base val, base field) \ 00b0c9b82663ac4 Al Viro 2017-12-14 136 { \ 00b0c9b82663ac4 Al Viro 2017-12-14 137 return (old & ~to(field)) | type##_encode_bits(val, field); \ 00b0c9b82663ac4 Al Viro 2017-12-14 138 } \ 00b0c9b82663ac4 Al Viro 2017-12-14 139 static __always_inline void type##p_replace_bits(__##type *p, \ 00b0c9b82663ac4 Al Viro 2017-12-14 140 base val, base field) \ 00b0c9b82663ac4 Al Viro 2017-12-14 141 { \ 00b0c9b82663ac4 Al Viro 2017-12-14 142 *p = (*p & ~to(field)) | type##_encode_bits(val, field); \ 00b0c9b82663ac4 Al Viro 2017-12-14 143 } \ 00b0c9b82663ac4 Al Viro 2017-12-14 144 static __always_inline base type##_get_bits(__##type v, base field) \ 00b0c9b82663ac4 Al Viro 2017-12-14 145 { \ 00b0c9b82663ac4 Al Viro 2017-12-14 146 return (from(v) & field)/field_multiplier(field); \ 00b0c9b82663ac4 Al Viro 2017-12-14 147 } 00b0c9b82663ac4 Al Viro 2017-12-14 148 #define __MAKE_OP(size) \ 00b0c9b82663ac4 Al Viro 2017-12-14 149 ____MAKE_OP(le##size,u##size,cpu_to_le##size,le##size##_to_cpu) \ 00b0c9b82663ac4 Al Viro 2017-12-14 150 ____MAKE_OP(be##size,u##size,cpu_to_be##size,be##size##_to_cpu) \ 00b0c9b82663ac4 Al Viro 2017-12-14 151 ____MAKE_OP(u##size,u##size,,) 37a3862e1238262 Johannes Berg 2018-06-20 152 ____MAKE_OP(u8,u8,,) 00b0c9b82663ac4 Al Viro 2017-12-14 153 __MAKE_OP(16) 00b0c9b82663ac4 Al Viro 2017-12-14 154 __MAKE_OP(32) 00b0c9b82663ac4 Al Viro 2017-12-14 155 __MAKE_OP(64) 00b0c9b82663ac4 Al Viro 2017-12-14 156 #undef __MAKE_OP 00b0c9b82663ac4 Al Viro 2017-12-14 157 #undef ____MAKE_OP 00b0c9b82663ac4 Al Viro 2017-12-14 158 :::::: The code at line 119 was first introduced by commit :::::: 00b0c9b82663ac42e5a09f58ce960f81f29d64ee Add primitives for manipulating bitfields both in host- and fixed-endian. :::::: TO: Al Viro <viro@xxxxxxxxxxxxxxxxxx> :::::: CC: Al Viro <viro@xxxxxxxxxxxxxxxxxx> --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx
Attachment:
.config.gz
Description: application/gzip