Skip to contentSkip to conversation

git-slab plus git-tip breaks i386 allnoconfig

PATCH Applied Andrew Morton 4 participants 11 messages Oct 9, 2008 – Oct 10, 2008

Subsystems (2)
lore
Share & tools
lore

Andrew Morton

author maintainer
#0 lore raw

In file included from include/linux/rcupdate.h:39,

                 from include/linux/marker.h:16,
                 from include/linux/kmemtrace.h:13,
                 from include/linux/slub_def.h:13,
                 from include/linux/slab.h:184,
                 from include/asm/pgtable_32.h:21,
                 from include/asm/pgtable.h:394,
                 from include/linux/mm.h:40,
                 from arch/x86/mm/pgtable.c:1:

include/linux/percpu.h: In function '__percpu_alloc_mask':
include/linux/percpu.h:108: error: implicit declaration of function 'kzalloc' include/linux/percpu.h:108: warning: return makes pointer from integer without a cast In file included from include/asm/pgtable_32.h:21,

                 from include/asm/pgtable.h:394,
                 from include/linux/mm.h:40,
                 from arch/x86/mm/pgtable.c:1:

include/linux/slab.h: At top level:
include/linux/slab.h:336: error: conflicting types for 'kzalloc' include/linux/percpu.h:108: error: previous implicit declaration of 'kzalloc' was here In file included from include/linux/rcupdate.h:39,

but that file includes slab.h, so I suspect we have some recursive include snafu somewhere which caused the slab.h inclusion to get skipped.

Shudder. I'll locally use this notapatch:

include/linux/percpu.h renamed from include/linux/percpu.h~a +6 -9
@@ -103,15 +103,12 @@ extern void percpu_free(void *__pdata);
 
 #define percpu_ptr(ptr, cpu) ({ (void)(cpu); (ptr); })
 
-static __always_inline void *__percpu_alloc_mask(size_t size, gfp_t gfp, cpumask_t *mask)
-{
-	return kzalloc(size, gfp);
-}
-
-static inline void percpu_free(void *__pdata)
-{
-	kfree(__pdata);
-}
+/*
+ * __percpu_alloc_mask() and percpu_free() are macros to simplify header
+ * dependencies
+ */
+#define __percpu_alloc_mask(size, gfp, maskp) kzalloc(size, gfp)
+#define percpu_free(pdata) kfree(pdata)
 
 #endif /* CONFIG_SMP */
 

Whoever merges second gets to fix this for real - have fun ;)

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

author maintainer
#1 lore raw

OK, i386 allmodconfig is suffering something similar.

In file included from include/linux/slub_def.h:13,

                 from include/linux/slab.h:184,
                 from include/linux/percpu.h:5,
                 from include/linux/rcupdate.h:39,
                 from include/linux/marker.h:16,
                 from include/linux/module.h:18,
                 from include/linux/crypto.h:21,
                 from arch/x86/kernel/asm-offsets_32.c:7,
                 from arch/x86/kernel/asm-offsets.c:2:

include/linux/kmemtrace.h: In function 'kmemtrace_mark_alloc_node':
include/linux/kmemtrace.h:33: error: implicit declaration of function 'trace_mark' include/linux/kmemtrace.h:33: error: 'kmemtrace_alloc' undeclared (first use in this function) include/linux/kmemtrace.h:33: error: (Each undeclared identifier is reported only once include/linux/kmemtrace.h:33: error: for each function it appears in.) include/linux/kmemtrace.h: In function 'kmemtrace_mark_free':
include/linux/kmemtrace.h:44: error: 'kmemtrace_free' undeclared (first use in this function)

I'll drop the slab tree.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

#2 lore raw

Hi,

Quoted 19 lines · Andrew Morton

OK, i386 allmodconfig is suffering something similar.

In file included from include/linux/slub_def.h:13,

                 from include/linux/slab.h:184,
                 from include/linux/percpu.h:5,
                 from include/linux/rcupdate.h:39,
                 from include/linux/marker.h:16,
                 from include/linux/module.h:18,
                 from include/linux/crypto.h:21,
                 from arch/x86/kernel/asm-offsets_32.c:7,
                 from arch/x86/kernel/asm-offsets.c:2:

