cpuidle: Do not return from cpuidle_play_dead() on callback failures
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 15 Nov 2024 20:58:31 +0000 (21:58 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 19 Nov 2024 20:46:51 +0000 (21:46 +0100)
commitf65ee094eda6e5897172a1276ffee88cf5489928
tree34ef0e43f6da716ab1d95ba1ab76cb6ae96bee97
parentad52c55e1d3a2e85e05e47b6d7056c662a9c0246
cpuidle: Do not return from cpuidle_play_dead() on callback failures

If the :enter_dead() idle state callback fails for a certain state,
there may be still a shallower state for which it will work.

Because the only caller of cpuidle_play_dead(), native_play_dead(),
falls back to hlt_play_dead() if it returns an error, it should
better try all of the idle states for which :enter_dead() is present
before failing, so change it accordingly.

Also notice that the :enter_dead() state callback is not expected
to return on success (the CPU should be "dead" then), so make
cpuidle_play_dead() ignore its return value.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
Tested-by: Mario Limonciello <mario.limonciello@amd.com> # 6.12-rc7
Reviewed-by: Gautham R. Shenoy <gautham.shenoy@amd.com>
Link: https://patch.msgid.link/3318440.aeNJFYEL58@rjwysocki.net
drivers/cpuidle/cpuidle.c