Commit d020283dc694c9ec31b410f522252f7a8397e67d
Committed by
Rafael J. Wysocki
1 parent
379e0be812
Exists in
smarc-l5.0.0_1.0.0-ga
and in
5 other branches
PM / QoS: CPU C-state breakage with PM Qos change
Looks like change "PM QoS: Move and rename the implementation files" merged during the 3.2 development cycle made PM QoS depend on CONFIG_PM which depends on (PM_SLEEP || PM_RUNTIME). That breaks CPU C-states with kernels not having these CONFIGs, causing CPUs to spend time in Polling loop idle instead of going into deep C-states, consuming way way more power. This is with either acpi idle or intel idle enabled. Either CONFIG_PM should be enabled with any pm_qos users or the !CONFIG_PM pm_qos_request() should return sane defaults not to break the existing users. Here's is the patch for the latter option. [rjw: Modified the changelog slightly.] Signed-off-by: Venkatesh Pallipadi <venki@google.com> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> Cc: stable@vger.kernel.org
Showing 1 changed file with 13 additions and 1 deletions Side-by-side Diff
include/linux/pm_qos.h
... | ... | @@ -110,7 +110,19 @@ |
110 | 110 | { return; } |
111 | 111 | |
112 | 112 | static inline int pm_qos_request(int pm_qos_class) |
113 | - { return 0; } | |
113 | +{ | |
114 | + switch (pm_qos_class) { | |
115 | + case PM_QOS_CPU_DMA_LATENCY: | |
116 | + return PM_QOS_CPU_DMA_LAT_DEFAULT_VALUE; | |
117 | + case PM_QOS_NETWORK_LATENCY: | |
118 | + return PM_QOS_NETWORK_LAT_DEFAULT_VALUE; | |
119 | + case PM_QOS_NETWORK_THROUGHPUT: | |
120 | + return PM_QOS_NETWORK_THROUGHPUT_DEFAULT_VALUE; | |
121 | + default: | |
122 | + return PM_QOS_DEFAULT_VALUE; | |
123 | + } | |
124 | +} | |
125 | + | |
114 | 126 | static inline int pm_qos_add_notifier(int pm_qos_class, |
115 | 127 | struct notifier_block *notifier) |
116 | 128 | { return 0; } |