<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-rng/drivers/cpuidle, branch master</title>
<subtitle>Development tree for the kernel CSPRNG</subtitle>
<id>https://git.zx2c4.com/linux-rng/atom/drivers/cpuidle?h=master</id>
<link rel='self' href='https://git.zx2c4.com/linux-rng/atom/drivers/cpuidle?h=master'/>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-rng/'/>
<updated>2025-11-28T15:50:45Z</updated>
<entry>
<title>Merge branches 'pm-qos' and 'pm-tools'</title>
<updated>2025-11-28T15:50:45Z</updated>
<author>
<name>Rafael J. Wysocki</name>
<email>rafael.j.wysocki@intel.com</email>
</author>
<published>2025-11-28T15:50:45Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-rng/commit/?id=7cede21e9f04f16a456d3c3c8a9a8899c8d84757'/>
<id>urn:sha1:7cede21e9f04f16a456d3c3c8a9a8899c8d84757</id>
<content type='text'>
Merge PM QoS updates and a cpupower utility update for 6.19-rc1:

 - Introduce and document a QoS limit on CPU exit latency during wakeup
   from suspend-to-idle (Ulf Hansson)

 - Add support for building libcpupower statically (Zuo An)

* pm-qos:
  Documentation: power/cpuidle: Document the CPU system wakeup latency QoS
  cpuidle: Respect the CPU system wakeup QoS limit for cpuidle
  sched: idle: Respect the CPU system wakeup QoS limit for s2idle
  pmdomain: Respect the CPU system wakeup QoS limit for cpuidle
  pmdomain: Respect the CPU system wakeup QoS limit for s2idle
  PM: QoS: Introduce a CPU system wakeup QoS limit

* pm-tools:
  tools/power/cpupower: Support building libcpupower statically
</content>
</entry>
<entry>
<title>Merge branches 'pm-cpuidle' and 'pm-powercap'</title>
<updated>2025-11-28T15:29:41Z</updated>
<author>
<name>Rafael J. Wysocki</name>
<email>rafael.j.wysocki@intel.com</email>
</author>
<published>2025-11-28T15:29:41Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-rng/commit/?id=bf7ae1773ea79417d430a2d216abdb9857db8ec1'/>
<id>urn:sha1:bf7ae1773ea79417d430a2d216abdb9857db8ec1</id>
<content type='text'>
Merge cpuidle and power capping updates for 6.19-rc1:

 - Use residency threshold in polling state override decisions in the
   menu cpuidle governor (Aboorva Devarajan)

 - Add sanity check for exit latency and target residency in the cpufreq
   core (Rafael Wysocki)

 - Use this_cpu_ptr() where possible in the teo governor (Christian
   Loehle)

 - Rework the handling of tick wakeups in the teo cpuidle governor to
   increase the likelihood of stopping the scheduler tick in the cases
   when tick wakeups can be counted as non-timer ones (Rafael Wysocki)

 - Fix a reverse condition in the teo cpuidle governor and drop a
   misguided target residency check from it (Rafael Wysocki)

 - Clean up muliple minor defects in the teo cpuidle governor (Rafael
   Wysocki)

 - Update header inclusion to make it follow the Include What You Use
   principle (Andy Shevchenko)

 - Enable MSR-based RAPL PMU support in the intel_rapl power capping
   driver and arrange for using it on the Panther Lake and Wildcat Lake
   processors (Kuppuswamy Sathyanarayanan)

 - Add support for Nova Lake and Wildcat Lake processors to the
   intel_rapl power capping driver (Kaushlendra Kumar, Srinivas
   Pandruvada)

* pm-cpuidle:
  cpuidle: Warn instead of bailing out if target residency check fails
  cpuidle: Update header inclusion
  cpuidle: governors: teo: Add missing space to the description
  cpuidle: governors: teo: Simplify intercepts-based state lookup
  cpuidle: governors: teo: Fix tick_intercepts handling in teo_update()
  cpuidle: governors: teo: Rework the handling of tick wakeups
  cpuidle: governors: teo: Decay metrics below DECAY_SHIFT threshold
  cpuidle: governors: teo: Use s64 consistently in teo_update()
  cpuidle: governors: teo: Drop redundant function parameter
  cpuidle: governors: teo: Drop misguided target residency check
  cpuidle: teo: Use this_cpu_ptr() where possible
  cpuidle: Add sanity check for exit latency and target residency
  cpuidle: menu: Use residency threshold in polling state override decisions

