From cd787b345e82f7ea9c29d22c50cca29fadc53d76 Mon Sep 17 00:00:00 2001 From: Nishanth Menon Date: Tue, 26 Mar 2013 18:01:49 +0000 Subject: PM / OPP: add documentation to RCU head in struct opp commit dde8437 (PM / OPP: RCU reclaim) introduced rcu_head for struct opp. This aids freeing using kfree_rcu. However, we missed adding documentation for the same. This generates kernel doc warning: Warning(drivers/base/power/opp.c:70): No description found for parameter 'head' Add documentation as appropriate. [rjw: Changelog] Signed-off-by: Nishanth Menon Signed-off-by: Rafael J. Wysocki --- drivers/base/power/opp.c | 1 + 1 file changed, 1 insertion(+) (limited to 'drivers/base') diff --git a/drivers/base/power/opp.c b/drivers/base/power/opp.c index 32ee0fc7ea5..f0077cb8e24 100644 --- a/drivers/base/power/opp.c +++ b/drivers/base/power/opp.c @@ -55,6 +55,7 @@ * @rate: Frequency in hertz * @u_volt: Nominal voltage in microvolts corresponding to this OPP * @dev_opp: points back to the device_opp struct this opp belongs to + * @head: RCU callback head used for deferred freeing * * This structure stores the OPP information for a given device. */ -- cgit v1.2.3 From af93933974d7b4dd1f9003e50bae239760fc7978 Mon Sep 17 00:00:00 2001 From: Ulf Hansson Date: Fri, 12 Apr 2013 09:41:06 +0000 Subject: PM / Runtime: Asyncronous idle|suspend devices at system resume Use the asyncronous runtime PM API when returning the runtime reference for the device after the system resume is completed. By using the asyncronous runtime PM API we don't have to wait for each an every device to become idle|suspended. Instead we can move on and handle the next device in queue. Signed-off-by: Ulf Hansson Signed-off-by: Rafael J. Wysocki --- drivers/base/power/domain.c | 2 +- drivers/base/power/generic_ops.c | 2 +- drivers/base/power/main.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'drivers/base') diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c index 9a6b05a3560..bba575841f5 100644 --- a/drivers/base/power/domain.c +++ b/drivers/base/power/domain.c @@ -1327,7 +1327,7 @@ static void pm_genpd_complete(struct device *dev) pm_generic_complete(dev); pm_runtime_set_active(dev); pm_runtime_enable(dev); - pm_runtime_idle(dev); + pm_request_idle(dev); } } diff --git a/drivers/base/power/generic_ops.c b/drivers/base/power/generic_ops.c index d03d290f31c..bfd898b8988 100644 --- a/drivers/base/power/generic_ops.c +++ b/drivers/base/power/generic_ops.c @@ -324,6 +324,6 @@ void pm_generic_complete(struct device *dev) * Let runtime PM try to suspend devices that haven't been in use before * going into the system-wide sleep state we're resuming from. */ - pm_runtime_idle(dev); + pm_request_idle(dev); } #endif /* CONFIG_PM_SLEEP */ diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c index 15beb500a4e..5a9b6569dd7 100644 --- a/drivers/base/power/main.c +++ b/drivers/base/power/main.c @@ -756,7 +756,7 @@ static void device_complete(struct device *dev, pm_message_t state) device_unlock(dev); - pm_runtime_put_sync(dev); + pm_runtime_put(dev); } /** -- cgit v1.2.3 From db28dfac99983e70b5a93b6c81c43d2c74fde20d Mon Sep 17 00:00:00 2001 From: Ulf Hansson Date: Fri, 12 Apr 2013 09:41:30 +0000 Subject: PM / Runtime: Asyncronous idle|suspend parent devices at removal For irq safe devices return the runtime reference for the parent by using the asyncronous runtime PM API. Thus we don't have to wait for it to become idle|suspended. Instead we can move on and handle the next device in queue. Signed-off-by: Ulf Hansson Signed-off-by: Rafael J. Wysocki --- drivers/base/power/runtime.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'drivers/base') diff --git a/drivers/base/power/runtime.c b/drivers/base/power/runtime.c index 1244930e3d7..ef13ad08afb 100644 --- a/drivers/base/power/runtime.c +++ b/drivers/base/power/runtime.c @@ -1400,5 +1400,5 @@ void pm_runtime_remove(struct device *dev) if (dev->power.runtime_status == RPM_ACTIVE) pm_runtime_set_suspended(dev); if (dev->power.irq_safe && dev->parent) - pm_runtime_put_sync(dev->parent); + pm_runtime_put(dev->parent); } -- cgit v1.2.3 From 841670351e8e5acbe9f7367f7df661a5d0cfef79 Mon Sep 17 00:00:00 2001 From: Ulf Hansson Date: Fri, 12 Apr 2013 09:41:44 +0000 Subject: PM / Runtime: Improve prepare handling at system suspend for genpd When genpd prepares for a system suspend it will fetch a runtime reference for the device. When returning it we now use the asyncronous runtime PM API. Thus we don't have to wait for the device to become idle|suspended before we move on and handle the next device in queue. Signed-off-by: Ulf Hansson Signed-off-by: Rafael J. Wysocki --- drivers/base/power/domain.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'drivers/base') diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c index bba575841f5..7072404c8b6 100644 --- a/drivers/base/power/domain.c +++ b/drivers/base/power/domain.c @@ -920,7 +920,7 @@ static int pm_genpd_prepare(struct device *dev) pm_wakeup_event(dev, 0); if (pm_wakeup_pending()) { - pm_runtime_put_sync(dev); + pm_runtime_put(dev); return -EBUSY; } @@ -961,7 +961,7 @@ static int pm_genpd_prepare(struct device *dev) pm_runtime_enable(dev); } - pm_runtime_put_sync(dev); + pm_runtime_put(dev); return ret; } -- cgit v1.2.3