* Next April 24: [S390] allmodconfig build failure (trace/events) [not found] <20090424150456.ff35e4ea.sfr@canb.auug.org.au> @ 2009-04-24 7:12 ` Sachin Sant 2009-04-24 7:25 ` Ingo Molnar 0 siblings, 1 reply; 7+ messages in thread From: Sachin Sant @ 2009-04-24 7:12 UTC (permalink / raw) To: linux-s390; +Cc: linux-next, LKML, Heiko Carstens, Ingo Molnar Today's next tree build(s390 allmodconfig) failed with kernel/built-in.o: In function `trace_softirq_entry' include/trace/events/irq.h:42: undefined reference to `__tracepoint_softirq_entry' include/trace/events/irq.h:42: undefined reference to `__tracepoint_softirq_entry' kernel/built-in.o: In function `trace_softirq_exit': include/trace/events/irq.h:48: undefined reference to `__tracepoint_softirq_exit' include/trace/events/irq.h:48: undefined reference to `__tracepoint_softirq_exit' Thanks -Sachin -- --------------------------------- Sachin Sant IBM Linux Technology Center India Systems and Technology Labs Bangalore, India --------------------------------- ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Next April 24: [S390] allmodconfig build failure (trace/events) 2009-04-24 7:12 ` Next April 24: [S390] allmodconfig build failure (trace/events) Sachin Sant @ 2009-04-24 7:25 ` Ingo Molnar 2009-04-24 8:41 ` Heiko Carstens 0 siblings, 1 reply; 7+ messages in thread From: Ingo Molnar @ 2009-04-24 7:25 UTC (permalink / raw) To: Sachin Sant, Steven Rostedt, Frédéric Weisbecker Cc: linux-s390, linux-next, LKML, Heiko Carstens, Ingo Molnar * Sachin Sant <sachinp@in.ibm.com> wrote: > Today's next tree build(s390 allmodconfig) failed with > > kernel/built-in.o: In function `trace_softirq_entry' > include/trace/events/irq.h:42: undefined reference to > `__tracepoint_softirq_entry' > include/trace/events/irq.h:42: undefined reference to > `__tracepoint_softirq_entry' > kernel/built-in.o: In function `trace_softirq_exit': > include/trace/events/irq.h:48: undefined reference to > `__tracepoint_softirq_exit' > include/trace/events/irq.h:48: undefined reference to > `__tracepoint_softirq_exit' Hm, that's weird - s390 does not build kernel/softirq.o? Hm, it does - softirq.o is an obj-y object. Ingo ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Next April 24: [S390] allmodconfig build failure (trace/events) 2009-04-24 7:25 ` Ingo Molnar @ 2009-04-24 8:41 ` Heiko Carstens 2009-04-29 9:51 ` Sachin Sant 0 siblings, 1 reply; 7+ messages in thread From: Heiko Carstens @ 2009-04-24 8:41 UTC (permalink / raw) To: Ingo Molnar Cc: Sachin Sant, Steven Rostedt, Frédéric Weisbecker, linux-s390, linux-next, LKML, Ingo Molnar On Fri, 24 Apr 2009 09:25:33 +0200 Ingo Molnar <mingo@elte.hu> wrote: > > * Sachin Sant <sachinp@in.ibm.com> wrote: > > > Today's next tree build(s390 allmodconfig) failed with > > > > kernel/built-in.o: In function `trace_softirq_entry' > > include/trace/events/irq.h:42: undefined reference to > > `' > > include/trace/events/irq.h:42: undefined reference to > > `__tracepoint_softirq_entry' > > kernel/built-in.o: In function `trace_softirq_exit': > > include/trace/events/irq.h:48: undefined reference to > > `__tracepoint_softirq_exit' > > include/trace/events/irq.h:48: undefined reference to > > `__tracepoint_softirq_exit' > > Hm, that's weird - s390 does not build kernel/softirq.o? Hm, it does > - softirq.o is an obj-y object. s390 does build kernel/softirq.o. However it's anything but obvious to me how the tracepoint infrastructure works. Too many #ifdefs, #define's and #undefine's... I would expect that struct __tracepoint_softirq_entry somehow gets defined via one of the TRACE_FORMAT macros, no? kernel/softirq.i has these parts wrt. __tracepoint_softirq_entry: # 42 "include/trace/events/irq.h" extern struct tracepoint __tracepoint_softirq_entry; static inline __attribute__((always_inline)) void trace_softirq_entry(struc t softirq_action *h, struct softirq_action *vec) { if (__builtin_expect(!!(__tracepoint_softirq_entry.state), 0)) do { void **it _func; do { } while (0); it_func = ({ typeof((&__tracepoint_softirq_entry)->funcs) _________p1 = (*(volatile typeof((&__tracepoi nt_softirq_entry)->funcs) *)&((&__tracepoint_softirq_entry)->funcs)); do { } while(0); (_________p1); }); if (it_func) { do { (( void(*)(struct softirq_action *h, struct softirq_action *vec))(*it_func))(h, vec); } while (*(++it_func)); } do { } while (0); } while (0); } static inline __attribute__((always_inline)) int register_trace_softirq_entry(void (*probe)(struct softirq_action *h, struct softirq_action *vec)) { return tracepoint_probe_register("softirq_entry", (void *)probe); } static inline __attribute __((always_inline)) int unregister_trace_softirq_entry(void (*probe)(struct softirq_action *h, struct softirq_action *vec)) { re turn tracepoint_probe_unregister("softirq_entry", (void *)probe); }; extern struct tracepoint __tracepoint_softirq_exit; static inline __attribute__((always_inline)) void trace_softirq_exit(struct softirq_action *h, struct softirq_action *vec) { if (__builtin_expect(!!(__tracepoint_softirq_exit.state), 0)) do { void **it_fu nc; do { } while (0); it_func = ({ typeof((&__tracepoint_softirq_exit)->funcs) _________p1 = (*(volatile typeof((&__tracepoint_s oftirq_exit)->funcs) *)&((&__tracepoint_softirq_exit)->funcs)); do { } while(0); (_________p1); }); if (it_func) { do { ((void(* )(struct softirq_action *h, struct softirq_action *vec))(*it_func))(h, vec); } while (*(++it_func)); } do { } while (0); } while (0); } static inline __attribute__((always_inline)) int register_trace_softirq_exit(void (*probe)(struct softirq_action *h, str uct softirq_action *vec)) { return tracepoint_probe_register("softirq_exit", (void *)probe); } static inline __attribute__((alwa ys_inline)) int unregister_trace_softirq_exit(void (*probe)(struct softirq_action *h, struct softirq_action *vec)) { return trac epoint_probe_unregister("softirq_exit", (void *)probe); }; __do_softirq looks like below. So I would expect some header file include dependency? Dunno... void __do_softirq(void) { struct softirq_action *h; __u32 pending; int max_restart = 10; int cpu; pending = ((*((struct _lowcore *) 0)).softirq_pending); account_system_vtime(((struct task_struct *const)(*((struct _lowcore *) 0)).current_task)); __local_bh_disable((unsigned long)__builtin_return_address(0)); do { ((struct task_struct *const)(*((struct _lowcore *) 0)).current_task)->softirq_context++; } while (0); cpu = ((*((struct _lowcore *) 0)).cpu_nr); restart: (((*((struct _lowcore *) 0)).softirq_pending) = (0)); do { trace_hardirqs_on(); raw_local_irq_enable(); } while (0); h = softirq_vec; do { if (pending & 1) { int prev_count = (current_thread_info()->preempt_count); trace_softirq_entry(h, softirq_vec); h->action(h); trace_softirq_exit(h, softirq_vec); if (__builtin_expect(!!(prev_count != (current_thread_info()->preempt_count)), 0)) { printk("<3>" "huh, entered softirq %td %s %p" "with preempt_count %08x," " exited with %08x?\n", h - softirq_vec, softirq_to_name[h - softirq_vec], h->action, prev_count, (current_thread_info()->preempt_count)); (current_thread_info()->preempt_count) = prev_count; } rcu_bh_qsctr_inc(cpu); } h++; pending >>= 1; } while (pending); do { raw_local_irq_disable(); trace_hardirqs_off(); } while (0); pending = ((*((struct _lowcore *) 0)).softirq_pending); if (pending && --max_restart) goto restart; if (pending) wakeup_softirqd(); do { ((struct task_struct *const)(*((struct _lowcore *) 0)).current_task)->softirq_context--; } while (0); account_system_vtime(((struct task_struct *const)(*((struct _lowcore *) 0)).current_task)); _local_bh_enable(); } ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Next April 24: [S390] allmodconfig build failure (trace/events) 2009-04-24 8:41 ` Heiko Carstens @ 2009-04-29 9:51 ` Sachin Sant 2009-04-29 11:51 ` Heiko Carstens 0 siblings, 1 reply; 7+ messages in thread From: Sachin Sant @ 2009-04-29 9:51 UTC (permalink / raw) To: Heiko Carstens, Ingo Molnar Cc: Steven Rostedt, Frédéric Weisbecker, linux-s390, linux-next, LKML Heiko Carstens wrote: > On Fri, 24 Apr 2009 09:25:33 +0200 > Ingo Molnar <mingo@elte.hu> wrote: > > >> * Sachin Sant <sachinp@in.ibm.com> wrote: >> >> >>> Today's next tree build(s390 allmodconfig) failed with >>> >>> kernel/built-in.o: In function `trace_softirq_entry' >>> include/trace/events/irq.h:42: undefined reference to >>> `' >>> include/trace/events/irq.h:42: undefined reference to >>> `__tracepoint_softirq_entry' >>> kernel/built-in.o: In function `trace_softirq_exit': >>> include/trace/events/irq.h:48: undefined reference to >>> `__tracepoint_softirq_exit' >>> include/trace/events/irq.h:48: undefined reference to >>> `__tracepoint_softirq_exit' >>> >> Hm, that's weird - s390 does not build kernel/softirq.o? Hm, it does >> - softirq.o is an obj-y object. >> > > s390 does build kernel/softirq.o. However it's anything but obvious to > me how the tracepoint infrastructure works. Too many #ifdefs, #define's > and #undefine's... > > I would expect that struct __tracepoint_softirq_entry somehow gets > defined via one of the TRACE_FORMAT macros, no? Today's next tree also has this failure. Any solution for this problem ? Thanks -Sachin -- --------------------------------- Sachin Sant IBM Linux Technology Center India Systems and Technology Labs Bangalore, India --------------------------------- ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Next April 24: [S390] allmodconfig build failure (trace/events) 2009-04-29 9:51 ` Sachin Sant @ 2009-04-29 11:51 ` Heiko Carstens 2009-04-29 12:04 ` Ingo Molnar 2009-04-29 12:09 ` Steven Rostedt 0 siblings, 2 replies; 7+ messages in thread From: Heiko Carstens @ 2009-04-29 11:51 UTC (permalink / raw) To: Sachin Sant Cc: Ingo Molnar, Steven Rostedt, Frédéric Weisbecker, linux-s390, linux-next, LKML On Wed, 29 Apr 2009 15:21:39 +0530 Sachin Sant <sachinp@in.ibm.com> wrote: > Heiko Carstens wrote: > > On Fri, 24 Apr 2009 09:25:33 +0200 > > Ingo Molnar <mingo@elte.hu> wrote: > >> * Sachin Sant <sachinp@in.ibm.com> wrote: > >>> Today's next tree build(s390 allmodconfig) failed with > >>> > >>> kernel/built-in.o: In function `trace_softirq_entry' > >>> include/trace/events/irq.h:42: undefined reference to > >>> `' > >>> include/trace/events/irq.h:42: undefined reference to > >>> `__tracepoint_softirq_entry' > >>> kernel/built-in.o: In function `trace_softirq_exit': > >>> include/trace/events/irq.h:48: undefined reference to > >>> `__tracepoint_softirq_exit' > >>> include/trace/events/irq.h:48: undefined reference to > >>> `__tracepoint_softirq_exit' > >>> > >> Hm, that's weird - s390 does not build kernel/softirq.o? Hm, it does > >> - softirq.o is an obj-y object. > > > > s390 does build kernel/softirq.o. However it's anything but obvious to > > me how the tracepoint infrastructure works. Too many #ifdefs, #define's > > and #undefine's... > > > > I would expect that struct __tracepoint_softirq_entry somehow gets > > defined via one of the TRACE_FORMAT macros, no? > Today's next tree also has this failure. Any solution for this problem ? Ingo, could you pick up the patch below please? Subject: [PATCH] tracing: fix compile error From: Heiko Carstens <heiko.carstens@de.ibm.com> "tracing: create automated trace defines" causes this compile error on s390: kernel/built-in.o: In function `__do_softirq': (.text+0x1c680): undefined reference to `__tracepoint_softirq_entry' This happens because the definitions of the softirq tracepoints were moved from kernel/softirq.c to kernel/irq/handle.c. Since s390 doesn't support generic hardirqs handle.c doesn't get compiled and the definitions are missing. So move the tracepoints to softirq.c again. Reported-by: Sachin Sant <sachinp@in.ibm.com> Cc: Steven Rostedt <rostedt@goodmis.org> Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> --- kernel/irq/handle.c | 2 -- kernel/softirq.c | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) Index: linux-next/kernel/irq/handle.c =================================================================== --- linux-next.orig/kernel/irq/handle.c +++ linux-next/kernel/irq/handle.c @@ -18,8 +18,6 @@ #include <linux/rculist.h> #include <linux/hash.h> #include <linux/bootmem.h> - -#define CREATE_TRACE_POINTS #include <trace/events/irq.h> #include "internals.h" Index: linux-next/kernel/softirq.c =================================================================== --- linux-next.orig/kernel/softirq.c +++ linux-next/kernel/softirq.c @@ -24,6 +24,8 @@ #include <linux/ftrace.h> #include <linux/smp.h> #include <linux/tick.h> + +#define CREATE_TRACE_POINTS #include <trace/events/irq.h> #include <asm/irq.h> ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Next April 24: [S390] allmodconfig build failure (trace/events) 2009-04-29 11:51 ` Heiko Carstens @ 2009-04-29 12:04 ` Ingo Molnar 2009-04-29 12:09 ` Steven Rostedt 1 sibling, 0 replies; 7+ messages in thread From: Ingo Molnar @ 2009-04-29 12:04 UTC (permalink / raw) To: Heiko Carstens Cc: Sachin Sant, Steven Rostedt, Frédéric Weisbecker, linux-s390, linux-next, LKML * Heiko Carstens <heiko.carstens@de.ibm.com> wrote: > On Wed, 29 Apr 2009 15:21:39 +0530 > Sachin Sant <sachinp@in.ibm.com> wrote: > > Heiko Carstens wrote: > > > On Fri, 24 Apr 2009 09:25:33 +0200 > > > Ingo Molnar <mingo@elte.hu> wrote: > > >> * Sachin Sant <sachinp@in.ibm.com> wrote: > > >>> Today's next tree build(s390 allmodconfig) failed with > > >>> > > >>> kernel/built-in.o: In function `trace_softirq_entry' > > >>> include/trace/events/irq.h:42: undefined reference to > > >>> `' > > >>> include/trace/events/irq.h:42: undefined reference to > > >>> `__tracepoint_softirq_entry' > > >>> kernel/built-in.o: In function `trace_softirq_exit': > > >>> include/trace/events/irq.h:48: undefined reference to > > >>> `__tracepoint_softirq_exit' > > >>> include/trace/events/irq.h:48: undefined reference to > > >>> `__tracepoint_softirq_exit' > > >>> > > >> Hm, that's weird - s390 does not build kernel/softirq.o? Hm, it does > > >> - softirq.o is an obj-y object. > > > > > > s390 does build kernel/softirq.o. However it's anything but obvious to > > > me how the tracepoint infrastructure works. Too many #ifdefs, #define's > > > and #undefine's... > > > > > > I would expect that struct __tracepoint_softirq_entry somehow gets > > > defined via one of the TRACE_FORMAT macros, no? > > Today's next tree also has this failure. Any solution for this problem ? > > Ingo, could you pick up the patch below please? applied, thanks Heiko! Ingo ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Next April 24: [S390] allmodconfig build failure (trace/events) 2009-04-29 11:51 ` Heiko Carstens 2009-04-29 12:04 ` Ingo Molnar @ 2009-04-29 12:09 ` Steven Rostedt 1 sibling, 0 replies; 7+ messages in thread From: Steven Rostedt @ 2009-04-29 12:09 UTC (permalink / raw) To: Heiko Carstens Cc: Sachin Sant, Ingo Molnar, Frédéric Weisbecker, linux-s390, linux-next, LKML On Wed, 29 Apr 2009, Heiko Carstens wrote: > > Subject: [PATCH] tracing: fix compile error > > From: Heiko Carstens <heiko.carstens@de.ibm.com> > > "tracing: create automated trace defines" causes this compile error on s390: > > kernel/built-in.o: In function `__do_softirq': > (.text+0x1c680): undefined reference to `__tracepoint_softirq_entry' > > This happens because the definitions of the softirq tracepoints were moved > from kernel/softirq.c to kernel/irq/handle.c. Since s390 doesn't support > generic hardirqs handle.c doesn't get compiled and the definitions are > missing. > So move the tracepoints to softirq.c again. Nice catch! Acked-by: Steven Rostedt <rostedt@goodmis.org> -- Steve ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2009-04-29 12:09 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20090424150456.ff35e4ea.sfr@canb.auug.org.au>
2009-04-24 7:12 ` Next April 24: [S390] allmodconfig build failure (trace/events) Sachin Sant
2009-04-24 7:25 ` Ingo Molnar
2009-04-24 8:41 ` Heiko Carstens
2009-04-29 9:51 ` Sachin Sant
2009-04-29 11:51 ` Heiko Carstens
2009-04-29 12:04 ` Ingo Molnar
2009-04-29 12:09 ` Steven Rostedt
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox