[rcu:rcu/next 53/55] include/linux/srcu.h:60:28: error: linux/srcutiny.h: No such file or directory

From: kbuild test robot
Date: Sat Mar 25 2017 - 16:09:17 EST


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