include/linux/kmemtrace.h: In function 'kmemtrace_mark_alloc_node':
include/linux/kmemtrace.h:33: error: implicit declaration of function 'trace_mark' include/linux/kmemtrace.h:33: error: 'kmemtrace_alloc' undeclared (first use in this function) include/linux/kmemtrace.h:33: error: (Each undeclared identifier is reported only once include/linux/kmemtrace.h:33: error: for each function it appears in.) include/linux/kmemtrace.h: In function 'kmemtrace_mark_free':
include/linux/kmemtrace.h:44: error: 'kmemtrace_free' undeclared (first use in this function)

Quoted 1 line

I'll drop the slab tree.

Oh, marker.h includes kmemtrace.h through dependencies... I'd argue that's a marker.h bug; otherwise I don't see how we can use it in slab. Mathieu?

Pekka

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

#3 lore raw
Quoted 22 lines · * Pekka Enberg ([email protected]) wrote:

Hi,

Quoted 19 lines · Andrew Morton

OK, i386 allmodconfig is suffering something similar.

In file included from include/linux/slub_def.h:13,

                 from include/linux/slab.h:184,
                 from include/linux/percpu.h:5,
                 from include/linux/rcupdate.h:39,
                 from include/linux/marker.h:16,
                 from include/linux/module.h:18,
                 from include/linux/crypto.h:21,
                 from arch/x86/kernel/asm-offsets_32.c:7,
                 from arch/x86/kernel/asm-offsets.c:2:

include/linux/kmemtrace.h: In function 'kmemtrace_mark_alloc_node':
include/linux/kmemtrace.h:33: error: implicit declaration of function 'trace_mark' include/linux/kmemtrace.h:33: error: 'kmemtrace_alloc' undeclared (first use in this function) include/linux/kmemtrace.h:33: error: (Each undeclared identifier is reported only once include/linux/kmemtrace.h:33: error: for each function it appears in.) include/linux/kmemtrace.h: In function 'kmemtrace_mark_free':
include/linux/kmemtrace.h:44: error: 'kmemtrace_free' undeclared (first use in this function)

Quoted 8 lines
Quoted 1 line

I'll drop the slab tree.

Oh, marker.h includes kmemtrace.h through dependencies... I'd argue that's a marker.h bug; otherwise I don't see how we can use it in slab. Mathieu?

Pekka

(already sent privately to Ingo and Andrew)

Ingo, can you simply revert commits 44c2a8c1cdf0f3374ef2f4f91db551527a336fb2
"markers: turn marker_synchronize_unregister() into an inline" and
"Tracepoints synchronize unregister static inline"
(this last one does not seem to have hit -tip yet, but may be in -ftrace staging)

That should fix the issue.

Mathieu

Signature · 8 lines
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F  BA06 3F25 A8FE 3BAE 9A68

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected].  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
#4 lore raw
Quoted 42 lines · Mathieu Desnoyers
Quoted 22 lines · * Pekka Enberg ([email protected]) wrote:

Hi,

Quoted 19 lines · Andrew Morton

OK, i386 allmodconfig is suffering something similar.

In file included from include/linux/slub_def.h:13,

                 from include/linux/slab.h:184,
                 from include/linux/percpu.h:5,
                 from include/linux/rcupdate.h:39,
                 from include/linux/marker.h:16,
                 from include/linux/module.h:18,
                 from include/linux/crypto.h:21,
                 from arch/x86/kernel/asm-offsets_32.c:7,
                 from arch/x86/kernel/asm-offsets.c:2:

include/linux/kmemtrace.h: In function 'kmemtrace_mark_alloc_node':
include/linux/kmemtrace.h:33: error: implicit declaration of function 'trace_mark' include/linux/kmemtrace.h:33: error: 'kmemtrace_alloc' undeclared (first use in this function) include/linux/kmemtrace.h:33: error: (Each undeclared identifier is reported only once include/linux/kmemtrace.h:33: error: for each function it appears in.) include/linux/kmemtrace.h: In function 'kmemtrace_mark_free':
include/linux/kmemtrace.h:44: error: 'kmemtrace_free' undeclared (first use in this function)

Quoted 8 lines
Quoted 1 line

I'll drop the slab tree.

Oh, marker.h includes kmemtrace.h through dependencies... I'd argue that's a marker.h bug; otherwise I don't see how we can use it in slab. Mathieu?

Pekka

(already sent privately to Ingo and Andrew)

Ingo, can you simply revert commits 44c2a8c1cdf0f3374ef2f4f91db551527a336fb2
"markers: turn marker_synchronize_unregister() into an inline" and
"Tracepoints synchronize unregister static inline"
(this last one does not seem to have hit -tip yet, but may be in -ftrace staging)

Quoted 1 line

That should fix the issue.

hm, could you please send a fix instead? I can revert from integration branches temporarily but this needs a real fix.

Ingo

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

#5 lore raw

PATCH 1/1 Markers : revert synchronize marker unregister static inline

Use a #define for synchronize marker unregister to fix include dependencies.

CC Pekka Enberg <[email protected]>
CC Andrew Morton <[email protected]>
CC Eduard - Gabriel Munteanu <[email protected]>
---
 include/linux/marker.h |    6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)
include/linux/marker.h +1 -5
Index: linux-2.6-lttng/include/linux/marker.h
===================================================================
@@ -13,7 +13,6 @@
  */
 
 #include <linux/types.h>
-#include <linux/rcupdate.h>
 
 struct module;
 struct marker;
@@ -166,9 +165,6 @@ extern void *marker_get_private_data(con
  * unregistration and the end of module exit to make sure there is no caller
  * executing a probe when it is freed.
  */
-static inline void marker_synchronize_unregister(void)
-{
-	synchronize_sched();
-}
+#define marker_synchronize_unregister() synchronize_sched()
 
 #endif
Signature · 8 lines
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F  BA06 3F25 A8FE 3BAE 9A68

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected].  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Acked-by on v1 1/1
#6 lore raw

Re: [PATCH] Markers : revert synchronize marker unregister static inline

Quoted 2 lines · Mathieu Desnoyers

Use a #define for synchronize marker unregister to fix include dependencies.

Looks good to me. Maybe you want to explicitly mention the connection with slab in the changelog though? Otherwise someone else will go and break the thing giving Andrew yet another excuse to drop my tree. :-)

Quoted 22 lines
CC Pekka Enberg <[email protected]>
CC Andrew Morton <[email protected]>
CC Eduard - Gabriel Munteanu <[email protected]>
---
 include/linux/marker.h |    6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

Index: linux-2.6-lttng/include/linux/marker.h
===================================================================

include/linux/marker.h +0 -1
@@ -13,7 +13,6 @@
  */
 
 #include <linux/types.h>
-#include <linux/rcupdate.h>
 
 struct module;
 struct marker;

