powerpc/cpuidle: Set CPUIDLE_FLAG_POLLING for snooze state
authorAboorva Devarajan <aboorvad@linux.vnet.ibm.com>
Mon, 14 Nov 2022 14:56:11 +0000 (20:26 +0530)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 6 Dec 2022 12:18:19 +0000 (23:18 +1100)
commit5ddcc03a07ae1ab5062f89a946d9495f1fd8eaa4
treeae29ca36496384c3459a8f1b31485faa1b1904e9
parent3ae7c96dd51025550c8001c6f833337f11d00807
powerpc/cpuidle: Set CPUIDLE_FLAG_POLLING for snooze state

During the comparative study of cpuidle governors, it is noticed that the
menu governor does not select CEDE state in some scenarios even though when
the sleep duration of the CPU exceeds the target residency of the CEDE idle
state this is because the CPU exits the snooze "polling" state when snooze
time limit is reached in the snooze_loop(), which is not a real wake up
and it just means that the polling state selection was not adequate.

cpuidle governors rely on CPUIDLE_FLAG_POLLING flag to be set for the
polling states to handle the condition mentioned above.

Hence, set the CPUIDLE_FLAG_POLLING flag for snooze state (polling state)
in powerpc arch to make the cpuidle governor work as expected.

Reference Commits:

- Timeout enabled for snooze state:
  commit 78eaa10f027c
  ("cpuidle: powernv/pseries: Auto-promotion of snooze to deeper idle state")

- commit dc2251bf98c6
  ("cpuidle: Eliminate the CPUIDLE_DRIVER_STATE_START symbol")

- Fix wakeup stats in governor for polling states
  commit 5f26bdceb9c0
  ("cpuidle: menu: Fix wakeup statistics updates for polling state")

Signed-off-by: Aboorva Devarajan <aboorvad@linux.vnet.ibm.com>
Tested-by: Vishal Chourasia <vishalc@linux.vnet.ibm.com>
Reviewed-by: Vaidyanathan Srinivasan <svaidy@linux.ibm.com>
Reviewed-by: Vishal Chourasia <vishalc@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20221114145611.37669-1-aboorvad@linux.vnet.ibm.com
drivers/cpuidle/cpuidle-powernv.c
drivers/cpuidle/cpuidle-pseries.c