_BITOPS_LONG_SHIFT seems to be x86-specific. I'll get rid of it. I'm also looking into a separate problem with 64-bit divisions. I've reproduced that with a 32-bit build. As I understand it, u64 / u64 should be OK, but for some reason it's doing a signed division somewhere. I'm trying to track that down. It's somewhere in the hash table statistics code. A build that disables statistics doesn't have a problem. Regards, Felix On 2017-09-19 01:42 AM, kbuild test robot wrote: > tree: git://people.freedesktop.org/~agd5f/linux.git amd-staging-drm-next > head: dcae401d111324489c066aa57ed9c77b97b475f9 > commit: 18c073719186a393b41715686cf95175c58919df [1046/1053] drm/amd: Closed hash table with low overhead > config: ia64-allyesconfig (attached as .config) > compiler: ia64-linux-gcc (GCC) 6.2.0 > reproduce: > wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross > chmod +x ~/bin/make.cross > git checkout 18c073719186a393b41715686cf95175c58919df > # save the attached .config to linux build tree > make.cross ARCH=ia64 > > All error/warnings (new ones prefixed by >>): > > In file included from drivers/gpu//drm/amd/lib/chash.c:30:0: > drivers/gpu//drm/amd/lib/../include/linux/chash.h: In function 'chash_iter_is_valid': >>> drivers/gpu//drm/amd/lib/../include/linux/chash.h:286:50: error: '_BITOPS_LONG_SHIFT' undeclared (first use in this function) > return !!(iter.table->valid_bitmap[iter.slot >> _BITOPS_LONG_SHIFT] & > ^~~~~~~~~~~~~~~~~~ > drivers/gpu//drm/amd/lib/../include/linux/chash.h:286:50: note: each undeclared identifier is reported only once for each function it appears in > drivers/gpu//drm/amd/lib/../include/linux/chash.h: In function 'chash_iter_is_empty': > drivers/gpu//drm/amd/lib/../include/linux/chash.h:292:49: error: '_BITOPS_LONG_SHIFT' undeclared (first use in this function) > return !(iter.table->occup_bitmap[iter.slot >> _BITOPS_LONG_SHIFT] & > ^~~~~~~~~~~~~~~~~~ > drivers/gpu//drm/amd/lib/../include/linux/chash.h: In function 'chash_iter_set_valid': > drivers/gpu//drm/amd/lib/../include/linux/chash.h:299:40: error: '_BITOPS_LONG_SHIFT' undeclared (first use in this function) > iter.table->valid_bitmap[iter.slot >> _BITOPS_LONG_SHIFT] |= iter.mask; > ^~~~~~~~~~~~~~~~~~ > drivers/gpu//drm/amd/lib/../include/linux/chash.h: In function 'chash_iter_set_invalid': > drivers/gpu//drm/amd/lib/../include/linux/chash.h:305:40: error: '_BITOPS_LONG_SHIFT' undeclared (first use in this function) > iter.table->valid_bitmap[iter.slot >> _BITOPS_LONG_SHIFT] &= ~iter.mask; > ^~~~~~~~~~~~~~~~~~ > drivers/gpu//drm/amd/lib/../include/linux/chash.h: In function 'chash_iter_set_empty': > drivers/gpu//drm/amd/lib/../include/linux/chash.h:310:40: error: '_BITOPS_LONG_SHIFT' undeclared (first use in this function) > iter.table->occup_bitmap[iter.slot >> _BITOPS_LONG_SHIFT] &= ~iter.mask; > ^~~~~~~~~~~~~~~~~~ > drivers/gpu//drm/amd/lib/../include/linux/chash.h: In function 'chash_iter_is_valid': >>> drivers/gpu//drm/amd/lib/../include/linux/chash.h:288:1: warning: control reaches end of non-void function [-Wreturn-type] > } > ^ > drivers/gpu//drm/amd/lib/../include/linux/chash.h: In function 'chash_iter_is_empty': > drivers/gpu//drm/amd/lib/../include/linux/chash.h:294:1: warning: control reaches end of non-void function [-Wreturn-type] > } > ^ > > vim +/_BITOPS_LONG_SHIFT +286 drivers/gpu//drm/amd/lib/../include/linux/chash.h > > 252 > 253 /** > 254 * CHASH_ITER_INIT - Initialize a hash table iterator > 255 * @tbl: Pointer to hash table to iterate over > 256 * @s: Initial slot number > 257 */ > 258 #define CHASH_ITER_INIT(table, s) { \ > 259 table, \ > 260 1UL << ((s) & (BITS_PER_LONG - 1)), \ > 261 s \ > 262 } > 263 /** > 264 * CHASH_ITER_SET - Set hash table iterator to new slot > 265 * @iter: Iterator > 266 * @s: Slot number > 267 */ > 268 #define CHASH_ITER_SET(iter, s) \ > 269 (iter).mask = 1UL << ((s) & (BITS_PER_LONG - 1)), \ > 270 (iter).slot = (s) > 271 /** > 272 * CHASH_ITER_INC - Increment hash table iterator > 273 * @table: Hash table to iterate over > 274 * > 275 * Wraps around at the end. > 276 */ > 277 #define CHASH_ITER_INC(iter) do { \ > 278 (iter).mask = (iter).mask << 1 | \ > 279 (iter).mask >> (BITS_PER_LONG - 1); \ > 280 (iter).slot = ((iter).slot + 1) & (iter).table->size_mask; \ > 281 } while (0) > 282 > 283 static inline bool chash_iter_is_valid(const struct chash_iter iter) > 284 { > 285 BUG_ON((unsigned)iter.slot >= (1 << iter.table->bits)); > > 286 return !!(iter.table->valid_bitmap[iter.slot >> _BITOPS_LONG_SHIFT] & > 287 iter.mask); > > 288 } > 289 static inline bool chash_iter_is_empty(const struct chash_iter iter) > 290 { > 291 BUG_ON((unsigned)iter.slot >= (1 << iter.table->bits)); > 292 return !(iter.table->occup_bitmap[iter.slot >> _BITOPS_LONG_SHIFT] & > 293 iter.mask); > 294 } > 295 > 296 static inline void chash_iter_set_valid(const struct chash_iter iter) > 297 { > 298 BUG_ON((unsigned)iter.slot >= (1 << iter.table->bits)); > 299 iter.table->valid_bitmap[iter.slot >> _BITOPS_LONG_SHIFT] |= iter.mask; > 300 iter.table->occup_bitmap[iter.slot >> _BITOPS_LONG_SHIFT] |= iter.mask; > 301 } > 302 static inline void chash_iter_set_invalid(const struct chash_iter iter) > 303 { > 304 BUG_ON((unsigned)iter.slot >= (1 << iter.table->bits)); > > 305 iter.table->valid_bitmap[iter.slot >> _BITOPS_LONG_SHIFT] &= ~iter.mask; > 306 } > 307 static inline void chash_iter_set_empty(const struct chash_iter iter) > 308 { > 309 BUG_ON((unsigned)iter.slot >= (1 << iter.table->bits)); > 310 iter.table->occup_bitmap[iter.slot >> _BITOPS_LONG_SHIFT] &= ~iter.mask; > 311 } > 312 > > --- > 0-DAY kernel test infrastructure Open Source Technology Center > https://lists.01.org/pipermail/kbuild-all Intel Corporation _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel