PM / Domains: Implement subdomain counters as atomic fields
authorRafael J. Wysocki <rjw@sisk.pl>
Mon, 8 Aug 2011 21:43:04 +0000 (23:43 +0200)
committerRafael J. Wysocki <rjw@sisk.pl>
Thu, 25 Aug 2011 13:33:43 +0000 (15:33 +0200)
commitc4bb3160c8823d3a1e581d7e05fb8b343097e7c8
tree550ba22e33176d4e5116a50cb8789ababe6dd09d
parentff35336d3efd1ec4015b56f690191ed69730cbb0
PM / Domains: Implement subdomain counters as atomic fields

Currently, pm_genpd_poweron() and pm_genpd_poweroff() need to take
the parent PM domain's lock in order to modify the parent's counter
of active subdomains in a nonracy way.  This causes the locking to be
considerably complex and in fact is not necessary, because the
subdomain counters may be implemented as atomic fields and they
won't have to be modified under a lock.

Replace the unsigned in sd_count field in struct generic_pm_domain
by an atomic_t one and modify the code in drivers/base/power/domain.c
to take this change into account.

This patch doesn't change the locking yet, that is going to be done
in a separate subsequent patch.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
drivers/base/power/domain.c
include/linux/pm_domain.h