UPSTREAM: cpuidle: teo: Update idle duration estimate when choosing shallower state
The TEO governor takes CPU utilization into account by refining idle state selection when the utilization is above a certain threshold. This is done by choosing an idle state shallower than the previously selected one. However, when doing this, the idle duration estimate needs to be adjusted so as to prevent the scheduler tick from being stopped when the candidate idle state is shallow, which may lead to excessive energy usage if the CPU is not woken up quickly enough going forward. Moreover, if the scheduler tick has been stopped already and the new idle duration estimate is too small, the replacement candidate state cannot be used. Modify the relevant code to take the above observations into account. Bug: 254441685 Fixes: 9ce0f7c4 ("cpuidle: teo: Introduce util-awareness") Link: https://lore.kernel.org/linux-pm/CAJZ5v0jJxHj65r2HXBTd3wfbZtsg=_StzwO1kA5STDnaPe_dWA@mail.gmail.com Signed-off-by:Rafael J. Wysocki <rafael.j.wysocki@intel.com> Reviewed-and-tested-by:
Kajetan Puchalski <kajetan.puchalski@arm.com> (cherry picked from commit 3f0b0966) Signed-off-by:
Lee Jones <joneslee@google.com> Change-Id: Ic5784c6330d94310f5d3938d141b51c81be2f9d9
Loading