From: Ingo Molnar <mingo@elte.hu>
To: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: "Frédéric Weisbecker" <fweisbec@gmail.com>,
"Steven Rostedt" <rostedt@goodmis.org>,
"Linus Torvalds" <torvalds@linux-foundation.org>,
"Maciej Rutecki" <maciej.rutecki@gmail.com>,
"Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>,
"Andrew Morton" <akpm@linux-foundation.org>,
"Thomas Gleixner" <tglx@linutronix.de>
Subject: Re: [Linux 2.6.29-rc2] BUG: using smp_processor_id() in preemptible
Date: Mon, 26 Jan 2009 22:35:19 +0100 [thread overview]
Message-ID: <20090126213519.GB13670@elte.hu> (raw)
In-Reply-To: <200901262148.49717.rjw@sisk.pl>
* Rafael J. Wysocki <rjw@sisk.pl> wrote:
> On Monday 26 January 2009, Ingo Molnar wrote:
[...]
> > It would work like this, you could mark IRQs as disabled 'permanently':
> >
> > force_irqs_off_start();
> > ...
> > force_irqs_off_end();
> >
> > you could mark an arbitrarily complex code sequence that way, and ftrace
> > would emit a WARN_ONCE() if irqs are enable anytime during that sequence -
> > by using the irq-tracking facilities we have for the irqsoff tracer (and
> > which we also have for lockdep).
> >
> > Would that be useful?
>
> Not sure, I only know a little about ftrace, I really can't judge.
The instrumentation is really simple, see kernel/tracing/trace_irqsoff.c:
we call this function if hardirqs are disabled anywhere in the kernel:
static inline void
start_critical_timing(unsigned long ip, unsigned long parent_ip)
and we call this function if hardirqs are enabled anywhere in the kernel:
static inline void
stop_critical_timing(unsigned long ip, unsigned long parent_ip)
that's all. You need a single line check in stop_critical_timing(),
something like this:
WARN_ON_ONCE(per_cpu(hardirqs_forced_off, this_cpu));
> Anyway, I think that putting the checks directly into the code path in
> question would be more reliable and would still work without ftrace.
More reliable than a WARN() triggering right at the buggy place that
erroneously enables IRQs? Regardless of how obscurely it's done - whether
it's a side effect of something, etc. etc.?
With such a generic facility you'd not have to put in any explicit checks
anywhere _at all_.
In fact whatever check you put in it's _always_ going to be fundamentally
more fragile than direct instrumentation: you cannot possibly check all
possible places that enable interrupts. (they could be disabling
interrupts as a _restore_irqs() sequence for example)
Ingo
next prev parent reply other threads:[~2009-01-26 21:36 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-17 8:58 [Linux 2.6.29-rc2] BUG: using smp_processor_id() in preemptible Maciej Rutecki
2009-01-25 2:37 ` Andrew Morton
2009-01-25 11:57 ` Thomas Gleixner
2009-01-25 14:19 ` Maciej Rutecki
2009-01-25 16:30 ` Maciej Rutecki
2009-01-26 16:07 ` Linus Torvalds
2009-01-26 16:53 ` Rafael J. Wysocki
2009-01-26 17:41 ` Ingo Molnar
2009-01-26 19:21 ` Rafael J. Wysocki
2009-01-26 20:35 ` Ingo Molnar
2009-01-26 20:48 ` Rafael J. Wysocki
2009-01-26 21:35 ` Ingo Molnar [this message]
2009-01-27 15:28 ` Rafael J. Wysocki
2009-01-27 15:49 ` Ingo Molnar
2009-01-27 21:18 ` Rafael J. Wysocki
2009-01-29 15:07 ` Ingo Molnar
2009-01-29 22:29 ` Rafael J. Wysocki
2009-01-30 14:06 ` Ingo Molnar
2009-01-30 21:30 ` Rafael J. Wysocki
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=20090126213519.GB13670@elte.hu \
--to=mingo@elte.hu \
--cc=akpm@linux-foundation.org \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=maciej.rutecki@gmail.com \
--cc=rjw@sisk.pl \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.