PM: sleep: Rearrange suspend/resume error handling in the core
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 16 Jul 2025 19:31:23 +0000 (21:31 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 17 Jul 2025 17:59:49 +0000 (19:59 +0200)
commitdbd4bccd96626563d1d811bc121484cd45f964a1
tree7117fab91933d1c7ba9d8f5a6ed618273710ba31
parent7c1f7c22e69fae209eaad58de2627b8b5acb3cb3
PM: sleep: Rearrange suspend/resume error handling in the core

Notice that device_suspend_noirq(), device_suspend_late() and
device_suspend() all set async_error on errors, so they don't really
need to return a value.  Accordingly, make them all void and use
async_error in their callers instead of their return values.

Moreover, since async_error is updated concurrently without locking
during asynchronous suspend and resume processing, use READ_ONCE() and
WRITE_ONCE() for accessing it in those places to ensure that all of the
accesses will be carried out as expected.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: Saravana Kannan <saravanak@google.com>
Link: https://patch.msgid.link/6198088.lOV4Wx5bFT@rjwysocki.net
drivers/base/power/main.c