linux/drivers/cpuidle
Aboorva Devarajan 5ddcc03a07 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 78eaa10f02
  ("cpuidle: powernv/pseries: Auto-promotion of snooze to deeper idle state")

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

- Fix wakeup stats in governor for polling states
  commit 5f26bdceb9
  ("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
2022-12-06 23:18:19 +11:00
..
governors cpuidle: haltpoll: Add trace points for guest_halt_poll_ns grow/shrink 2022-06-14 16:01:35 +02:00
coupled.c cpuidle: coupled: Drop duplicate word from a comment 2022-08-31 20:54:01 +02:00
cpuidle-arm.c thermal: cpuidle: Register cpuidle cooling device 2020-05-19 12:58:07 +02:00
cpuidle-at91.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_56.RULE (part 2) 2022-06-10 14:51:35 +02:00
cpuidle-big_little.c cpuidle: big.LITTLE: enable driver only on Peach-Pit/Pi Chromebooks 2020-10-26 10:15:24 +01:00
cpuidle-calxeda.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 201 2019-05-30 11:29:52 -07:00
cpuidle-clps711x.c cpuidle: clps711x: convert to devm_platform_ioremap_resource() 2019-12-20 10:04:27 +01:00
cpuidle-cps.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
cpuidle-exynos.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
cpuidle-haltpoll.c cpuidle: haltpoll: Call cpuidle_poll_state_init() later 2022-03-09 19:59:45 +01:00
cpuidle-kirkwood.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_56.RULE (part 2) 2022-06-10 14:51:35 +02:00
cpuidle-mvebu-v7.c
cpuidle-powernv.c powerpc/cpuidle: Set CPUIDLE_FLAG_POLLING for snooze state 2022-12-06 23:18:19 +11:00
cpuidle-psci-domain.c firmware/psci: Print a warning if PSCI doesn't accept PC mode 2022-09-28 22:37:55 +02:00
cpuidle-psci.c context_tracking: Take IRQ eqs entrypoints over RCU 2022-07-05 13:32:59 -07:00
cpuidle-psci.h cpuidle: Factor-out power domain related code from PSCI domain driver 2022-03-10 09:29:44 -08:00
cpuidle-pseries.c powerpc/cpuidle: Set CPUIDLE_FLAG_POLLING for snooze state 2022-12-06 23:18:19 +11:00
cpuidle-qcom-spm.c firmware: qcom: scm: Drop cpumask parameter from set_boot_addr() 2022-02-03 21:54:48 -06:00
cpuidle-riscv-sbi.c cpuidle: riscv-sbi: Fix CPU_PM_CPU_IDLE_ENTER_xyz() macro usage 2022-09-23 03:56:00 -07:00
cpuidle-tegra.c cpuidle: tegra: Check whether PMC is ready 2021-10-05 19:11:40 +02:00
cpuidle-ux500.c mfd/cpuidle: ux500: Rename driver symbol 2021-08-16 13:42:34 +01:00
cpuidle-zynq.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 201 2019-05-30 11:29:52 -07:00
cpuidle.c More power management updates for 5.20-rc1 2022-08-08 14:29:00 -07:00
cpuidle.h cpuidle: allow governor switch on cpuidle_register_driver() 2019-09-11 17:36:30 +02:00
driver.c cpuidle: Use s64 as exit_latency_ns and target_residency_ns data type 2021-04-07 19:26:44 +02:00
dt_idle_genpd.c cpuidle: Factor-out power domain related code from PSCI domain driver 2022-03-10 09:29:44 -08:00
dt_idle_genpd.h cpuidle: Factor-out power domain related code from PSCI domain driver 2022-03-10 09:29:44 -08:00
dt_idle_states.c cpuidle: dt: Support hierarchical CPU idle states 2020-01-02 16:50:08 +01:00
dt_idle_states.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
governor.c cpuidle: Remove redundant check in cpuidle_switch_governor() 2022-09-03 20:14:51 +02:00
Kconfig cpuidle: Add RISC-V SBI CPU idle driver 2022-03-10 09:29:51 -08:00
Kconfig.arm cpuidle: cpuidle-arm: remove arm64 support 2022-06-23 14:19:33 +01:00
Kconfig.mips treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
Kconfig.powerpc treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
Kconfig.riscv cpuidle: Add RISC-V SBI CPU idle driver 2022-03-10 09:29:51 -08:00
Makefile cpuidle: Add RISC-V SBI CPU idle driver 2022-03-10 09:29:51 -08:00
poll_state.c cpuidle: Drop disabled field from struct cpuidle_state 2019-11-29 11:48:39 +01:00
sysfs.c cpuidle: use default_groups in kobj_type 2022-01-05 18:31:17 +01:00