Commit 697a7f3727b53c7d4c927948bbe1f6afc4fabfde
1 parent
c6d22b3726
Exists in
master
and in
6 other branches
PM / Domains: Do not restore all devices on power off error
Since every device in a PM domain has its own need_restore flag, which is set by __pm_genpd_save_device(), there's no need to walk the domain's device list and restore all devices on an error from one of the drivers' .runtime_suspend() callbacks. Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Showing 1 changed file with 4 additions and 9 deletions Side-by-side Diff
drivers/base/power/domain.c
... | ... | @@ -269,8 +269,10 @@ |
269 | 269 | |
270 | 270 | list_for_each_entry_reverse(dle, &genpd->dev_list, node) { |
271 | 271 | ret = __pm_genpd_save_device(dle, genpd); |
272 | - if (ret) | |
273 | - goto err_dev; | |
272 | + if (ret) { | |
273 | + genpd_set_active(genpd); | |
274 | + goto out; | |
275 | + } | |
274 | 276 | |
275 | 277 | if (genpd_abort_poweroff(genpd)) |
276 | 278 | goto out; |
... | ... | @@ -311,13 +313,6 @@ |
311 | 313 | genpd->poweroff_task = NULL; |
312 | 314 | wake_up_all(&genpd->status_wait_queue); |
313 | 315 | return ret; |
314 | - | |
315 | - err_dev: | |
316 | - list_for_each_entry_continue(dle, &genpd->dev_list, node) | |
317 | - __pm_genpd_restore_device(dle, genpd); | |
318 | - | |
319 | - genpd_set_active(genpd); | |
320 | - goto out; | |
321 | 316 | } |
322 | 317 | |
323 | 318 | /** |