All of lore.kernel.org
 help / color / mirror / Atom feed
From: boris.brezillon@free-electrons.com (Boris Brezillon)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 3/5] irqchip: Add DT binding doc for the virtual irq demuxer chip
Date: Mon, 23 Feb 2015 21:16:22 +0100	[thread overview]
Message-ID: <20150223211622.37cf3ca1@bbrezillon> (raw)
In-Reply-To: <20150223181448.GQ9714@leverpostej>

On Mon, 23 Feb 2015 18:14:48 +0000
Mark Rutland <mark.rutland@arm.com> wrote:


[...]

> > This is because irq_may_run [1], which is called to decide whether we
> > should handle this irq or just wake the system up [2], will always
> > return true if at least one of the shared action has tagged the irq
> > line as a wakeup source.
> 
> I assume you mean we return false in this case (having triggered the
> wakeup within irq_pm_check_wakeup, which returned true), but otherwise
> agreed.

Yep, I meant 'return false'.


> 
> I can envisage problems if the irq handler of a wakeup device can't be
> run safely until resume time, though I'm not sure if that happens in
> practice given the device is necessarily going to be active.

Isn't that the purpose of the
IRQF_NO_SUSPEND_SAFE/IRQF_SHARED_TIMER_OK/IRQF_SHARED_WAKEUP_SIBLING_OK
flag ? 

> 
> > Sorry for summarizing things you most likely already know, but I want
> > to be sure I'm actually understanding it correctly.
> > 
> > Now, let's look at how this could be solved.
> > Here is a proposal [3] that does the following:
> 
> This would be a lot easier to follow/review as an RFC post to the
> mailing list.

Yep, that was the plan, just wanted to make sure I had correctly
understood the problem before posting an RFC.

> Otherwise I have some high-level comments on the stuff
> below, which I think matches the shape of what we discussed on IRC.
> 
> >  1/ prevent a system wakeup when at least one of the action handler
> >     has set the IRQF_NO_SUSPEND flag
> 
> We might need to add some logic to enable_irq_wake and
> irq_pm_install_action to prevent some of the horrible mismatch cases we
> can get here (e.g. if we have a wakeup handler, a IRQF_NO_SUSPEND
> handler, and another handler which is neither). We may need to
> reconsider temporarily stashing the other potential interrupts.

Actually if we force users to pass the IRQF_XXX_SAFE (I'm tired writing
all the potential names :-)), when mixing IRQF_NO_SUSPEND
and !IRQF_NO_SUSPEND handlers, we shouldn't bother deactivating normal
handlers (those without IRQF_NO_SUSPEND), 'cause they claimed they could
safely be called in suspended state.

> 
> Do we perhaps need an IRQF_SHARED_WAKEUP_SIBLING_OK for timer drivers to
> assert their handlers are safe for the whole suspend period rather than
> just the period they expect to be enabled for? Or do those always
> happen to be safe in practice?

I thought they were always safe...

> 
> >  2/ Add a few helpers to deal with system wakeup from drivers code
> 
> The irq_pm_force_wakeup part looks like what I had in mind.
> 
> >  3/ Rework the at91 RTC driver to show how such weird cases could be
> >     handled
> 
> It might be simpler to do this with a PM notifier within the driver
> rather than having to traverse all the irq_descs, though perhaps not.

I'm not sure to understand that one. Where am I traversing irq_descs
(irq_to_desc, which is called when testing wakeup_armed status, is a
direct table indexing operation) ?
Moreover, I'm not sure when the PM_POST_SUSPEND event is sent, and
testing the WAKEUP_ARMED flag should be safe in all cases, right ?

> 
> > Of course, I'll need the IRQF_SHARED_TIMER_OK patch to prevent the
> > WARN_ON backtrace.
> 
> That should be fine; it's backed up in the list archive ;)
> 
> > Please, let me know if I missed anything important, share your opinion
> > on this proposal, and feel free to propose any other solution.
> 
> Hopefully the above covers that!

