Subject: Re: linux-next: build failure after merge of the final tree

From: David Miller <[email-masked]>
Date: Mon, 09 Jan 2012 13:35:12 -0800 (PST)

From: Stephen Rothwell <[email-masked]>
Date: Mon, 9 Jan 2012 16:59:50 +1100

>> > include/trace/events/kmem.h:267:1: error: implicit declaration of function 'check_trace_callback_type_mm_page_alloc_extfrag' [-Werror=implicit-function-declaration]
>> > In file included from include/trace/ftrace.h:774:0,
>> >                  from include/trace/define_trace.h:86,
>> >                  from include/trace/events/power.h:240,
>> >                  from kernel/trace/power-traces.c:14:
>> > include/trace/events/kmem.h: In function 'perf_test_probe_mm_page_pcpu_drain':
>> > include/trace/events/kmem.h:256:1: error: implicit declaration of function 'check_trace_callback_type_mm_page_pcpu_drain' [-Werror=implicit-function-declaration]

I think the problem has to do with slab_def.h's explicit inclusion of
trace/kmem.h

If this somehow gets included while we are expanding define_trace.h, then
TRACE_SYSTEM will get redefined and screw up all of the includes that
define_trace.h is trying to perform for the sake of power.h

Other architectures probably hit slab_def.h via some earlier includes
and therefore don't hit this situation like Sparc does.

Adding an explicit <linux/slab.h> include to power-traces.c indeed fixes
the build.