Re: [PATCH 1/3] cpuidle: Add enable_cpuidle() interface
From: lihuisong (C)
Date: Sat Mar 28 2026 - 00:06:38 EST
On 3/27/2026 7:33 PM, Rafael J. Wysocki wrote:
On Fri, Mar 27, 2026 at 7:23 AM lihuisong (C) <lihuisong@xxxxxxxxxx> wrote:
The "off" variable has been intended for disabling cpuidle via kernel
On 3/26/2026 9:39 PM, Rafael J. Wysocki wrote:
On Thu, Mar 26, 2026 at 1:17 PM lihuisong (C) <lihuisong@xxxxxxxxxx> wrote:Regarding the discussion in the link[1], if driver fail to get power
Hi Rafael,Sorry, can you please remind me what problem you wanted to address
On 1/30/2026 9:59 AM, lihuisong (C) wrote:
Hi Rafael,Could you pleasetake a look atmy reply?
On 1/15/2026 8:18 PM, lihuisong (C) wrote:
On 1/15/2026 3:18 AM, Rafael J. Wysocki wrote:I verified that disable_cpuidle() effectively prevents all CPUs from
On Tue, Nov 25, 2025 at 8:29 AM Huisong Li <lihuisong@xxxxxxxxxx>I think it would be work.
wrote:
The global switch of cpuidle can be turned back on in some case.No, this is not going to work. The "off" switch only affects
So add enable_cpuidle().
initialization AFAICS.
The cpuidle_not_available() also see the "off" on do_idle().
And cpuidle_idle_call() check this function first and then select
idle state.
Cpuidle doesn't select and enter idle state if this fuction return true.
entering any idle states and the cpuidle function is correctly
restored after calling enable_cpuidle().
What do you think?
If not ok, I will drop this from my upstream list.
with the help of this?
info in power notify,
the old idle states may no longer be reliable. Therefore, patch 2/3
disables ACPI idle
via the new interface introduced in patch 1/3.
However, our discussion on whether this new interface can disable ACPI
idle has not yet reached a conclusion.
Could you please revisit this thread? It's quite brief, and I'd
appreciate your further input.
[1]
https://lore.kernel.org/all/20251103084244.2654432-1-lihuisong@xxxxxxxxxx
command line (note that the corresponding module param is read-only).
disable_cpuidle() is only used by Xen now and only at the setup/init stage.
I don't think that using it on idle state list change notifications is
a good idea.
Understand.
Something like cpuidle_pause_and_lock() would be a better match I
think. acpi_processor_hotplug() uses it already for a similar
purpose.
Interfaces like cpuidle_pause_and_lock() and cpuidle_pause() disable cpuidle by clearing the global "initialized" flag,
which requires "enabled_devices" to be non-zero.
IIUC, cpuidle_disable_device() isn't called when a CPU goes offline; instead, it's handled in acpi_processor_hotplug() during online.
This means "enabled_devices" stays above zero even if some CPUs are offline.
In this case, the driver can still successfully set initialized to zero when get power information failed in power notify.
So we can disable APCI idle on all CPUs.
But we need to ensure that other threads wouldn't resume the "initialized" flag by interfaces like cpuidle_resume().
I have found a scenario for that where acpi_processor_hotplug enables the cpuidle_device and restores the "initialized" value.
In this case, special processing may be required.
For example, the cpuidle state of the cpuidle driver also need reinitialize or the disable cpuilde state is still maintained.
/Huisong