From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Kim Kyuwon <chammoru@gmail.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
linux-pm@lists.linux-foundation.org,
linux-kernel@vger.kernel.org, Ingo Molnar <mingo@elte.hu>,
Kyungmin Park <kyungmin.park@samsung.com>,
Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: [PATCH] PM: suspend_device_irqs(): don't disable wakeup IRQs
Date: Sat, 23 May 2009 00:29:17 +0200 [thread overview]
Message-ID: <200905230029.18279.rjw@sisk.pl> (raw)
In-Reply-To: <4d34a0a70905221524i1ac5a241k5f0a60ee542d55a5@mail.gmail.com>
On Saturday 23 May 2009, Kim Kyuwon wrote:
> On Sat, May 23, 2009 at 6:23 AM, Rafael J. Wysocki <rjw@sisk.pl> wrote:
> > On Friday 22 May 2009, Kim Kyuwon wrote:
> >> On Wed, May 6, 2009 at 8:27 AM, Rafael J. Wysocki <rjw@sisk.pl> wrote:
> >> > On Wednesday 06 May 2009, Kevin Hilman wrote:
> >> >> Arve Hjønnevåg <arve@android.com> writes:
> >> >>
> >> >> > On Tue, May 5, 2009 at 8:52 AM, Kevin Hilman
> >> >> > <khilman@deeprootsystems.com> wrote:
> >> >> >> Andrew Morton <akpm@linux-foundation.org> writes:
> >> >> >>
> >> >> >>> On Mon, 4 May 2009 17:27:04 -0700 Kevin Hilman <khilman@deeprootsystems.com> wrote:
> >> >> >>>
> >> >> >>>> Interrupts that are flagged as wakeup sources via set_irq_wake()
> >> >> >>>> should not be disabled for suspend.
> >> >> >>>>
> >> >> >>>
> >> >> >>> Why not?
> >> >> >>>
> >> >> >>
> >> >> >> If an interrupt is a wakeup source, and it is disabled at the chip
> >> >> >> level, it will no longer generate interrupts, and thus no longer wake
> >> >> >> up the system.
> >> >> >>
> >> >> >> I'd be interested in hearing why wakeup interrupts should be disabled
> >> >> >> during suspend.
> >> >
> >> > That depends on whether or not they are used for anything else than wake-up.
> >> >
> >> >>
> >> >> [...]
> >> >>
> >> >> >>>
> >> >> >>> If this fixes some bug then please provide a description of that bug?
> >> >> >>
> >> >> >> The bug is that on TI OMAP, interrupts that are used for wakeup events
> >> >> >> are disabled by this code causing the system to no longer wake up.
> >> >> >
> >> >> > What do you do if the interrupt triggers right after your driver has
> >> >> > returned from its late suspend hook?
> >> >>
> >> >> If it's a wakeup IRQ, I assume you want it to prevent suspend.
> >> >>
> >> >> But I don't see how that can happen in the current code. IIUC, by the
> >> >> time your late suspend hook is run, your device IRQ is already
> >> >> disabled, so it won't trigger an interrupt that will be caught by
> >> >> check_wakeup_irqs() anyways.
> >> >
> >> > My understanding of __disable_irq() was that it didn't actually disable the
> >> > IRQ at the hardware level, allowing the CPU to actually receive the interrupt
> >> > and acknowledge it, but preventing the device driver for receiving it. Does
> >> > it work differently on the affected systems?
> >>
> >> Hi, Rafael.
> >> Sorry for bring the old issue but please let me ask you about
> >> suspend_device_irqs() function.
> >>
> >> __disable_irq() disables the IRQ at the hardware level in the
> >> following irq_chips
> >>
> >> i8259A_chip
> >> i8259_pic
> >> i8259A_chip
> >> bfin_internal_irqchip
> >> crisv10_irq_type
> >> crisv32_irq_type
> >> h8300irq_chip
> >> m_irq_chip
> >> mn10300_cpu_pic_level
> >> xtensa_irq_chip
> >> iop13xx_msi_chip
> >> msi_irq
> >>
> >> Because these irq_chips mask interrupts in 'disable' hook.
> >>
> >> Thus, your suspend_device_irqs() function disables all IRQs at the
> >> hardware level on all architectures which use irq_chips listed above
> >> in suspend state.
> >> Is this really what you wanted?
> >
> > What we wanted was to resolve specific issue related to the handling of
> > interrupts during suspend and resume which caused observable breakage and
> > from the point of view of fixing this issue it doesn't really matter whether or
> > not interrupts are masked in the disable hook.
> >
> >> If interrupt can wake up the system from suspend in some architectures
> >> and if disable_irq_wake is not supported in these architectures, I
> >> wonder if suspend_device_irqs() don't allow waking up by interrupt.
> >
> > I think that the platforms that may be affected by this issue will have to take
> > care of it.
>
> You changed the really important part of Linux, which may affect most
> processor architectures. I think you should be careful. If some of
> architectures can't take care of it (they can implement
> disable_irq_wake correctly in H/W level, will you revert your changes?
No, the changes are not going to be reverted. In fact things should have been
done like this already much earlier.
Now, do you have any particular example of a problem related to these changes
or is it only a theoretical issue?
Rafael
next prev parent reply other threads:[~2009-05-22 22:29 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-05 0:27 Kevin Hilman
2009-05-05 6:54 ` Andrew Morton
2009-05-05 14:11 ` [linux-pm] " Vitaly Wool
2009-05-05 15:56 ` Kevin Hilman
2009-05-05 15:52 ` Kevin Hilman
2009-05-05 20:58 ` Arve Hjønnevåg
2009-05-05 23:15 ` Kevin Hilman
2009-05-05 23:27 ` Rafael J. Wysocki
2009-05-05 23:51 ` Arve Hjønnevåg
2009-05-06 0:13 ` Kevin Hilman
2009-05-06 0:38 ` Kevin Hilman
2009-05-06 0:45 ` Kevin Hilman
2009-05-06 14:04 ` Kevin Hilman
2009-05-06 21:18 ` Rafael J. Wysocki
2009-05-07 0:16 ` Kevin Hilman
2009-05-07 1:18 ` Arve Hjønnevåg
2009-05-07 1:28 ` Kim Kyuwon
2009-05-07 1:44 ` Arve Hjønnevåg
2009-05-07 2:04 ` Kim Kyuwon
2009-05-07 14:13 ` Kevin Hilman
2009-05-07 11:54 ` Rafael J. Wysocki
2009-05-06 0:20 ` Kim Kyuwon
2009-05-22 2:53 ` Kim Kyuwon
2009-05-22 16:04 ` Kim Kyuwon
2009-05-22 21:25 ` Rafael J. Wysocki
2009-05-22 22:32 ` Kim Kyuwon
2009-05-22 23:47 ` Rafael J. Wysocki
2009-05-23 0:42 ` Kim Kyuwon
2009-05-22 21:23 ` Rafael J. Wysocki
2009-05-22 22:24 ` Kim Kyuwon
2009-05-22 22:29 ` Rafael J. Wysocki [this message]
2009-05-22 23:03 ` Kim Kyuwon
2009-05-23 20:14 ` Rafael J. Wysocki
2009-05-25 7:02 ` Kim Kyuwon
2009-05-29 23:35 ` Rafael J. Wysocki
2009-05-30 7:34 ` Kim Kyuwon
2009-05-30 7:40 ` Kim Kyuwon
2009-05-30 21:00 ` Rafael J. Wysocki
2009-05-05 23:57 ` Arve Hjønnevåg
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=200905230029.18279.rjw@sisk.pl \
--to=rjw@sisk.pl \
--cc=akpm@linux-foundation.org \
--cc=chammoru@gmail.com \
--cc=kyungmin.park@samsung.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@lists.linux-foundation.org \
--cc=mingo@elte.hu \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®