include/linux/marker.h extern void *marker_get_private_data(con · line 170

Quoted 10 lines
include/linux/marker.h +1 -4
@@ -166,9 +165,6 @@ extern void *marker_get_private_data(con
  * unregistration and the end of module exit to make sure there is no caller
  * executing a probe when it is freed.
  */
-static inline void marker_synchronize_unregister(void)
-{
-	synchronize_sched();
-}
+#define marker_synchronize_unregister() synchronize_sched()
 
 #endif

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

Acked-by Pekka Enberg
#7 lore raw

Re: [PATCH] Markers : revert synchronize marker unregister static inline (update)

Use a #define for synchronize marker unregister to fix include dependencies.

Fixes the slab circular inclusion, where rcupdate includes slab, which includes markers which includes rcupdate.

---
 include/linux/marker.h |    6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)
include/linux/marker.h +1 -5
Index: linux-2.6-lttng/include/linux/marker.h
===================================================================
@@ -13,7 +13,6 @@
  */
 
 #include <linux/types.h>
-#include <linux/rcupdate.h>
 
 struct module;
 struct marker;
@@ -166,9 +165,6 @@ extern void *marker_get_private_data(con
  * unregistration and the end of module exit to make sure there is no caller
  * executing a probe when it is freed.
  */
-static inline void marker_synchronize_unregister(void)
-{
-	synchronize_sched();
-}
+#define marker_synchronize_unregister() synchronize_sched()
 
 #endif
Signature · 8 lines
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F  BA06 3F25 A8FE 3BAE 9A68

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected].  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Applied
#8 lore raw

Re: [PATCH] Markers : revert synchronize marker unregister static inline (update)

Quoted 7 lines · Mathieu Desnoyers

Use a #define for synchronize marker unregister to fix include dependencies.

Fixes the slab circular inclusion, where rcupdate includes slab, which includes markers which includes rcupdate.

applied to tip/tracing/core, thanks Mathieu!

also fast-tracked it to tip/auto-ftrace-next and tip/auto-latest, to ease Andrew's integration efforts.

Ingo

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

#9 lore raw

Re: [PATCH] Markers : revert synchronize marker unregister static inline

In reply to Pekka Enberg
Quoted 7 lines · Pekka Enberg
Quoted 2 lines · Mathieu Desnoyers

Use a #define for synchronize marker unregister to fix include dependencies.

Looks good to me. Maybe you want to explicitly mention the connection with slab in the changelog though? Otherwise someone else will go and break the thing giving Andrew yet another excuse to drop my tree. :-)

i applied the commit below - and i added the info about this slab.git and tracing.git integration effect as well.

Ingo

-------------->

#10 lore raw
In reply to Ingo Molnar
Quoted 45 lines · * Ingo Molnar ([email protected]) wrote:
Quoted 42 lines · Mathieu Desnoyers
Quoted 22 lines · * Pekka Enberg ([email protected]) wrote:

Hi,

Quoted 19 lines · Andrew Morton

OK, i386 allmodconfig is suffering something similar.

In file included from include/linux/slub_def.h:13,

                 from include/linux/slab.h:184,
                 from include/linux/percpu.h:5,
                 from include/linux/rcupdate.h:39,
                 from include/linux/marker.h:16,
                 from include/linux/module.h:18,
                 from include/linux/crypto.h:21,
                 from arch/x86/kernel/asm-offsets_32.c:7,
                 from arch/x86/kernel/asm-offsets.c:2:

include/linux/kmemtrace.h: In function 'kmemtrace_mark_alloc_node':
include/linux/kmemtrace.h:33: error: implicit declaration of function 'trace_mark' include/linux/kmemtrace.h:33: error: 'kmemtrace_alloc' undeclared (first use in this function) include/linux/kmemtrace.h:33: error: (Each undeclared identifier is reported only once include/linux/kmemtrace.h:33: error: for each function it appears in.) include/linux/kmemtrace.h: In function 'kmemtrace_mark_free':
include/linux/kmemtrace.h:44: error: 'kmemtrace_free' undeclared (first use in this function)

Quoted 8 lines
Quoted 1 line

I'll drop the slab tree.

Oh, marker.h includes kmemtrace.h through dependencies... I'd argue that's a marker.h bug; otherwise I don't see how we can use it in slab. Mathieu?

Pekka

(already sent privately to Ingo and Andrew)

Ingo, can you simply revert commits 44c2a8c1cdf0f3374ef2f4f91db551527a336fb2
"markers: turn marker_synchronize_unregister() into an inline" and
"Tracepoints synchronize unregister static inline"
(this last one does not seem to have hit -tip yet, but may be in -ftrace staging)

Quoted 5 lines
Quoted 1 line

That should fix the issue.

hm, could you please send a fix instead? I can revert from integration branches temporarily but this needs a real fix.

Just sent a fix for the markers. The tracepoints however need to include rcupdate.h because it uses rcu_read_lock_sched_notrace and rcu_dereference in a macro, and this macro is expected to be expanded in header files. So people will have to be careful not to include tracepoint.h in such sensitive header files. Therefore I'll leave the static inline there.

Mathieu

Quoted 1 line

Ingo

Signature · 8 lines
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F  BA06 3F25 A8FE 3BAE 9A68

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected].  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>