[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