All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@elte.hu>
To: Linus Torvalds <torvalds@linux-foundation.org>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	"Rafael J. Wysocki" <rjw@sisk.pl>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Jesse Barnes <jesse.barnes@intel.com>,
	Andreas Schwab <schwab@suse.de>, Len Brown <lenb@kernel.org>
Subject: Re: PCI PM: Restore standard config registers of all devices early
Date: Tue, 3 Feb 2009 06:06:48 +0100	[thread overview]
Message-ID: <20090203050648.GA14076@elte.hu> (raw)
In-Reply-To: <alpine.LFD.2.00.0902021635240.3247@localhost.localdomain>


* Linus Torvalds <torvalds@linux-foundation.org> wrote:

> On Tue, 3 Feb 2009, Benjamin Herrenschmidt wrote:
> > 
> > IE, you should have something to ensure, before you turn interrupts off,
> > that nobody else is inside the AML interpreter. You already know there
> > are no other CPUs, so it's just a matter of making sure no other process
> > has scheduled while holding that mutex.
> > 
> > The easy way to do that is to do something like taking the mutex
> > yourself and then setting a flag so that the intepreter stops trying to
> > take it or release it itself, maybe just using the global system state.
> > 
> > Then release the mutex on resume.
> 
> Why do you think this improves on anything?
> 
> Basically, it turns the mutex into a non-entity - but if your whole 
> argument is that it might as well be a non-entity because nobody else can 
> take it anyway, then why not just leave it around?
> 
> IOW, if your argument boils down to "there can be no contention", then you 
> might as well say "just use the mutex, it will never block".
> 
> So the only thing you really need is to just disable the _debugging_ code 
> that mutexes have (if they get built with debugging in the first place).
> 
> I can't find the bothersome code anyway: I do find
> 
> 	DEBUG_LOCKS_WARN_ON(in_interrupt());
> 
> but that's just saying that you shouldn't be using mutexes from 
> interrupts, not from irq-off segments. There's probably something I'm 
> missing, like the preempt_check_resched() causing a schedule event with 
> irq's disabled, and the "might_sleep()" thing. But the latter should 
> already be disabled by the "system_state != SYSTEM_RUNNING" thing.

Mutexes should work just fine in irqs-off sections - they'll safely 
save/restore interrupts, even the debug variants.

We used to have code in the mutex code that unconditionally enabled 
interrupts (a spin_unlock_irq() iirc) - but we fixed that pretty
early on because it surprised some early boot code. Maybe this is
the case you remember?

	Ingo

  parent reply	other threads:[~2009-02-03  5:07 UTC|newest]

Thread overview: 98+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <200901261904.n0QJ4Q9c016709@hera.kernel.org>
2009-02-02  9:54 ` PCI PM: Restore standard config registers of all devices early Benjamin Herrenschmidt
2009-02-02 17:06   ` Linus Torvalds
2009-02-02 20:29     ` Benjamin Herrenschmidt
2009-02-02 20:41       ` Linus Torvalds
2009-02-02 21:00         ` Benjamin Herrenschmidt
2009-02-02 21:32           ` Rafael J. Wysocki
2009-02-02 20:33     ` Benjamin Herrenschmidt
2009-02-02 20:50       ` Linus Torvalds
2009-02-02 20:55         ` Linus Torvalds
2009-02-02 21:19           ` Benjamin Herrenschmidt
2009-02-02 21:39           ` Rafael J. Wysocki
2009-02-02 22:05             ` Linus Torvalds
2009-02-02 22:09               ` Linus Torvalds
2009-02-02 22:31               ` Rafael J. Wysocki
2009-02-02 23:18                 ` Linus Torvalds
2009-02-02 23:45                   ` Rafael J. Wysocki
2009-02-02 23:59                     ` Linus Torvalds
2009-02-03  0:15                       ` Rafael J. Wysocki
2009-02-03  0:28                         ` Linus Torvalds
2009-02-03  1:12                           ` Benjamin Herrenschmidt
2009-02-03  1:32                             ` Linus Torvalds
2009-02-03  1:46                               ` Benjamin Herrenschmidt
2009-02-03  3:30                                 ` Benjamin Herrenschmidt
2009-02-03  3:47                                   ` Linus Torvalds
2009-02-03  4:03                                     ` Benjamin Herrenschmidt
2009-02-03  6:07                           ` Benjamin Herrenschmidt
2009-02-03 15:48                             ` Linus Torvalds
2009-02-03 22:59                               ` Benjamin Herrenschmidt
2009-02-03 23:23                                 ` Rafael J. Wysocki
2009-02-03 16:33                             ` Jesse Barnes
2009-02-03  0:15                       ` Linus Torvalds
2009-02-03  0:58                   ` Benjamin Herrenschmidt
2009-02-03  3:51                   ` Benjamin Herrenschmidt
2009-02-03  3:55                     ` Benjamin Herrenschmidt
2009-02-03  4:09                       ` Linus Torvalds
2009-02-03  4:21                         ` Benjamin Herrenschmidt
2009-02-03  9:26                     ` Rafael J. Wysocki
2009-02-03 17:04                       ` Reworking suspend-resume sequence (was: Re: PCI PM: Restore standard config registers of all devices early) Rafael J. Wysocki
2009-02-03 17:59                         ` Linus Torvalds
2009-02-03 18:31                           ` Linus Torvalds
2009-02-03 18:41                             ` Ingo Molnar
2009-02-03 18:32                           ` Jesse Barnes
2009-02-03 18:46                             ` Linus Torvalds
2009-02-03 19:03                               ` Linus Torvalds
2009-02-03 19:13                                 ` Ingo Molnar
2009-02-03 19:38                                   ` Linus Torvalds
2009-02-03 19:53                                     ` Ingo Molnar
2009-02-03 20:04                                       ` Ingo Molnar
2009-02-03 20:18                                       ` Linus Torvalds
2009-02-03 20:57                                         ` Ingo Molnar
2009-02-03 21:04                                           ` Ingo Molnar
2009-02-03 21:12                                             ` Thomas Gleixner
2009-02-04 10:07                                               ` Russell King
2009-02-03 21:18                                             ` Linus Torvalds
2009-02-03 19:19                                 ` Linus Torvalds
2009-02-03 21:11                                   ` Benjamin Herrenschmidt
2009-02-03 21:53                                     ` Rafael J. Wysocki
2009-02-03 22:33                                       ` Benjamin Herrenschmidt
2009-02-03 22:44                                         ` Rafael J. Wysocki
2009-02-03 23:05                                           ` Benjamin Herrenschmidt
2009-02-03 23:18                                             ` Linus Torvalds
2009-02-04  0:27                                               ` Benjamin Herrenschmidt
2009-03-04  8:02                                               ` Pavel Machek
2009-03-04 23:25                                                 ` Benjamin Herrenschmidt
2009-03-05  8:19                                                   ` Pavel Machek
2009-03-05 19:09                                                     ` Rafael J. Wysocki
2009-02-03 23:25                                             ` Rafael J. Wysocki
2009-02-04  0:46                                               ` Linus Torvalds
2009-02-03 21:02                         ` Benjamin Herrenschmidt
2009-02-03 21:56                           ` Rafael J. Wysocki
2009-02-03 17:53                       ` PCI PM: Restore standard config registers of all devices early Linus Torvalds
2009-02-03 21:57                         ` Rafael J. Wysocki
2009-02-02 22:48               ` Benjamin Herrenschmidt
2009-02-02 23:00                 ` Rafael J. Wysocki
2009-02-03  0:23                   ` Benjamin Herrenschmidt
2009-02-03  0:29                     ` Rafael J. Wysocki
2009-02-03  0:44                     ` Linus Torvalds
2009-02-03  1:32                       ` Benjamin Herrenschmidt
2009-02-03  5:06                       ` Ingo Molnar [this message]
2009-02-03 11:06                         ` Peter Zijlstra
2009-02-03 12:09                           ` Ingo Molnar
2009-02-02 23:49               ` Ingo Molnar
2009-02-03 22:09                 ` Rafael J. Wysocki
2009-02-03 23:13                   ` Linus Torvalds
2009-02-02 22:28             ` Benjamin Herrenschmidt
2009-02-02 21:07         ` Benjamin Herrenschmidt
2009-02-02 21:49           ` Rafael J. Wysocki
2009-02-02 22:15             ` Linus Torvalds
2009-02-02 22:33               ` Rafael J. Wysocki
2009-02-02 22:56                 ` Rafael J. Wysocki
2009-02-03  0:11                   ` Benjamin Herrenschmidt
2009-02-03  0:21                     ` Linus Torvalds
2009-02-10 20:25                   ` Pavel Machek
2009-02-02 22:57               ` Benjamin Herrenschmidt
2009-02-02 23:22                 ` Rafael J. Wysocki
2009-02-03  1:03                   ` Benjamin Herrenschmidt
2009-02-10 20:25                     ` kmalloc during suspend, was " Pavel Machek
2009-02-02 17:20   ` 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=20090203050648.GA14076@elte.hu \
    --to=mingo@elte.hu \
    --cc=a.p.zijlstra@chello.nl \
    --cc=benh@kernel.crashing.org \
    --cc=jesse.barnes@intel.com \
    --cc=lenb@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rjw@sisk.pl \
    --cc=schwab@suse.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.