| From d3b904f78564a800dcc6f0ed4c1dc5dcfe937ea2 Mon Sep 17 00:00:00 2001 |
| From: "Rafael J. Wysocki" <rjw@sisk.pl> |
| Date: Tue, 6 Dec 2011 22:19:54 +0100 |
| Subject: PM / Domains: Make it possible to assign names to generic PM domains |
| |
| Add a name member pointer to struct generic_pm_domain and use it in |
| diagnostic messages regarding the domain power-off and power-on |
| latencies. Update the ARM shmobile SH7372 code to assign names to |
| the PM domains used by it. |
| |
| Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> |
| Acked-by: Magnus Damm <damm@opensource.se> |
| (cherry picked from commit e84b2c202771bbd538866207efcb1f7dbab8045b) |
| |
| Conflicts: |
| |
| arch/arm/mach-shmobile/pm-sh7372.c |
| |
| Signed-off-by: Simon Horman <horms@verge.net.au> |
| --- |
| drivers/base/power/domain.c | 14 ++++++++++++-- |
| include/linux/pm_domain.h | 1 + |
| 2 files changed, 13 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c |
| index 5a8d67d..ad6ba2e 100644 |
| --- a/drivers/base/power/domain.c |
| +++ b/drivers/base/power/domain.c |
| @@ -209,8 +209,13 @@ int __pm_genpd_poweron(struct generic_pm_domain *genpd) |
| goto err; |
| |
| elapsed_ns = ktime_to_ns(ktime_sub(ktime_get(), time_start)); |
| - if (elapsed_ns > genpd->power_on_latency_ns) |
| + if (elapsed_ns > genpd->power_on_latency_ns) { |
| genpd->power_on_latency_ns = elapsed_ns; |
| + if (genpd->name) |
| + pr_warning("%s: Power-on latency exceeded, " |
| + "new value %lld ns\n", genpd->name, |
| + elapsed_ns); |
| + } |
| } |
| |
| genpd_set_active(genpd); |
| @@ -428,8 +433,13 @@ static int pm_genpd_poweroff(struct generic_pm_domain *genpd) |
| } |
| |
| elapsed_ns = ktime_to_ns(ktime_sub(ktime_get(), time_start)); |
| - if (elapsed_ns > genpd->power_off_latency_ns) |
| + if (elapsed_ns > genpd->power_off_latency_ns) { |
| genpd->power_off_latency_ns = elapsed_ns; |
| + if (genpd->name) |
| + pr_warning("%s: Power-off latency exceeded, " |
| + "new value %lld ns\n", genpd->name, |
| + elapsed_ns); |
| + } |
| } |
| |
| genpd->status = GPD_STATE_POWER_OFF; |
| diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h |
| index fbb81bc..fb809b9 100644 |
| --- a/include/linux/pm_domain.h |
| +++ b/include/linux/pm_domain.h |
| @@ -50,6 +50,7 @@ struct generic_pm_domain { |
| struct mutex lock; |
| struct dev_power_governor *gov; |
| struct work_struct power_off_work; |
| + char *name; |
| unsigned int in_progress; /* Number of devices being suspended now */ |
| atomic_t sd_count; /* Number of subdomains with power "on" */ |
| enum gpd_status status; /* Current state of the domain */ |
| -- |
| 1.7.10.1.362.g242cab3 |
| |