_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@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to