On 31/01/14 14:04, Daniel Lezcano wrote: > On 01/31/2014 10:39 AM, Preeti U Murthy wrote: >> Hi Peter, >> >> On 01/31/2014 02:32 PM, Peter Zijlstra wrote: >>> On Fri, Jan 31, 2014 at 02:15:47PM +0530, Preeti Murthy wrote: >>>>> >>>>> If the driver does its own random mapping that will break the governor >>>>> logic. So yes, the states are ordered, the higher the index is, the more >>>>> you >>>>> save power and the higher the exit latency is. >>>> >>>> The above point holds true for only the ladder governor which sees the idle >>>> states indexed in the increasing order of target_residency/exit_latency. >>>> >>>> However this is not true as far as I can see in the menu governor. It >>>> acknowledges the dynamic ordering of idle states as can be seen in the >>>> menu_select() function in the menu governor, where the idle state for the >>>> CPU gets chosen. You will notice that, even if it is found that the >>>> predicted >>>> idle time of the CPU is smaller than the target residency of an idle state, >>>> the governor continues to search for suitable idle states in the higher >>>> indexed >>>> states although it should have halted if the idle states' were ordered >>>> according >>>> to their target residency.. The same holds for exit_latency. >>>> >>>> Hence I think this patch would make sense only with additional information >>>> like exit_latency or target_residency is present for the scheduler. The >>>> idle >>>> state index alone will not be sufficient. >>> >>> Alternatively, can we enforce sanity on the cpuidle infrastructure to >>> make the index naturally ordered? If not, please explain why :-) >> >> The commit id 71abbbf856a0e70 says that there are SOCs which could have >> their target_residency and exit_latency values change at runtime. This >> commit thus removed the ordering of the idle states according to their >> target_residency/exit_latency. Adding Len and Arjan to the CC. > > This commit is outdated, AFAICT.
Yes, this is also my impression. It's removed by commit b25edc42bfb9602f0503474b2c94701d5536ce60 Author: Deepthi Dharwar <deep...@linux.vnet.ibm.com> Date: Fri Oct 28 16:20:24 2011 +0530 cpuidle: Remove CPUIDLE_FLAG_IGNORE and dev->prepare() So far, I'm under the impression that target_residency/exit_latency is static data and can be propagated towards the scheduler via topology information. -- Dietmar > > Indeed, there are dynamic idle states. Some idle states are added or > removed when a laptop is going to battery or plugged in. > > In ACPI, the power event leads the acpi cpuidle driver to disable the > cpuidle framework, get the idle states which are ordered, and re-enable > the cpuidle framework which in turn kicks all the cpus. So the index in > the struct rq should be always ok. > > > > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/