Re: [PATCH 5/6] intel_idle: Add ->enter_freeze callbacks

Peter Zijlstra
2015-02-12T13:26:43Z

On Wed, Feb 11, 2015 at 05:04:17AM +0100, Rafael J. Wysocki wrote:
> @@ -131,28 +133,32 @@ static struct cpuidle_state nehalem_csta
> .flags = MWAIT2flg(0x00),
> .exit_latency = 3,
> .target_residency = 6,
> - .enter = &intel_idle },
> + .enter = &intel_idle,
> + .enter_freeze = intel_idle_freeze, },
> {
> .name = "C1E-NHM",
> .desc = "MWAIT 0x01",
> .flags = MWAIT2flg(0x01),
> .exit_latency = 10,
> .target_residency = 20,
> - .enter = &intel_idle },
> + .enter = &intel_idle,
> + .enter_freeze = intel_idle_freeze, },
> {
> .name = "C3-NHM",
> .desc = "MWAIT 0x10",
> .flags = MWAIT2flg(0x10) | CPUIDLE_FLAG_TLB_FLUSHED,
> .exit_latency = 20,
> .target_residency = 80,
> - .enter = &intel_idle },
> + .enter = &intel_idle,
> + .enter_freeze = intel_idle_freeze, },
> {
> .name = "C6-NHM",
> .desc = "MWAIT 0x20",
> .flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED,
> .exit_latency = 200,
> .target_residency = 800,
> - .enter = &intel_idle },
> + .enter = &intel_idle,
> + .enter_freeze = intel_idle_freeze, },
> {
> .enter = NULL }
> };

Why bother with enter_freeze() for any but the deepest state (C6 in this
case)?

Also, should we ignore things like intel_idle.max_cstate for this
selection?