[radeon-alex:amd-staging-drm-next 1046/1053] drivers/gpu//drm/amd/lib/../include/linux/chash.h:286:50: error: '_BITOPS_LONG_SHIFT' undeclared
Felix Kuehling
felix.kuehling at amd.com
Tue Sep 19 15:47:36 UTC 2017
_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
More information about the dri-devel
mailing list