* pm-powercap:
  powercap: intel_rapl: Enable MSR-based RAPL PMU support
  powercap: intel_rapl: Prepare read_raw() interface for atomic-context callers
  powercap: intel_rapl: Add support for Nova Lake processors
  powercap: intel_rapl: Add support for Wildcat Lake platform
</content>
</entry>
<entry>
<title>cpuidle: Warn instead of bailing out if target residency check fails</title>
<updated>2025-11-25T18:06:38Z</updated>
<author>
<name>Rafael J. Wysocki</name>
<email>rafael.j.wysocki@intel.com</email>
</author>
<published>2025-11-25T16:23:12Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-rng/commit/?id=4bf944f3fcb6c192af1ea73e3d183b6364458b25'/>
<id>urn:sha1:4bf944f3fcb6c192af1ea73e3d183b6364458b25</id>
<content type='text'>
It turns out that the change in commit 76934e495cdc ("cpuidle: Add
sanity check for exit latency and target residency") goes too far
because there are systems in the field on which the check introduced
by that commit does not pass.

For this reason, change __cpuidle_driver_init() return type back to void
and make it print a warning when the check mentioned above does not
pass.

Fixes: 76934e495cdc ("cpuidle: Add sanity check for exit latency and target residency")
Reported-by: Val Packett &lt;val@packett.cool&gt;
Closes: https://lore.kernel.org/linux-pm/20251121010756.6687-1-val@packett.cool/
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
Reviewed-by: Christian Loehle &lt;christian.loehle@arm.com&gt;
Link: https://patch.msgid.link/2808566.mvXUDI8C0e@rafael.j.wysocki
</content>
</entry>
<entry>
<title>cpuidle: Update header inclusion</title>
<updated>2025-11-25T18:04:29Z</updated>
<author>
<name>Andy Shevchenko</name>
<email>andriy.shevchenko@linux.intel.com</email>
</author>
<published>2025-11-24T20:57:52Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-rng/commit/?id=6d96ceff9aeb7e7a1713faaccf472f363cc6d48f'/>
<id>urn:sha1:6d96ceff9aeb7e7a1713faaccf472f363cc6d48f</id>
<content type='text'>
While cleaning up some headers, I got a build error on this file:

drivers/cpuidle/poll_state.c:52:2: error: call to undeclared library function 'snprintf' with type 'int (char *restrict, unsigned long, const char *restrict, ...)'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]

Update header inclusions to follow IWYU (Include What You Use)
principle.

Signed-off-by: Andy Shevchenko &lt;andriy.shevchenko@linux.intel.com&gt;
Link: https://patch.msgid.link/20251124205752.1328701-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
<entry>
<title>cpuidle: Respect the CPU system wakeup QoS limit for cpuidle</title>
<updated>2025-11-25T18:01:29Z</updated>
<author>
<name>Ulf Hansson</name>
<email>ulf.hansson@linaro.org</email>
</author>
<published>2025-11-25T11:26:46Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-rng/commit/?id=2b8d594742398cdbf40012c0b3c8b71ca160e22d'/>
<id>urn:sha1:2b8d594742398cdbf40012c0b3c8b71ca160e22d</id>
<content type='text'>
The CPU system wakeup QoS limit must be respected for the regular cpuidle
state selection. Therefore, let's extend the common governor helper
cpuidle_governor_latency_req(), to take the constraint into account.

Reviewed-by: Dhruva Gole &lt;d-gole@ti.com&gt;
Reviewed-by: Kevin Hilman (TI) &lt;khilman@baylibre.com&gt;
Tested-by: Kevin Hilman (TI) &lt;khilman@baylibre.com&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
Link: https://patch.msgid.link/20251125112650.329269-6-ulf.hansson@linaro.org
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
<entry>
<title>sched: idle: Respect the CPU system wakeup QoS limit for s2idle</title>
<updated>2025-11-25T18:01:29Z</updated>
<author>
<name>Ulf Hansson</name>
<email>ulf.hansson@linaro.org</email>
</author>
<published>2025-11-25T11:26:45Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-rng/commit/?id=99b42445f4a4aaff75eca24dfc9e6e376292dd48'/>
<id>urn:sha1:99b42445f4a4aaff75eca24dfc9e6e376292dd48</id>
<content type='text'>
A CPU system wakeup QoS limit may have been requested by user space. To
avoid breaking this constraint when entering a low power state during
s2idle, let's start to take into account the QoS limit.

Acked-by: Peter Zijlstra (Intel) &lt;peterz@infradead.org&gt;
Reviewed-by: Dhruva Gole &lt;d-gole@ti.com&gt;
Reviewed-by: Kevin Hilman (TI) &lt;khilman@baylibre.com&gt;
Tested-by: Kevin Hilman (TI) &lt;khilman@baylibre.com&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
Link: https://patch.msgid.link/20251125112650.329269-5-ulf.hansson@linaro.org
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
<entry>
<title>cpuidle: governors: teo: Add missing space to the description</title>
<updated>2025-11-24T19:43:32Z</updated>
<author>
<name>Rafael J. Wysocki</name>
<email>rafael.j.wysocki@intel.com</email>
</author>
<published>2025-11-21T20:11:16Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-rng/commit/?id=15bfdadd617ec5363802f7cb6a0385b6569f374e'/>
<id>urn:sha1:15bfdadd617ec5363802f7cb6a0385b6569f374e</id>
<content type='text'>
There is a missing space in the governor description comment, so add it.

No functional impact.

Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
Link: https://patch.msgid.link/5059034.31r3eYUQgx@rafael.j.wysocki
</content>
</entry>
<entry>
<title>cpuidle: governors: teo: Simplify intercepts-based state lookup</title>
<updated>2025-11-20T15:32:48Z</updated>
<author>
<name>Rafael J. Wysocki</name>
<email>rafael.j.wysocki@intel.com</email>
</author>
<published>2025-11-16T12:35:14Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-rng/commit/?id=d834e68a0e8b4a3c673eb96d4d53e48f3c19a81e'/>
<id>urn:sha1:d834e68a0e8b4a3c673eb96d4d53e48f3c19a81e</id>
<content type='text'>
Simplify the loop looking up a candidate idle state in the case when an
intercept is likely to occur by adding a search for the state index limit
if the tick is stopped before it.

First, call tick_nohz_tick_stopped() just once and if it returns true,
look for the shallowest state index below the current candidate one with
target residency at least equal to the tick period length.

Next, simply look for a state that is not shallower than the one found
in the previous step and satisfies the intercepts majority condition (if
there are no such states, the shallowest state that is not shallower
than the one found in the previous step becomes the new candidate).

Since teo_state_ok() has no callers any more after the above changes,
drop it.

No intentional functional impact.

Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
Reviewed-by: Christian Loehle &lt;christian.loehle@arm.com&gt;
[ rjw: Changelog clarification and code comment edit ]
Link: https://patch.msgid.link/2418792.ElGaqSPkdT@rafael.j.wysocki
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
<entry>
<title>cpuidle: governors: teo: Fix tick_intercepts handling in teo_update()</title>
<updated>2025-11-20T13:54:08Z</updated>
<author>
<name>Rafael J. Wysocki</name>
<email>rafael.j.wysocki@intel.com</email>
</author>
<published>2025-11-16T12:34:29Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-rng/commit/?id=50db438231dcf7ceac187a6a9c68a1d757b8d883'/>
<id>urn:sha1:50db438231dcf7ceac187a6a9c68a1d757b8d883</id>
<content type='text'>
The condition deciding whether or not to increase cpu_data-&gt;tick_intercepts
in teo_update() is reverse, so fix it.

Fixes: d619b5cc6780 ("cpuidle: teo: Simplify counting events used for tick management")
Cc: 6.14+ &lt;stable@vger.kernel.org&gt; # 6.14+: 0796ddf4a7f0: cpuidle: teo: Use this_cpu_ptr() where possible
Cc: 6.14+ &lt;stable@vger.kernel.org&gt; # 6.14+: 8f3f01082d7a: cpuidle: governors: teo: Use s64 consistently in teo_update()
Cc: 6.14+ &lt;stable@vger.kernel.org&gt; # 6.14+: b54df61c7428: cpuidle: governors: teo: Decay metrics below DECAY_SHIFT threshold
Cc: 6.14+ &lt;stable@vger.kernel.org&gt; 6.14+: 083654ded547: cpuidle: governors: teo: Rework the handling of tick wakeups
Cc: 6.14+ &lt;stable@vger.kernel.org&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
Reviewed-by: Christian Loehle &lt;christian.loehle@arm.com&gt;
Link: https://patch.msgid.link/5085160.31r3eYUQgx@rafael.j.wysocki
</content>
</entry>
<entry>
<title>cpuidle: governors: teo: Rework the handling of tick wakeups</title>
<updated>2025-11-20T13:49:57Z</updated>
<author>
<name>Rafael J. Wysocki</name>
<email>rafael.j.wysocki@intel.com</email>
</author>
<published>2025-11-13T16:56:27Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-rng/commit/?id=083654ded547238c70e0d4f57115cd1c91245b6e'/>
<id>urn:sha1:083654ded547238c70e0d4f57115cd1c91245b6e</id>
<content type='text'>
If the wakeup pattern is clearly dominated by tick wakeups, count those
wakeups as hits on the deepest available idle state to increase the
likelihood of stopping the tick, especially on systems where there are
only 2 usable idle states and the tick can only be stopped when the
deeper state is selected.

This change is expected to reduce power on some systems where state 0 is
selected relatively often even though they are almost idle.  Without it,
the governor may end up selecting the shallowest idle state all the time
even if the system is almost completely idle due all tick wakeups being
counted as hits on that state and preventing the tick from being stopped
at all.

Fixes: 4b20b07ce72f ("cpuidle: teo: Don't count non-existent intercepts")
Reported-by: Reka Norman &lt;rekanorman@chromium.org&gt;
Closes: https://lore.kernel.org/linux-pm/CAEmPcwsNMNnNXuxgvHTQ93Mx-q3Oz9U57THQsU_qdcCx1m4w5g@mail.gmail.com/
Tested-by: Reka Norman &lt;rekanorman@chromium.org&gt;
Tested-by: Christian Loehle &lt;christian.loehle@arm.com&gt;
Cc: 6.11+ &lt;stable@vger.kernel.org&gt; # 6.11+: 92ce5c07b7a1: cpuidle: teo: Reorder candidate state index checks
Cc: 6.11+ &lt;stable@vger.kernel.org&gt; # 6.11+: ea185406d1ed: cpuidle: teo: Combine candidate state index checks against 0
Cc: 6.11+ &lt;stable@vger.kernel.org&gt; # 6.11+: b9a6af26bd83: cpuidle: teo: Drop local variable prev_intercept_idx
Cc: 6.11+ &lt;stable@vger.kernel.org&gt; # 6.11+: e24f8a55de50: cpuidle: teo: Clarify two code comments
Cc: 6.11+ &lt;stable@vger.kernel.org&gt; # 6.11+: d619b5cc6780: cpuidle: teo: Simplify counting events used for tick management
Cc: 6.11+ &lt;stable@vger.kernel.org&gt; # 6.11+: 13ed5c4a6d9c: cpuidle: teo: Skip getting the sleep length if wakeups are very frequent
Cc: 6.11+ &lt;stable@vger.kernel.org&gt; # 6.11+: ddcfa7964677: cpuidle: teo: Simplify handling of total events count
Cc: 6.11+ &lt;stable@vger.kernel.org&gt; # 6.11+: 65e18e654475: cpuidle: teo: Replace time_span_ns with a flag
Cc: 6.11+ &lt;stable@vger.kernel.org&gt; # 6.11+: 0796ddf4a7f0: cpuidle: teo: Use this_cpu_ptr() where possible
Cc: 6.11+ &lt;stable@vger.kernel.org&gt; # 6.11+: 8f3f01082d7a: cpuidle: governors: teo: Use s64 consistently in teo_update()
Cc: 6.11+ &lt;stable@vger.kernel.org&gt; # 6.11+: b54df61c7428: cpuidle: governors: teo: Decay metrics below DECAY_SHIFT threshold
Cc: 6.11+ &lt;stable@vger.kernel.org&gt; # 6.11+
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
[ rjw: Rebase on commit 0796ddf4a7f0, changelog update ]
Link: https://patch.msgid.link/6228387.lOV4Wx5bFT@rafael.j.wysocki
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
</feed>