Yes it does.
Thanks for the review.

Best Regards,

Boris

-- 
Boris Brezillon, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

WARNING: multiple messages have this Message-ID (diff)
From: Boris Brezillon <boris.brezillon@free-electrons.com>
To: Mark Rutland <mark.rutland@arm.com>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Thomas Gleixner <tglx@linutronix.de>,
	Jason Cooper <jason@lakedaemon.net>,
	Nicolas Ferre <nicolas.ferre@atmel.com>,
	Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>,
	Alexandre Belloni <alexandre.belloni@free-electrons.com>,
	Rob Herring <robh+dt@kernel.org>, Pawel Moll <Pawel.Moll@arm.com>,
	Ian Campbell <ijc+devicetree@hellion.org.uk>,
	Kumar Gala <galak@codeaurora.org>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v4 3/5] irqchip: Add DT binding doc for the virtual irq demuxer chip
Date: Mon, 23 Feb 2015 21:16:22 +0100	[thread overview]
Message-ID: <20150223211622.37cf3ca1@bbrezillon> (raw)
In-Reply-To: <20150223181448.GQ9714@leverpostej>

On Mon, 23 Feb 2015 18:14:48 +0000
Mark Rutland <mark.rutland@arm.com> wrote:


[...]

> > This is because irq_may_run [1], which is called to decide whether we
> > should handle this irq or just wake the system up [2], will always
> > return true if at least one of the shared action has tagged the irq
> > line as a wakeup source.
> 
> I assume you mean we return false in this case (having triggered the
> wakeup within irq_pm_check_wakeup, which returned true), but otherwise
> agreed.

Yep, I meant 'return false'.


> 
> I can envisage problems if the irq handler of a wakeup device can't be
> run safely until resume time, though I'm not sure if that happens in
> practice given the device is necessarily going to be active.

Isn't that the purpose of the
IRQF_NO_SUSPEND_SAFE/IRQF_SHARED_TIMER_OK/IRQF_SHARED_WAKEUP_SIBLING_OK
flag ? 

> 
> > Sorry for summarizing things you most likely already know, but I want
> > to be sure I'm actually understanding it correctly.
> > 
> > Now, let's look at how this could be solved.
> > Here is a proposal [3] that does the following:
> 
> This would be a lot easier to follow/review as an RFC post to the
> mailing list.

Yep, that was the plan, just wanted to make sure I had correctly
understood the problem before posting an RFC.

> Otherwise I have some high-level comments on the stuff
> below, which I think matches the shape of what we discussed on IRC.
> 
> >  1/ prevent a system wakeup when at least one of the action handler
> >     has set the IRQF_NO_SUSPEND flag
> 
> We might need to add some logic to enable_irq_wake and
> irq_pm_install_action to prevent some of the horrible mismatch cases we
> can get here (e.g. if we have a wakeup handler, a IRQF_NO_SUSPEND
> handler, and another handler which is neither). We may need to
> reconsider temporarily stashing the other potential interrupts.

Actually if we force users to pass the IRQF_XXX_SAFE (I'm tired writing
all the potential names :-)), when mixing IRQF_NO_SUSPEND
and !IRQF_NO_SUSPEND handlers, we shouldn't bother deactivating normal
handlers (those without IRQF_NO_SUSPEND), 'cause they claimed they could
safely be called in suspended state.

> 
> Do we perhaps need an IRQF_SHARED_WAKEUP_SIBLING_OK for timer drivers to
> assert their handlers are safe for the whole suspend period rather than
> just the period they expect to be enabled for? Or do those always
> happen to be safe in practice?

I thought they were always safe...

