From: ambx1@neo.rr.com
To: Linus Torvalds <torvalds@osdl.org>
Cc: Pavel Machek <pavel@ucw.cz>, Hugh Dickins <hugh@veritas.com>,
Andrew Morton <akpm@osdl.org>,
Dominik Brodowski <linux@dominikbrodowski.net>,
Daniel Ritz <daniel.ritz@gmx.ch>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Len Brown <len.brown@intel.com>
Subject: Re: revert yenta free_irq on suspend
Date: Sun, 31 Jul 2005 16:34:15 -0400 [thread overview]
Message-ID: <2e00842e116e.2e116e2e0084@columbus.rr.com> (raw)
----- Original Message -----
From: Linus Torvalds <torvalds@osdl.org>
Date: Sunday, July 31, 2005 11:53 am
Subject: Re: revert yenta free_irq on suspend
>
>
> On Sun, 31 Jul 2005, Pavel Machek wrote:
> >
> > Well, on some machines interrupts can change during suspend (or
> so I
> > was told). I did not like the ACPI change at one point, but it
> is very
> > wrong to revert PCMCIA fix without also fixing ACPI interpretter.
>
> We _are_ going to fix the ACPI interpreter.
>
> As to irq's changing during suspend - I'll believe that when I see
> it, not
> when some chicken little runs around worrying about it. I doubt
> anybody
> has ever seen it, and I'm 100% sure that we have serious breakage
> right
> now on machines where it definitely doesn't happen.
>
> > And it indeed seems that ACPI interpretter is hard to fix in the
> right> way.
>
> We'll revert to the behaviour that it has traditionally had, and
> start
> working forwards in a more careful manner. Where we don't break
> working
> setups.
>
> Linus
Hi Linus,
In general, I think that calling free_irq is the right behavior.
Although irqs changing after suspend is rare, there are also some
more serious issues. This has been discussed in the past, and a
summary is as follows:
1.) race conditions:
Consider the case where several PCI devices are sharing a single PCI
interrupt. One device is suspended, but doesn't call free_irq. Now
another properly behaving device on the same interrupt line generates
an interrupt. Let's say the suspended device had its handler
registered first, and therefore is called first. The handler will
attempt to access registers on the physically-off device to determine
if it generated the interrupt. The PCI bus will issue a master abort.
The driver's interrupt handler will likely interpret the read
incorrectly.
Every interrupt handler could be modified to check if the device is
available, but it would be cleaner and more efficient to unregister
the interrupt. Either way, every driver has to be changed to support
PM correctly.
2.) runtime power management:
We don't want to leave stale interrupt handlers registered when only
suspending a specific device. As we move toward supporting runtime
power management it will be important to ensure every driver calls
free_irq() in its suspend() (or whatever we're using at that point)
routine. This avoids interrupt handler bugs and extra interrupt
overhead.
Also I'd like to point out that this patch broke APM suspend-to-ram,
not ACPI S3. IMO, it may not be possible to support both APM and ACPI
on every system, as their specs are not intended to be compatible.
Progress toward proper suspend-to-ram support will, in many cases, be
a small setback for APM. This really can't be avoided.
There are, however, some things we can do to mitigate the breakage
toward APM. Specifically, we should indicate the type of suspend state,
including if it's an ACPI or APM state, for each driver's ->suspend()
routine. This will give drivers the opportunity to act differently
for APM when necessary. I'm currenlty working on this issue.
APM is useful for legacy hardware and systems with blacklisted ACPI
support. I don't think we should attempt to support APM on any system
with working ACPI suspend/resume.
Thanks,
Adam
next reply other threads:[~2005-07-31 20:34 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-07-31 20:34 ambx1 [this message]
2005-07-31 21:20 ` revert yenta free_irq on suspend Pavel Machek
2005-08-01 8:56 ` Benjamin Herrenschmidt
2005-07-31 22:55 ` Linus Torvalds
2005-07-31 23:05 ` Pavel Machek
2005-07-31 23:24 ` Linus Torvalds
2005-07-31 23:27 ` Pavel Machek
2005-07-31 23:44 ` Linus Torvalds
2005-07-31 23:59 ` Dave Airlie
2005-08-01 0:19 ` Linus Torvalds
2005-08-01 0:44 ` Dave Airlie
2005-08-01 1:07 ` Linus Torvalds
2005-08-01 7:15 ` Pavel Machek
2005-08-01 7:01 ` Sanjoy Mahajan
2005-08-01 7:25 ` Pavel Machek
2005-07-31 23:10 ` Dave Airlie
2005-08-01 1:59 ` Shaohua Li
2005-08-01 2:06 ` Andrew Morton
2005-08-01 2:22 ` Shaohua Li
2005-08-01 7:19 ` Pavel Machek
2005-08-01 21:38 ` Rafael J. Wysocki
-- strict thread matches above, loose matches on Subject: below --
2005-08-01 3:03 ambx1
2005-08-01 4:53 ` Linus Torvalds
2005-08-01 8:49 ` Benjamin Herrenschmidt
2005-08-02 10:56 ` Pavel Machek
2005-08-03 11:42 ` Benjamin Herrenschmidt
2005-07-31 5:03 Brown, Len
2005-07-31 5:31 ` Linus Torvalds
2005-07-31 9:49 ` Rafael J. Wysocki
2005-07-31 22:27 ` Dave Jones
2005-08-01 0:00 ` Andreas Steinmetz
2005-08-01 0:06 ` Dave Jones
2005-08-01 0:09 ` Andreas Steinmetz
2005-08-03 9:23 ` Pavel Machek
2005-08-01 8:51 ` Matthew Garrett
2005-07-30 19:10 Hugh Dickins
2005-07-30 20:03 ` Russell King
2005-07-30 20:36 ` Linus Torvalds
2005-07-30 20:54 ` Russell King
2005-07-30 21:10 ` Linus Torvalds
2005-07-30 21:30 ` Russell King
2005-07-30 22:28 ` Rafael J. Wysocki
2005-07-31 4:49 ` Linus Torvalds
2005-08-01 9:06 ` Benjamin Herrenschmidt
2005-07-30 21:20 ` Rafael J. Wysocki
2005-07-30 20:34 ` Linus Torvalds
2005-07-31 13:29 ` Pavel Machek
2005-07-31 15:53 ` Linus Torvalds
2005-07-31 17:09 ` Linus Torvalds
2005-07-30 20:49 ` Rafael J. Wysocki
2005-07-30 21:08 ` Daniel Ritz
2005-07-30 21:32 ` Hugh Dickins
2005-07-30 22:00 ` Rafael J. Wysocki
2005-07-30 22:24 ` Hugh Dickins
2005-07-30 23:09 ` Rafael J. Wysocki
2005-07-31 20:15 ` Rafael J. Wysocki
2005-08-01 20:34 ` Hugh Dickins
2005-08-01 21:54 ` 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=2e00842e116e.2e116e2e0084@columbus.rr.com \
--to=ambx1@neo.rr.com \
--cc=akpm@osdl.org \
--cc=daniel.ritz@gmx.ch \
--cc=hugh@veritas.com \
--cc=len.brown@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@dominikbrodowski.net \
--cc=pavel@ucw.cz \
--cc=torvalds@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox