All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@us.ibm.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: shemminger@osdl.org, dipankar@in.ibm.com, mingo@elte.hu,
	linux-kernel@vger.kernel.org
Subject: Re: PREEMPT/PREEMPT_RT question
Date: Wed, 13 Jul 2005 08:41:25 -0700	[thread overview]
Message-ID: <20050713154124.GD1304@us.ibm.com> (raw)
In-Reply-To: <1121226890.3548.44.camel@localhost.localdomain>

On Tue, Jul 12, 2005 at 11:54:50PM -0400, Steven Rostedt wrote:
> On Tue, 2005-07-12 at 18:46 -0700, Paul E. McKenney wrote:
> 
> > > If you are talking about scheduler_tick, then yes, it is called by the
> > > timer interrupt which is a SA_NODELAY interrupt.  If you don't want to
> > > get interrupted by the timer interrupt, then you will need to disable
> > > interrupts for both. Since currently, the timer interrupt is the only
> > > true hard interrupt in the PREEMPT_RT and that may not change.
> > 
> > OK, so if I take a spinlock in something invoked from scheduler_tick(),
> > then any other acquisitions of that spinlock must disable hardware
> > interrupts, right?
> 
> Yes, otherwise you could have a local CPU deadlock on a SMP machine. And
> I would also say the same is true for any lock that is grabbed by the
> timer interrupt or one of the functions it calls.

OK, I do indeed have critical sections spanning rcu_check_callbacks()
and process-level code.  Since rcu_check_callbacks() is called from
account_user_vtime() and update_process_times(), both of which call
scheduler_tick(), looks like I need to disable hardware interrupts.

Looks to me like I need to use _raw_spin_lock() and
_raw_spin_unlock() from within rcu_check_callbacks(), but to instead
use _raw_spin_lock_irqsave() and _raw_spin_lock_irqrestore() outside of
rcu_check_callbacks() for locks acquired within rcu_check_callbacks().

Of course, for fliplock, which is only acquired conditionally from
a rcu_check_callbacks() callee, I can just use spin_trylock() and
spin_unlock().  Though _raw_spin_lock()/_raw_spin_unlock() might be
faster?

No -wonder- I have been seeing hangs in CONFIG_PREEMPT_RT!!!  ;-)

						Thanx, Paul

  reply	other threads:[~2005-07-13 15:43 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-07-12 16:30 PREEMPT/PREEMPT_RT question Paul E. McKenney
2005-07-12 17:05 ` Steven Rostedt
2005-07-12 19:28   ` Paul E. McKenney
2005-07-12 20:04     ` Steven Rostedt
2005-07-12 21:34       ` Paul E. McKenney
2005-07-12 23:47         ` Steven Rostedt
2005-07-13  1:46           ` Paul E. McKenney
2005-07-13  3:54             ` Steven Rostedt
2005-07-13 15:41               ` Paul E. McKenney [this message]
2005-07-12 19:26 ` Ingo Molnar
2005-07-12 21:04   ` Paul E. McKenney

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=20050713154124.GD1304@us.ibm.com \
    --to=paulmck@us.ibm.com \
    --cc=dipankar@in.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=rostedt@goodmis.org \
    --cc=shemminger@osdl.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.