> 
> >  2/ Add a few helpers to deal with system wakeup from drivers code
> 
> The irq_pm_force_wakeup part looks like what I had in mind.
> 
> >  3/ Rework the at91 RTC driver to show how such weird cases could be
> >     handled
> 
> It might be simpler to do this with a PM notifier within the driver
> rather than having to traverse all the irq_descs, though perhaps not.

I'm not sure to understand that one. Where am I traversing irq_descs
(irq_to_desc, which is called when testing wakeup_armed status, is a
direct table indexing operation) ?
Moreover, I'm not sure when the PM_POST_SUSPEND event is sent, and
testing the WAKEUP_ARMED flag should be safe in all cases, right ?

> 
> > Of course, I'll need the IRQF_SHARED_TIMER_OK patch to prevent the
> > WARN_ON backtrace.
> 
> That should be fine; it's backed up in the list archive ;)
> 
> > Please, let me know if I missed anything important, share your opinion
> > on this proposal, and feel free to propose any other solution.
> 
> Hopefully the above covers that!

Yes it does.
Thanks for the review.

Best Regards,

Boris

-- 
Boris Brezillon, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

  reply	other threads:[~2015-02-23 20:16 UTC|newest]

Thread overview: 165+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-29 10:33 [PATCH v4 0/5] ARM: at91: fix irq_pm_install_action WARNING Boris Brezillon
2015-01-29 10:33 ` Boris Brezillon
2015-01-29 10:33 ` Boris Brezillon
2015-01-29 10:33 ` [PATCH v4 1/5] genirq: Authorize chained handlers to remain disabled when initialized Boris Brezillon
2015-01-29 10:33   ` Boris Brezillon
2015-01-29 10:33   ` Boris Brezillon
2015-01-29 10:33 ` [PATCH v4 2/5] irqchip: add virtual demultiplexer implementation Boris Brezillon
2015-01-29 10:33   ` Boris Brezillon
2015-02-10 15:00   ` Peter Zijlstra
2015-02-10 15:00     ` Peter Zijlstra
2015-02-10 15:20     ` Boris Brezillon
2015-02-10 15:20       ` Boris Brezillon
2015-02-10 15:43     ` [PATCH] genirq: fix virtual irq demuxer related comments Boris Brezillon
2015-02-10 15:43       ` Boris Brezillon
2015-02-10 16:14       ` Peter Zijlstra
2015-02-10 16:14         ` Peter Zijlstra
2015-02-10 16:14         ` Peter Zijlstra
2015-02-20 16:12         ` Mark Rutland
2015-02-20 16:12           ` Mark Rutland
2015-02-20 16:17           ` Peter Zijlstra
2015-02-20 16:17             ` Peter Zijlstra
2015-02-10 15:48   ` [PATCH v4 2/5] irqchip: add virtual demultiplexer implementation Mark Rutland
2015-02-10 15:48     ` Mark Rutland
2015-02-10 15:48     ` Mark Rutland
2015-01-29 10:33 ` [PATCH v4 3/5] irqchip: Add DT binding doc for the virtual irq demuxer chip Boris Brezillon
2015-01-29 10:33   ` Boris Brezillon
2015-02-10 15:36   ` Mark Rutland
2015-02-10 15:36     ` Mark Rutland
2015-02-10 15:52     ` Boris Brezillon
2015-02-10 15:52       ` Boris Brezillon
2015-02-10 16:06       ` Boris Brezillon
2015-02-10 16:06         ` Boris Brezillon
2015-02-10 16:16       ` Mark Rutland
2015-02-10 16:16         ` Mark Rutland
2015-02-10 16:20         ` Boris Brezillon
2015-02-10 16:20           ` Boris Brezillon
2015-02-10 20:48       ` Mark Rutland
2015-02-10 20:48         ` Mark Rutland
2015-02-11  8:53         ` Boris Brezillon
2015-02-11  8:53           ` Boris Brezillon
2015-02-11 11:11           ` Mark Rutland
2015-02-11 11:11             ` Mark Rutland
2015-02-11 11:11             ` Mark Rutland
2015-02-11 12:24             ` Boris Brezillon
2015-02-11 12:24               ` Boris Brezillon
2015-02-11 12:24               ` Boris Brezillon
2015-02-11 12:36               ` Mark Rutland
2015-02-11 12:36                 ` Mark Rutland
2015-02-11 13:38                 ` Alexandre Belloni
2015-02-11 13:38                   ` Alexandre Belloni
2015-02-11 13:38                   ` Alexandre Belloni
2015-02-11 13:48                   ` Mark Rutland
2015-02-11 13:48                     ` Mark Rutland
2015-02-11 13:48                     ` Mark Rutland
2015-02-11 14:55               ` Rafael J. Wysocki
2015-02-11 14:55                 ` Rafael J. Wysocki
2015-02-11 14:55                 ` Rafael J. Wysocki
2015-02-11 14:43                 ` Mark Rutland
2015-02-11 14:43                   ` Mark Rutland
2015-02-11 15:17                   ` Rafael J. Wysocki
2015-02-11 15:17                     ` Rafael J. Wysocki
2015-02-11 15:03                     ` Boris Brezillon
2015-02-11 15:03                       ` Boris Brezillon
2015-02-11 15:03                       ` Boris Brezillon
2015-02-11 15:39                       ` Rafael J. Wysocki
2015-02-11 15:39                         ` Rafael J. Wysocki
2015-02-11 15:23                         ` Mark Rutland
2015-02-11 15:23                           ` Mark Rutland
2015-02-11 15:12                     ` Mark Rutland
2015-02-11 15:12                       ` Mark Rutland
2015-02-11 15:51                       ` Rafael J. Wysocki
2015-02-11 15:51                         ` Rafael J. Wysocki
2015-02-11 15:57                         ` Mark Rutland
2015-02-11 15:57                           ` Mark Rutland
2015-02-11 16:15                           ` Boris Brezillon
2015-02-11 16:15                             ` Boris Brezillon
2015-02-11 16:32                             ` Mark Rutland
2015-02-11 16:32                               ` Mark Rutland
2015-02-11 16:32                               ` Mark Rutland
2015-02-11 16:38                               ` Boris Brezillon
2015-02-11 16:38                                 ` Boris Brezillon
2015-02-11 17:17                                 ` Mark Rutland
2015-02-11 17:17                                   ` Mark Rutland
2015-02-20 14:22                                 ` Mark Rutland
2015-02-20 14:22                                   ` Mark Rutland
2015-02-20 14:22                                   ` Mark Rutland
2015-02-20 14:53                                   ` Boris Brezillon
2015-02-20 14:53                                     ` Boris Brezillon
2015-02-20 15:16                                     ` Mark Rutland
2015-02-20 15:16                                       ` Mark Rutland
2015-02-20 15:16                                       ` Mark Rutland
2015-02-23 17:00                                       ` Boris Brezillon
2015-02-23 17:00                                         ` Boris Brezillon
2015-02-23 18:14                                         ` Mark Rutland
2015-02-23 18:14                                           ` Mark Rutland
2015-02-23 18:14                                           ` Mark Rutland
2015-02-23 20:16                                           ` Boris Brezillon [this message]
2015-02-23 20:16                                             ` Boris Brezillon
2015-02-11 16:42                             ` Rafael J. Wysocki
2015-02-11 16:42                               ` Rafael J. Wysocki
2015-02-11 16:28                               ` Boris Brezillon
2015-02-11 16:28                                 ` Boris Brezillon
2015-02-11 17:13                               ` Mark Rutland
2015-02-11 17:13                                 ` Mark Rutland
2015-02-11 17:13                                 ` Mark Rutland
2015-02-11 17:29                                 ` Boris Brezillon
2015-02-11 17:29                                   ` Boris Brezillon
2015-02-12 10:52                                   ` Mark Rutland
2015-02-12 10:52                                     ` Mark Rutland
2015-02-12 11:09                                     ` Boris Brezillon
2015-02-12 11:09                                       ` Boris Brezillon
2015-02-12 11:23                                       ` Mark Rutland
2015-02-12 11:23                                         ` Mark Rutland
2015-02-16  9:49                                 ` Peter Zijlstra
2015-02-16  9:49                                   ` Peter Zijlstra
2015-02-16  9:49                                   ` Peter Zijlstra
2015-02-16  9:28                         ` Peter Zijlstra
2015-02-16  9:28                           ` Peter Zijlstra
2015-02-16 12:23                           ` Mark Rutland
2015-02-16 12:23                             ` Mark Rutland
2015-02-16 12:23                             ` Mark Rutland
2015-02-19  1:16                             ` Rafael J. Wysocki
2015-02-19  1:16                               ` Rafael J. Wysocki
2015-02-19 11:23                               ` Mark Rutland
2015-02-19 11:23                                 ` Mark Rutland
2015-02-19 11:23                                 ` Mark Rutland
2015-02-19 22:35                                 ` Rafael J. Wysocki
2015-02-19 22:35                                   ` Rafael J. Wysocki
2015-02-20 10:31                                   ` Mark Rutland
2015-02-20 10:31                                     ` Mark Rutland
2015-02-24  1:02                                     ` Rafael J. Wysocki
2015-02-24  1:02                                       ` Rafael J. Wysocki
2015-02-24  1:02                                       ` Rafael J. Wysocki
2015-02-24  8:42                                       ` Boris Brezillon
2015-02-24  8:42                                         ` Boris Brezillon
2015-02-11 14:45                 ` Boris Brezillon
2015-02-11 14:45                   ` Boris Brezillon
2015-02-11 14:45                   ` Boris Brezillon
2015-02-11 14:39             ` Rafael J. Wysocki
2015-02-11 14:39               ` Rafael J. Wysocki
2015-02-11  9:11         ` Peter Zijlstra
2015-02-11  9:11           ` Peter Zijlstra
2015-02-11  9:11           ` Peter Zijlstra
2015-02-11 11:15           ` Mark Rutland
2015-02-11 11:15             ` Mark Rutland
2015-02-11 14:31             ` Rafael J. Wysocki
2015-02-11 14:31               ` Rafael J. Wysocki
2015-02-11 14:14               ` Mark Rutland
2015-02-11 14:14                 ` Mark Rutland
2015-02-11 14:14                 ` Mark Rutland
2015-02-11 15:07                 ` Rafael J. Wysocki
2015-02-11 15:07                   ` Rafael J. Wysocki
2015-02-11 15:03                   ` Mark Rutland
2015-02-11 15:03                     ` Mark Rutland
2015-02-11 15:03                     ` Mark Rutland
2015-02-11 14:34         ` Rafael J. Wysocki
2015-02-11 14:34           ` Rafael J. Wysocki
2015-02-11 14:34           ` Rafael J. Wysocki
2015-01-29 10:33 ` [PATCH v4 4/5] ARM: at91/dt: select VIRT_IRQ_DEMUX for all at91 SoCs Boris Brezillon
2015-01-29 10:33   ` Boris Brezillon
2015-01-29 10:33 ` [PATCH v4 5/5] ARM: at91/dt: define a virtual irq demultiplexer chip connected on irq1 Boris Brezillon
2015-01-29 10:33   ` Boris Brezillon
2015-01-29 10:33   ` Boris Brezillon
2015-02-09 15:47 ` [PATCH v4 0/5] ARM: at91: fix irq_pm_install_action WARNING Boris Brezillon
2015-02-09 15:47   ` Boris Brezillon

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=20150223211622.37cf3ca1@bbrezillon \
    --to=boris.brezillon@free-electrons.com \
    --cc=linux-arm-kernel@lists.infradead.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.