On Fri, Feb 20, 2009 at 06:22:41PM +0100, Ingo Molnar wrote: > > * Randy Dunlap <randy.dunlap@xxxxxxxxxx> wrote: > > > > This is what happens on the following build error: > > > > > > kernel/built-in.o: In function `marker_update_probe_range': > > > (.text+0x52f64): undefined reference to `tracepoint_probe_register_noupdate' > > > kernel/built-in.o: In function `marker_update_probe_range': > > > (.text+0x52f74): undefined reference to `tracepoint_probe_unregister_noupdate' > > > kernel/built-in.o: In function `marker_update_probe_range': > > > (.text+0x52fb9): undefined reference to `tracepoint_probe_unregister_noupdate' > > > kernel/built-in.o: In function `marker_update_probes': > > > marker.c:(.text+0x530ba): undefined reference to `tracepoint_probe_update_all' > > > > > > CONFIG_KVM_TRACE will select CONFIG_MARKER, but the latter > > > depends on CONFIG_TRACEPOINTS which will not be selected. > > > > > > A temporary fix is to make CONFIG_MARKER select > > > CONFIG_TRACEPOINTS, though it doesn't fix the source KConfig > > > dependency handling problem. > > > > > > Reported-by: Ingo Molnar <mingo@xxxxxxx> > > > Cc: Roman Zippel <zippel@xxxxxxxxxxxxxx> > > > Signed-off-by: Frederic Weisbecker <fweisbec@xxxxxxxxx> > > > --- > > > init/Kconfig | 2 +- > > > 1 files changed, 1 insertions(+), 1 deletions(-) > > > > > > diff --git a/init/Kconfig b/init/Kconfig > > > index b6400a5..a93f957 100644 > > > --- a/init/Kconfig > > > +++ b/init/Kconfig > > > @@ -975,7 +975,7 @@ config TRACEPOINTS > > > > > > config MARKERS > > > bool "Activate markers" > > > - depends on TRACEPOINTS > > > + select TRACEPOINTS > > > help > > > Place an empty function call at each marker site. Can be > > > dynamically changed for a probe function. > > > > but using "select" instead of "depends on" just causes the > > kind of problem that you described, whereas using "depends on" > > does follow dependency chains. > > Well, as long as the secondary selects are 'expanded' along the > line of dependencies, it should still be fine. With an > increasing number of dependencies it quickly becomes ugly > though. This might be one of the cases where it works. > > Eventually we should eliminate markers, their uses can either be > converted to new-style tracepoints, or to ftrace_printk(). > > Ingo ftrace_printk adds more overhead if not used since it inconditionally send the trace, unless the related TRACE_ITER_PRINTK flag on ftrace is unset. I don't know how markers work, but the documentation describes that a single branch check is done in case the probe is disabled. With ftrace_printk, even if TRACE_ITER_PRINTK is unset, this is still one call and one branch check. So for hot callsite it's unappropriate. IMHO, tracepoints are more suited to replace markers if they have to. -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html