All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@goodmis.org>
To: Jeremy Fitzhardinge <jeremy@goop.org>
Cc: "Ingo Molnar" <mingo@elte.hu>,
	"Frédéric Weisbecker" <fweisbec@gmail.com>,
	LKML <linux-kernel@vger.kernel.org>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"Glauber de Oliveira Costa" <gcosta@redhat.com>,
	"Chris Wright" <chrisw@sous-sol.org>,
	"Rusty Russell" <rusty@rustcorp.com.au>,
	"Pekka Enberg" <penberg@cs.helsinki.fi>
Subject: Re: [PATCH 0/2] [GIT PULL] tracing: various bug fixes
Date: Thu, 23 Apr 2009 13:52:22 -0400 (EDT)	[thread overview]
Message-ID: <alpine.DEB.2.00.0904231311090.24293@gandalf.stny.rr.com> (raw)
In-Reply-To: <49F09C35.1080006@goop.org>


On Thu, 23 Apr 2009, Jeremy Fitzhardinge wrote:

> Steven Rostedt wrote:
> > Ah, this is a lockdep thing.
> > 
> > The raw_local_irq_save/restore in __native_flush_tlb_global does not update
> > hardirqs_enabled.
> > 
> > When we call into ftrace, when we cross page bounderies, we disable
> > interrupts using the normal local_irq_save/restore calls.
> > 
> > But when we restore, it detects that interrupts are not going to be enabled,
> > and keeps hardirqs_enabled off.
> > 
> > The printk solved the issue because it called local_irq_restore, which set
> > the variable back.
> > 
> > I guess there's two solutions here. One, we can change the
> > raw_local_irq_enable/disable variants in __native_flush_tlb_global to the
> > non-raw type (it should protect against recursion).
> > 
> > or we can try to make the ring buffer use the raw_local_irq variants too. I
> > tried this once before, and it did cause issues.
> > 
> > Note, there's a "check_flags" in lockdep, but it is only called on locking,
> > it is not called when we only disable/enable interrupts.
> >   
> 
> OK, the good news is that its not a callee-save calling convention problem,
> which is what I feared.  But it does sound pretty awkward to fix.  Does
> __native_flush_tlb_global() have to use raw_local_irq_save/restore?

No, I just investigated (and booted) without the raw versions (using the 
normal disable instead). The hooks just update variables in the task 
struct. I see no reason to have use it.

I use to use it with ftrace, but I found that issues are caused if ftrace 
called something internal that used local_irq_save.

Perhaps that is the issue. If something uses raw_local_irq_save then calls 
flush_tlb_global you might get a problem with the flags again (like we did 
here). But the only user of raw_* should be lockdep and irqsoff, and they 
should be able to deal with recursion. I don't think there should be any 
other user.

-- Steve


  parent reply	other threads:[~2009-04-23 17:52 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-04-20 22:22 [PATCH 0/2] [GIT PULL] tracing: various bug fixes Steven Rostedt
2009-04-20 22:22 ` [PATCH 1/2] tracing: use recursive counter over irq level Steven Rostedt
2009-04-20 22:22 ` [PATCH 2/2] tracing: use nowakeup version of commit for function event trace tests Steven Rostedt
2009-04-20 22:41   ` Frederic Weisbecker
2009-04-20 22:57     ` Steven Rostedt
2009-04-21  8:23 ` [PATCH 0/2] [GIT PULL] tracing: various bug fixes Ingo Molnar
2009-04-21  9:46   ` Ingo Molnar
2009-04-21 13:08     ` Steven Rostedt
2009-04-21 13:55     ` [PATCH][GIT PULL] ring-buffer: only warn on wrap if buffer is bigger than two pages Steven Rostedt
2009-04-21 14:35       ` Ingo Molnar
2009-04-21 14:54         ` Steven Rostedt
2009-04-21 16:22         ` Steven Rostedt
2009-04-21 14:03     ` [tip:tracing/core] " tip-bot for Steven Rostedt
2009-04-22  6:48     ` [PATCH 0/2] [GIT PULL] tracing: various bug fixes Steven Rostedt
2009-04-22 11:47       ` Frederic Weisbecker
2009-04-22 13:49         ` Steven Rostedt
2009-04-22 17:10           ` Frederic Weisbecker
2009-04-22 17:17             ` Jeremy Fitzhardinge
2009-04-22 17:22               ` Steven Rostedt
2009-04-22 21:32                 ` Steven Rostedt
2009-04-23  8:28                   ` Ingo Molnar
2009-04-23  3:35       ` Steven Rostedt
2009-04-23  8:20         ` Ingo Molnar
2009-04-23 13:53           ` Steven Rostedt
2009-04-23 14:39             ` Steven Rostedt
2009-04-23 15:08               ` Steven Rostedt
2009-04-23 15:11                 ` Ingo Molnar
2009-04-23 16:49                 ` Jeremy Fitzhardinge
2009-04-23 17:21                   ` Chris Wright
2009-04-23 18:02                     ` Chris Wright
2009-04-23 18:33                       ` Steven Rostedt
2009-04-23 18:43                         ` Chris Wright
2009-04-24  8:36                           ` Ingo Molnar
2009-04-24 15:12                             ` Chris Wright
2009-04-29  6:16                     ` [tip:tracing/core] x86: use native register access for native tlb flushing tip-bot for Chris Wright
2009-04-23 17:52                   ` Steven Rostedt [this message]
2009-04-24  8:34             ` [PATCH 0/2] [GIT PULL] tracing: various bug fixes Ingo Molnar

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=alpine.DEB.2.00.0904231311090.24293@gandalf.stny.rr.com \
    --to=rostedt@goodmis.org \
    --cc=akpm@linux-foundation.org \
    --cc=chrisw@sous-sol.org \
    --cc=fweisbec@gmail.com \
    --cc=gcosta@redhat.com \
    --cc=jeremy@goop.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=penberg@cs.helsinki.fi \
    --cc=rusty@rustcorp.com.au \
    /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.