tree:   https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git 
dev.2017.10.05a
head:   39ae2675aa536e6ef9d334fe9097d1e2c6b25fbc
commit: 7e3675cc18bbf4d84f60bfc02ff563ae3764ad35 [32/34] locking/barriers: Kill 
lockless_dereference
config: h8300-h8300h-sim_defconfig (attached as .config)
compiler: h8300-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 7e3675cc18bbf4d84f60bfc02ff563ae3764ad35
        # save the attached .config to linux build tree
        make.cross ARCH=h8300 

All error/warnings (new ones prefixed by >>):

   In file included from include/uapi/linux/stddef.h:1:0,
                    from include/linux/stddef.h:4,
                    from arch/h8300/kernel/asm-offsets.c:11:
   include/linux/list.h: In function 'list_empty':
>> include/linux/compiler.h:343:2: error: implicit declaration of function 
>> 'smp_read_barrier_depends' [-Werror=implicit-function-declaration]
     smp_read_barrier_depends(); /* Enforce dependency ordering from x */ \
     ^
   include/linux/compiler.h:346:22: note: in expansion of macro '__READ_ONCE'
    #define READ_ONCE(x) __READ_ONCE(x, 1)
                         ^~~~~~~~~~~
>> include/linux/list.h:202:9: note: in expansion of macro 'READ_ONCE'
     return READ_ONCE(head->next) == head;
            ^~~~~~~~~
   cc1: some warnings being treated as errors
   make[2]: *** [arch/h8300/kernel/asm-offsets.s] Error 1
   make[2]: Target '__build' not remade because of errors.
   make[1]: *** [prepare0] Error 2
   make[1]: Target 'prepare' not remade because of errors.
   make: *** [sub-make] Error 2

vim +/smp_read_barrier_depends +343 include/linux/compiler.h

   312  
   313  /*
   314   * Prevent the compiler from merging or refetching reads or writes. The
   315   * compiler is also forbidden from reordering successive instances of
   316   * READ_ONCE, WRITE_ONCE and ACCESS_ONCE (see below), but only when the
   317   * compiler is aware of some particular ordering.  One way to make the
   318   * compiler aware of ordering is to put the two invocations of 
READ_ONCE,
   319   * WRITE_ONCE or ACCESS_ONCE() in different C statements.
   320   *
   321   * In contrast to ACCESS_ONCE these two macros will also work on 
aggregate
   322   * data types like structs or unions. If the size of the accessed data
   323   * type exceeds the word size of the machine (e.g., 32 bits or 64 bits)
   324   * READ_ONCE() and WRITE_ONCE() will fall back to memcpy(). There's at
   325   * least two memcpy()s: one for the __builtin_memcpy() and then one for
   326   * the macro doing the copy of variable - '__u' allocated on the stack.
   327   *
   328   * Their two major use cases are: (1) Mediating communication between
   329   * process-level code and irq/NMI handlers, all running on the same CPU,
   330   * and (2) Ensuring that the compiler does not  fold, spindle, or 
otherwise
   331   * mutilate accesses that either do not require ordering or that 
interact
   332   * with an explicit memory barrier or atomic instruction that provides 
the
   333   * required ordering.
   334   */
   335  
   336  #define __READ_ONCE(x, check)                                           
\
   337  ({                                                                      
\
   338          union { typeof(x) __val; char __c[1]; } __u;                    
\
   339          if (check)                                                      
\
   340                  __read_once_size(&(x), __u.__c, sizeof(x));             
\
   341          else                                                            
\
   342                  __read_once_size_nocheck(&(x), __u.__c, sizeof(x));     
\
 > 343          smp_read_barrier_depends(); /* Enforce dependency ordering from 
 > x */ \
   344          __u.__val;                                                      
\
   345  })
   346  #define READ_ONCE(x) __READ_ONCE(x, 1)
   347  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

Reply via email to