tree:   https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git 
rcu/next
head:   8ef41abc6267ab874db4f767866cc09b85a1f951
commit: c574d9a57769f1941153c41e5cfcd2bb13911cc3 [53/55] srcu: Create a tiny 
SRCU
config: x86_64-randconfig-a0-03260238 (attached as .config)
compiler: gcc-4.4 (Debian 4.4.7-8) 4.4.7
reproduce:
        git checkout c574d9a57769f1941153c41e5cfcd2bb13911cc3
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All errors (new ones prefixed by >>):

   In file included from include/linux/notifier.h:15,
                    from include/linux/memory_hotplug.h:6,
                    from include/linux/mmzone.h:749,
                    from include/linux/gfp.h:5,
                    from include/linux/slab.h:14,
                    from include/linux/crypto.h:24,
                    from arch/x86/kernel/asm-offsets.c:8:
>> include/linux/srcu.h:60:28: error: linux/srcutiny.h: No such file or 
>> directory
   In file included from include/linux/notifier.h:15,
                    from include/linux/memory_hotplug.h:6,
                    from include/linux/mmzone.h:749,
                    from include/linux/gfp.h:5,
                    from include/linux/slab.h:14,
                    from include/linux/crypto.h:24,
                    from arch/x86/kernel/asm-offsets.c:8:
   include/linux/srcu.h: In function 'srcu_read_lock_held':
>> include/linux/srcu.h:113: error: dereferencing pointer to incomplete type
   include/linux/srcu.h: In function 'srcu_read_lock':
   include/linux/srcu.h:176: error: dereferencing pointer to incomplete type
   include/linux/srcu.h: In function 'srcu_read_unlock':
   include/linux/srcu.h:190: error: dereferencing pointer to incomplete type
   In file included from include/linux/memory_hotplug.h:6,
                    from include/linux/mmzone.h:749,
                    from include/linux/gfp.h:5,
                    from include/linux/slab.h:14,
                    from include/linux/crypto.h:24,
                    from arch/x86/kernel/asm-offsets.c:8:
   include/linux/notifier.h: At top level:
>> include/linux/notifier.h:77: error: field 'srcu' has incomplete type
   make[2]: *** [arch/x86/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 +60 include/linux/srcu.h

    54  int init_srcu_struct(struct srcu_struct *sp);
    55  
    56  #define __SRCU_DEP_MAP_INIT(srcu_name)
    57  #endif /* #else #ifdef CONFIG_DEBUG_LOCK_ALLOC */
    58  
    59  #ifdef CONFIG_TINY_SRCU
  > 60  #include <linux/srcutiny.h>
    61  #elif defined(CONFIG_TREE_SRCU)
    62  #include <linux/srcutree.h>
    63  #else
    64  #error "Unknown SRCU implementation specified to kernel configuration"
    65  #endif
    66  
    67  /**
    68   * call_srcu() - Queue a callback for invocation after an SRCU grace 
period
    69   * @sp: srcu_struct in queue the callback
    70   * @head: structure to be used for queueing the SRCU callback.
    71   * @func: function to be invoked after the SRCU grace period
    72   *
    73   * The callback function will be invoked some time after a full SRCU
    74   * grace period elapses, in other words after all pre-existing SRCU
    75   * read-side critical sections have completed.  However, the callback
    76   * function might well execute concurrently with other SRCU read-side
    77   * critical sections that started after call_srcu() was invoked.  SRCU
    78   * read-side critical sections are delimited by srcu_read_lock() and
    79   * srcu_read_unlock(), and may be nested.
    80   *
    81   * The callback will be invoked from process context, but must 
nevertheless
    82   * be fast and must not block.
    83   */
    84  void call_srcu(struct srcu_struct *sp, struct rcu_head *head,
    85                  void (*func)(struct rcu_head *head));
    86  
    87  void cleanup_srcu_struct(struct srcu_struct *sp);
    88  int __srcu_read_lock(struct srcu_struct *sp) __acquires(sp);
    89  void __srcu_read_unlock(struct srcu_struct *sp, int idx) __releases(sp);
    90  void synchronize_srcu(struct srcu_struct *sp);
    91  
    92  #ifdef CONFIG_DEBUG_LOCK_ALLOC
    93  
    94  /**
    95   * srcu_read_lock_held - might we be in SRCU read-side critical section?
    96   *
    97   * If CONFIG_DEBUG_LOCK_ALLOC is selected, returns nonzero iff in an 
SRCU
    98   * read-side critical section.  In absence of CONFIG_DEBUG_LOCK_ALLOC,
    99   * this assumes we are in an SRCU read-side critical section unless it 
can
   100   * prove otherwise.
   101   *
   102   * Checks debug_lockdep_rcu_enabled() to prevent false positives during 
boot
   103   * and while lockdep is disabled.
   104   *
   105   * Note that SRCU is based on its own statemachine and it doesn't
   106   * relies on normal RCU, it can be called from the CPU which
   107   * is in the idle loop from an RCU point of view or offline.
   108   */
   109  static inline int srcu_read_lock_held(struct srcu_struct *sp)
   110  {
   111          if (!debug_lockdep_rcu_enabled())
   112                  return 1;
 > 113          return lock_is_held(&sp->dep_map);
   114  }
   115  
   116  #else /* #ifdef CONFIG_DEBUG_LOCK_ALLOC */

---
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