From: "Rafael J. Wysocki" <rafael@kernel.org> To: Ulf Hansson <ulf.hansson@linaro.org> Cc: Martin Kepplinger <martin.kepplinger@puri.sm>, "Rafael J. Wysocki" <rafael@kernel.org>, Kevin Hilman <khilman@kernel.org>, Rob Herring <robh@kernel.org>, Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>, Shawn Guo <shawnguo@kernel.org>, Sascha Hauer <s.hauer@pengutronix.de>, Fabio Estevam <festevam@gmail.com>, Pavel Machek <pavel@ucw.cz>, kernel@puri.sm, dl-linux-imx <linux-imx@nxp.com>, Mark Brown <broonie@kernel.org>, Lucas Stach <l.stach@pengutronix.de>, aford173@gmail.com, Linux PM <linux-pm@vger.kernel.org>, "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" <devicetree@vger.kernel.org>, Linux Kernel Mailing List <linux-kernel@vger.kernel.org>, Linux ARM <linux-arm-kernel@lists.infradead.org> Subject: Re: [PATCH v6 1/2] power: domain: handle genpd correctly when needing interrupts Date: Tue, 26 Jul 2022 20:33:17 +0200 [thread overview] Message-ID: <CAJZ5v0hG4+z=ypDudiSnhG1SUxfLv+EFsUGOjQEqUi0EKH3+Rw@mail.gmail.com> (raw) In-Reply-To: <CAPDyKFrLLw=y9+t3f_bOH2mw2NVDGJxKE5=+XHY7C6SUzLzUDg@mail.gmail.com> On Tue, Jul 26, 2022 at 5:07 PM Ulf Hansson <ulf.hansson@linaro.org> wrote: > > On Tue, 26 Jul 2022 at 10:33, Martin Kepplinger > <martin.kepplinger@puri.sm> wrote: > > > > If for example the power-domains' power-supply node (regulator) needs > > interrupts to work, the current setup with noirq callbacks cannot > > work; for example a pmic regulator on i2c, when suspending, usually already > > times out during suspend_noirq: > > > > [ 41.024193] buck4: failed to disable: -ETIMEDOUT > > > > So fix system suspend and resume for these power-domains by using the > > "outer" suspend/resume callbacks instead. Tested on the imx8mq-librem5 board, > > but by looking at the dts, this will fix imx8mq-evk and possibly many other > > boards too. > > > > This is designed so that genpd providers just say "this genpd needs > > interrupts" (by setting the flag) - without implying an implementation. > > > > Initially system suspend problems had been discussed at > > https://lore.kernel.org/linux-arm-kernel/20211002005954.1367653-8-l.stach@pengutronix.de/ > > which led to discussing the pmic that contains the regulators which > > serve as power-domain power-supplies: > > https://lore.kernel.org/linux-pm/573166b75e524517782471c2b7f96e03fd93d175.camel@puri.sm/T/ > > > > Signed-off-by: Martin Kepplinger <martin.kepplinger@puri.sm> > > --- > > drivers/base/power/domain.c | 13 +++++++++++-- > > include/linux/pm_domain.h | 5 +++++ > > 2 files changed, 16 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c > > index 5a2e0232862e..58376752a4de 100644 > > --- a/drivers/base/power/domain.c > > +++ b/drivers/base/power/domain.c > > @@ -130,6 +130,7 @@ static const struct genpd_lock_ops genpd_spin_ops = { > > #define genpd_is_active_wakeup(genpd) (genpd->flags & GENPD_FLAG_ACTIVE_WAKEUP) > > #define genpd_is_cpu_domain(genpd) (genpd->flags & GENPD_FLAG_CPU_DOMAIN) > > #define genpd_is_rpm_always_on(genpd) (genpd->flags & GENPD_FLAG_RPM_ALWAYS_ON) > > +#define genpd_irq_on(genpd) (genpd->flags & GENPD_FLAG_IRQ_ON) > > > > static inline bool irq_safe_dev_in_sleep_domain(struct device *dev, > > const struct generic_pm_domain *genpd) > > @@ -2065,8 +2066,15 @@ int pm_genpd_init(struct generic_pm_domain *genpd, > > genpd->domain.ops.runtime_suspend = genpd_runtime_suspend; > > genpd->domain.ops.runtime_resume = genpd_runtime_resume; > > genpd->domain.ops.prepare = genpd_prepare; > > - genpd->domain.ops.suspend_noirq = genpd_suspend_noirq; > > - genpd->domain.ops.resume_noirq = genpd_resume_noirq; > > + > > + if (genpd_irq_on(genpd)) { > > + genpd->domain.ops.suspend = genpd_suspend_noirq; > > + genpd->domain.ops.resume = genpd_resume_noirq; > > + } else { > > + genpd->domain.ops.suspend_noirq = genpd_suspend_noirq; > > + genpd->domain.ops.resume_noirq = genpd_resume_noirq; > > As we discussed previously, I am thinking that it may be better to > move to using genpd->domain.ops.suspend_late and > genpd->domain.ops.resume_early instead. Should I take this as a change request? > Beside this, I think the $subject patch looks good to me. Or not?
WARNING: multiple messages have this Message-ID (diff)
From: "Rafael J. Wysocki" <rafael@kernel.org> To: Ulf Hansson <ulf.hansson@linaro.org> Cc: Martin Kepplinger <martin.kepplinger@puri.sm>, "Rafael J. Wysocki" <rafael@kernel.org>, Kevin Hilman <khilman@kernel.org>, Rob Herring <robh@kernel.org>, Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>, Shawn Guo <shawnguo@kernel.org>, Sascha Hauer <s.hauer@pengutronix.de>, Fabio Estevam <festevam@gmail.com>, Pavel Machek <pavel@ucw.cz>, kernel@puri.sm, dl-linux-imx <linux-imx@nxp.com>, Mark Brown <broonie@kernel.org>, Lucas Stach <l.stach@pengutronix.de>, aford173@gmail.com, Linux PM <linux-pm@vger.kernel.org>, "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" <devicetree@vger.kernel.org>, Linux Kernel Mailing List <linux-kernel@vger.kernel.org>, Linux ARM <linux-arm-kernel@lists.infradead.org> Subject: Re: [PATCH v6 1/2] power: domain: handle genpd correctly when needing interrupts Date: Tue, 26 Jul 2022 20:33:17 +0200 [thread overview] Message-ID: <CAJZ5v0hG4+z=ypDudiSnhG1SUxfLv+EFsUGOjQEqUi0EKH3+Rw@mail.gmail.com> (raw) In-Reply-To: <CAPDyKFrLLw=y9+t3f_bOH2mw2NVDGJxKE5=+XHY7C6SUzLzUDg@mail.gmail.com> On Tue, Jul 26, 2022 at 5:07 PM Ulf Hansson <ulf.hansson@linaro.org> wrote: > > On Tue, 26 Jul 2022 at 10:33, Martin Kepplinger > <martin.kepplinger@puri.sm> wrote: > > > > If for example the power-domains' power-supply node (regulator) needs > > interrupts to work, the current setup with noirq callbacks cannot > > work; for example a pmic regulator on i2c, when suspending, usually already > > times out during suspend_noirq: > > > > [ 41.024193] buck4: failed to disable: -ETIMEDOUT > > > > So fix system suspend and resume for these power-domains by using the > > "outer" suspend/resume callbacks instead. Tested on the imx8mq-librem5 board, > > but by looking at the dts, this will fix imx8mq-evk and possibly many other > > boards too. > > > > This is designed so that genpd providers just say "this genpd needs > > interrupts" (by setting the flag) - without implying an implementation. > > > > Initially system suspend problems had been discussed at > > https://lore.kernel.org/linux-arm-kernel/20211002005954.1367653-8-l.stach@pengutronix.de/ > > which led to discussing the pmic that contains the regulators which > > serve as power-domain power-supplies: > > https://lore.kernel.org/linux-pm/573166b75e524517782471c2b7f96e03fd93d175.camel@puri.sm/T/ > > > > Signed-off-by: Martin Kepplinger <martin.kepplinger@puri.sm> > > --- > > drivers/base/power/domain.c | 13 +++++++++++-- > > include/linux/pm_domain.h | 5 +++++ > > 2 files changed, 16 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c > > index 5a2e0232862e..58376752a4de 100644 > > --- a/drivers/base/power/domain.c > > +++ b/drivers/base/power/domain.c > > @@ -130,6 +130,7 @@ static const struct genpd_lock_ops genpd_spin_ops = { > > #define genpd_is_active_wakeup(genpd) (genpd->flags & GENPD_FLAG_ACTIVE_WAKEUP) > > #define genpd_is_cpu_domain(genpd) (genpd->flags & GENPD_FLAG_CPU_DOMAIN) > > #define genpd_is_rpm_always_on(genpd) (genpd->flags & GENPD_FLAG_RPM_ALWAYS_ON) > > +#define genpd_irq_on(genpd) (genpd->flags & GENPD_FLAG_IRQ_ON) > > > > static inline bool irq_safe_dev_in_sleep_domain(struct device *dev, > > const struct generic_pm_domain *genpd) > > @@ -2065,8 +2066,15 @@ int pm_genpd_init(struct generic_pm_domain *genpd, > > genpd->domain.ops.runtime_suspend = genpd_runtime_suspend; > > genpd->domain.ops.runtime_resume = genpd_runtime_resume; > > genpd->domain.ops.prepare = genpd_prepare; > > - genpd->domain.ops.suspend_noirq = genpd_suspend_noirq; > > - genpd->domain.ops.resume_noirq = genpd_resume_noirq; > > + > > + if (genpd_irq_on(genpd)) { > > + genpd->domain.ops.suspend = genpd_suspend_noirq; > > + genpd->domain.ops.resume = genpd_resume_noirq; > > + } else { > > + genpd->domain.ops.suspend_noirq = genpd_suspend_noirq; > > + genpd->domain.ops.resume_noirq = genpd_resume_noirq; > > As we discussed previously, I am thinking that it may be better to > move to using genpd->domain.ops.suspend_late and > genpd->domain.ops.resume_early instead. Should I take this as a change request? > Beside this, I think the $subject patch looks good to me. Or not? _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2022-07-26 18:33 UTC|newest] Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-07-26 8:32 [PATCH v6 0/2] power: domain: handle power supplies that need interrupts Martin Kepplinger 2022-07-26 8:32 ` Martin Kepplinger 2022-07-26 8:32 ` [PATCH v6 1/2] power: domain: handle genpd correctly when needing interrupts Martin Kepplinger 2022-07-26 8:32 ` Martin Kepplinger 2022-07-26 15:07 ` Ulf Hansson 2022-07-26 15:07 ` Ulf Hansson 2022-07-26 18:33 ` Rafael J. Wysocki [this message] 2022-07-26 18:33 ` Rafael J. Wysocki 2022-07-28 9:19 ` Ulf Hansson 2022-07-28 9:19 ` Ulf Hansson 2022-08-19 9:17 ` Martin Kepplinger 2022-08-19 9:17 ` Martin Kepplinger 2022-08-19 14:53 ` Ulf Hansson 2022-08-19 14:53 ` Ulf Hansson 2022-08-22 8:38 ` Martin Kepplinger 2022-08-22 8:38 ` Martin Kepplinger 2022-08-24 13:30 ` Ulf Hansson 2022-08-24 13:30 ` Ulf Hansson 2022-08-25 7:06 ` Martin Kepplinger 2022-08-25 7:06 ` Martin Kepplinger 2022-09-23 13:55 ` Ulf Hansson 2022-09-23 13:55 ` Ulf Hansson 2022-09-26 9:52 ` Martin Kepplinger 2022-09-26 9:52 ` Martin Kepplinger 2023-06-21 18:20 ` Martin Kepplinger 2023-06-21 18:20 ` Martin Kepplinger 2023-06-26 9:50 ` Ulf Hansson 2023-06-26 9:50 ` Ulf Hansson 2022-07-26 8:32 ` [PATCH v6 2/2] soc: imx: gpcv2: fix suspend/resume by setting GENPD_FLAG_IRQ_ON Martin Kepplinger 2022-07-26 8:32 ` Martin Kepplinger 2022-07-26 15:08 ` Ulf Hansson 2022-07-26 15:08 ` Ulf Hansson
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='CAJZ5v0hG4+z=ypDudiSnhG1SUxfLv+EFsUGOjQEqUi0EKH3+Rw@mail.gmail.com' \ --to=rafael@kernel.org \ --cc=aford173@gmail.com \ --cc=broonie@kernel.org \ --cc=devicetree@vger.kernel.org \ --cc=festevam@gmail.com \ --cc=kernel@puri.sm \ --cc=khilman@kernel.org \ --cc=krzysztof.kozlowski@linaro.org \ --cc=l.stach@pengutronix.de \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-imx@nxp.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-pm@vger.kernel.org \ --cc=martin.kepplinger@puri.sm \ --cc=pavel@ucw.cz \ --cc=robh@kernel.org \ --cc=s.hauer@pengutronix.de \ --cc=shawnguo@kernel.org \ --cc=ulf.hansson@linaro.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: linkBe 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.