public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: linux-kernel@vger.kernel.org, Ingo Molnar <mingo@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Frederic Weisbecker <fweisbec@gmail.com>
Subject: Re: [RFA][PATCH 0/4] tracing: Request for acks on fixing tracepoint code
Date: Thu, 27 Feb 2014 02:21:16 +0000 (UTC)	[thread overview]
Message-ID: <1534483926.31265.1393467676451.JavaMail.zimbra@efficios.com> (raw)
In-Reply-To: <20140226203853.09b7d843@gandalf.local.home>

----- Original Message -----
> From: "Steven Rostedt" <rostedt@goodmis.org>
> To: "Mathieu Desnoyers" <mathieu.desnoyers@efficios.com>
> Cc: linux-kernel@vger.kernel.org, "Ingo Molnar" <mingo@kernel.org>, "Andrew Morton" <akpm@linux-foundation.org>,
> "Peter Zijlstra" <peterz@infradead.org>, "Frederic Weisbecker" <fweisbec@gmail.com>
> Sent: Wednesday, February 26, 2014 8:38:53 PM
> Subject: Re: [RFA][PATCH 0/4] tracing: Request for acks on fixing tracepoint code
> 
> On Wed, 26 Feb 2014 21:36:18 +0000 (UTC)
> Mathieu Desnoyers <mathieu.desnoyers@efficios.com> wrote:
> 
> > ----- Original Message -----
> > > From: "Steven Rostedt" <rostedt@goodmis.org>
> > > To: linux-kernel@vger.kernel.org
> > > Cc: "Ingo Molnar" <mingo@kernel.org>, "Andrew Morton"
> > > <akpm@linux-foundation.org>, "Peter Zijlstra"
> > > <peterz@infradead.org>, "Frederic Weisbecker" <fweisbec@gmail.com>,
> > > "Mathieu Desnoyers"
> > > <mathieu.desnoyers@efficios.com>
> > > Sent: Wednesday, February 26, 2014 2:01:40 PM
> > > Subject: [RFA][PATCH 0/4] tracing: Request for acks on fixing tracepoint
> > > code
> > > 
> > > [ Request for Acks ]
> > > 
> > > Due to module tainting, we have tracepoints that silently do not work.
> > > That will be solved another way. But the trace event infrastructure
> > > should
> > > not be created for tainted modules. That is, the debugfs files should
> > > not exist for them.
> > > 
> > > By moving the tracepoint module taint test into tracepoint.h, we can
> > > reuse that same test when creating the module tracepoint events.
> > > 
> > > Note, I had to remove the tracepoint.h include from module.h as there
> > > was nothing in module.h that required tracepoint.h, but this broke
> > > a couple of event files (migrate.h and writeback.h) because they did
> > > not include tracepoint.h, and were just lucky that it was included
> > > by module.h.
> > 
> > When designing tracepoint.h, a lot of care went into making sure it did
> > not have needless dependency on other headers, since this header is
> > expected to be included into many other files and headers, thus posing
> > a clear risk of becoming yet another root of an include dependency hell.
> 
> Well, module.h is included in many more.

That is not the question. We don't care about how many times module.h is
included in the kernel, but rather what module.h itself includes and could
include in the future, throughout generic and arch-specific headers. If
someone want to add a tracepoint in a static inline function located within
a header file, they will need to include tracepoint.h. If tracepoint.h
happens to have a circular dependency on this header, there comes include
hell.

Arguing that it's OK to include headers within core instrumentation code
because they are themselves included pretty much everywhere is a paved way
to said include hell IMHO.

> 
> > 
> > While I agree on adding the API you propose, why made it a static inline ?
> > This adds this dependency from tracepoint.h on module.h. Instead, we could
> > just declare a symbol, and implement a tracepoint_module_has_bad_taint()
> > within kernel/tracepoint.c. It should not be a fast path anyway, so I don't
> > see the point it making it a static inline.
> > 
> > I also recommend sticking to the tracepoint_*() API (rather than trace_*).
> 
> Well, as this is now not just for tracepoints, but also used by the
> trace_events, and because the name is already too big (but
> descriptive), I rather not change it.

I just recalled we already have things like "DECLARE_TRACE" and such in
tracepoint.h. I'm OK with trace_module_has_bad_taint() then.

> 
> But as a compromise, I can move it to ftrace_event.h instead.

Since it will be used in tracepoint.c as well, which is a foundation of
ftrace_event, it would be bad coupling to make tracepoint.c include
ftrace_event.h (abstraction inversion). So I still think tracepoint.h
is the right place to put this, only not with the module.h dependency.

But perhaps I'm missing something. Why is it so important to you to make
this a static inline rather than a regular function call ?

Thanks,

Mathieu


-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com

  reply	other threads:[~2014-02-27  2:21 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-26 19:01 [RFA][PATCH 0/4] tracing: Request for acks on fixing tracepoint code Steven Rostedt
2014-02-26 19:01 ` [RFA][PATCH 1/4] tracing: Fix event header writeback.h to include tracepoint.h Steven Rostedt
2014-02-26 19:01 ` [RFA][PATCH 2/4] tracing: Fix event header migrate.h " Steven Rostedt
2014-02-28 11:22   ` Mel Gorman
2014-02-26 19:01 ` [RFA][PATCH 3/4] tracing/module: Remove include of tracepoint.h from module.h Steven Rostedt
2014-02-27  3:13   ` Steven Rostedt
2014-03-17  2:34     ` Rusty Russell
2014-03-17  6:42       ` Steven Rostedt
2014-02-26 19:01 ` [RFA][PATCH 4/4] tracing: Do not add event files for modules that fail tracepoints Steven Rostedt
2014-02-26 21:36 ` [RFA][PATCH 0/4] tracing: Request for acks on fixing tracepoint code Mathieu Desnoyers
2014-02-27  1:38   ` Steven Rostedt
2014-02-27  2:21     ` Mathieu Desnoyers [this message]
2014-02-27  2:43       ` Steven Rostedt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1534483926.31265.1393467676451.JavaMail.zimbra@efficios.com \
    --to=mathieu.desnoyers@efficios.com \
    --cc=akpm@linux-foundation.org \
    --cc=fweisbec@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox