* [PATCH 0/3] PM: domains: Some minor improvements for genpd_power_off()
@ 2022-04-26 14:15 Ulf Hansson
2022-04-26 14:15 ` [PATCH 1/3] PM: domains: Add GENPD_FLAG_RPM_ALWAYS_ON for the always-on governor Ulf Hansson
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Ulf Hansson @ 2022-04-26 14:15 UTC (permalink / raw)
To: Rafael J . Wysocki, linux-pm
Cc: Kevin Hilman, Vincent Guittot, Geert Uytterhoeven,
Dmitry Osipenko, Ulf Hansson, linux-arm-kernel, linux-kernel
This small series intends to improve some of the execution paths when powering
off a genpd. More information is available in the commit messages.
Ulf Hansson (3):
PM: domains: Add GENPD_FLAG_RPM_ALWAYS_ON for the always-on governor
PM: domains: Drop redundant code for genpd always-on governor
PM: domain: Don't check PM_QOS_FLAG_NO_POWER_OFF in genpd
drivers/base/power/domain.c | 10 ++++------
drivers/base/power/domain_governor.c | 6 ------
2 files changed, 4 insertions(+), 12 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/3] PM: domains: Add GENPD_FLAG_RPM_ALWAYS_ON for the always-on governor
2022-04-26 14:15 [PATCH 0/3] PM: domains: Some minor improvements for genpd_power_off() Ulf Hansson
@ 2022-04-26 14:15 ` Ulf Hansson
2022-04-26 14:15 ` [PATCH 2/3] PM: domains: Drop redundant code for genpd " Ulf Hansson
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Ulf Hansson @ 2022-04-26 14:15 UTC (permalink / raw)
To: Rafael J . Wysocki, linux-pm
Cc: Kevin Hilman, Vincent Guittot, Geert Uytterhoeven,
Dmitry Osipenko, Ulf Hansson, linux-arm-kernel, linux-kernel
Rather than relying on the genpd provider to set the corresponding flag,
GENPD_FLAG_RPM_ALWAYS_ON, when the always-on governor is being used, let's
add it in pm_genpd_init(). In this way, it starts to benefits all genpd
providers immediately.
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
---
drivers/base/power/domain.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c
index 18cd7965e5d6..262bda9b56ef 100644
--- a/drivers/base/power/domain.c
+++ b/drivers/base/power/domain.c
@@ -2016,6 +2016,10 @@ int pm_genpd_init(struct generic_pm_domain *genpd,
genpd->dev_ops.start = pm_clk_resume;
}
+ /* The always-on governor works better with the corresponding flag. */
+ if (gov == &pm_domain_always_on_gov)
+ genpd->flags |= GENPD_FLAG_RPM_ALWAYS_ON;
+
/* Always-on domains must be powered on at initialization. */
if ((genpd_is_always_on(genpd) || genpd_is_rpm_always_on(genpd)) &&
!genpd_status_on(genpd))
--
2.25.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/3] PM: domains: Drop redundant code for genpd always-on governor
2022-04-26 14:15 [PATCH 0/3] PM: domains: Some minor improvements for genpd_power_off() Ulf Hansson
2022-04-26 14:15 ` [PATCH 1/3] PM: domains: Add GENPD_FLAG_RPM_ALWAYS_ON for the always-on governor Ulf Hansson
@ 2022-04-26 14:15 ` Ulf Hansson
2022-04-26 14:15 ` [PATCH 3/3] PM: domain: Don't check PM_QOS_FLAG_NO_POWER_OFF in genpd Ulf Hansson
2022-05-04 9:35 ` [PATCH 0/3] PM: domains: Some minor improvements for genpd_power_off() Ulf Hansson
3 siblings, 0 replies; 5+ messages in thread
From: Ulf Hansson @ 2022-04-26 14:15 UTC (permalink / raw)
To: Rafael J . Wysocki, linux-pm
Cc: Kevin Hilman, Vincent Guittot, Geert Uytterhoeven,
Dmitry Osipenko, Ulf Hansson, linux-arm-kernel, linux-kernel
Due to recent changes, the always-on governor is always used with a genpd
that has the GENPD_FLAG_RPM_ALWAYS_ON flag being set. This means genpd,
doesn't invoke the governor's ->power_down_ok() callback, which makes the
code in governor redundant, so let's drop it.
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
---
drivers/base/power/domain_governor.c | 6 ------
1 file changed, 6 deletions(-)
diff --git a/drivers/base/power/domain_governor.c b/drivers/base/power/domain_governor.c
index cd08c5885190..c13e44823f16 100644
--- a/drivers/base/power/domain_governor.c
+++ b/drivers/base/power/domain_governor.c
@@ -327,11 +327,6 @@ static bool default_power_down_ok(struct dev_pm_domain *pd)
return _default_power_down_ok(pd, ktime_get());
}
-static bool always_on_power_down_ok(struct dev_pm_domain *domain)
-{
- return false;
-}
-
#ifdef CONFIG_CPU_IDLE
static bool cpu_power_down_ok(struct dev_pm_domain *pd)
{
@@ -401,6 +396,5 @@ struct dev_power_governor simple_qos_governor = {
* pm_genpd_gov_always_on - A governor implementing an always-on policy
*/
struct dev_power_governor pm_domain_always_on_gov = {
- .power_down_ok = always_on_power_down_ok,
.suspend_ok = default_suspend_ok,
};
--
2.25.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 3/3] PM: domain: Don't check PM_QOS_FLAG_NO_POWER_OFF in genpd
2022-04-26 14:15 [PATCH 0/3] PM: domains: Some minor improvements for genpd_power_off() Ulf Hansson
2022-04-26 14:15 ` [PATCH 1/3] PM: domains: Add GENPD_FLAG_RPM_ALWAYS_ON for the always-on governor Ulf Hansson
2022-04-26 14:15 ` [PATCH 2/3] PM: domains: Drop redundant code for genpd " Ulf Hansson
@ 2022-04-26 14:15 ` Ulf Hansson
2022-05-04 9:35 ` [PATCH 0/3] PM: domains: Some minor improvements for genpd_power_off() Ulf Hansson
3 siblings, 0 replies; 5+ messages in thread
From: Ulf Hansson @ 2022-04-26 14:15 UTC (permalink / raw)
To: Rafael J . Wysocki, linux-pm
Cc: Kevin Hilman, Vincent Guittot, Geert Uytterhoeven,
Dmitry Osipenko, Ulf Hansson, linux-arm-kernel, linux-kernel
Back in the days when genpd supported intermediate power states of its
devices, it made sense to check the PM_QOS_FLAG_NO_POWER_OFF in
genpd_power_off(). This because the attached devices were all being put
into low power state together when the PM domain was also being powered
off.
At this point, the flag PM_QOS_FLAG_NO_POWER_OFF is better checked by
drivers from their ->runtime_suspend() callbacks, like in the
usb_port_runtime_suspend(), for example. Or perhaps an even better option
is to set the QoS resume latency constraint for the device to zero, which
informs the runtime PM core to prevent the device from being runtime
suspended.
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
---
drivers/base/power/domain.c | 6 ------
1 file changed, 6 deletions(-)
diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c
index 262bda9b56ef..5059c5d2e64a 100644
--- a/drivers/base/power/domain.c
+++ b/drivers/base/power/domain.c
@@ -648,12 +648,6 @@ static int genpd_power_off(struct generic_pm_domain *genpd, bool one_dev_on,
}
list_for_each_entry(pdd, &genpd->dev_list, list_node) {
- enum pm_qos_flags_status stat;
-
- stat = dev_pm_qos_flags(pdd->dev, PM_QOS_FLAG_NO_POWER_OFF);
- if (stat > PM_QOS_FLAGS_NONE)
- return -EBUSY;
-
/*
* Do not allow PM domain to be powered off, when an IRQ safe
* device is part of a non-IRQ safe domain.
--
2.25.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 0/3] PM: domains: Some minor improvements for genpd_power_off()
2022-04-26 14:15 [PATCH 0/3] PM: domains: Some minor improvements for genpd_power_off() Ulf Hansson
` (2 preceding siblings ...)
2022-04-26 14:15 ` [PATCH 3/3] PM: domain: Don't check PM_QOS_FLAG_NO_POWER_OFF in genpd Ulf Hansson
@ 2022-05-04 9:35 ` Ulf Hansson
3 siblings, 0 replies; 5+ messages in thread
From: Ulf Hansson @ 2022-05-04 9:35 UTC (permalink / raw)
To: Rafael J . Wysocki, linux-pm
Cc: Kevin Hilman, Vincent Guittot, Geert Uytterhoeven,
Dmitry Osipenko, linux-arm-kernel, linux-kernel
On Tue, 26 Apr 2022 at 16:15, Ulf Hansson <ulf.hansson@linaro.org> wrote:
>
> This small series intends to improve some of the execution paths when powering
> off a genpd. More information is available in the commit messages.
>
> Ulf Hansson (3):
> PM: domains: Add GENPD_FLAG_RPM_ALWAYS_ON for the always-on governor
> PM: domains: Drop redundant code for genpd always-on governor
> PM: domain: Don't check PM_QOS_FLAG_NO_POWER_OFF in genpd
>
> drivers/base/power/domain.c | 10 ++++------
> drivers/base/power/domain_governor.c | 6 ------
> 2 files changed, 4 insertions(+), 12 deletions(-)
>
Rafael, I have another slew of patches for genpd that I am getting
prepared to submit. However, it would be nice to get @subject series
queued first. Is it ready to go, you think?
Kind regards
Uffe
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2022-05-04 9:35 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-04-26 14:15 [PATCH 0/3] PM: domains: Some minor improvements for genpd_power_off() Ulf Hansson
2022-04-26 14:15 ` [PATCH 1/3] PM: domains: Add GENPD_FLAG_RPM_ALWAYS_ON for the always-on governor Ulf Hansson
2022-04-26 14:15 ` [PATCH 2/3] PM: domains: Drop redundant code for genpd " Ulf Hansson
2022-04-26 14:15 ` [PATCH 3/3] PM: domain: Don't check PM_QOS_FLAG_NO_POWER_OFF in genpd Ulf Hansson
2022-05-04 9:35 ` [PATCH 0/3] PM: domains: Some minor improvements for genpd_power_off() Ulf Hansson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).