From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Zijlstra Subject: Re: [PATCH 5/6] intel_idle: Add ->enter_freeze callbacks Date: Thu, 12 Feb 2015 14:26:43 +0100 Message-ID: <20150212132643.GY23123@twins.programming.kicks-ass.net> References: <8292243.ibkmfVtXac@vostro.rjw.lan> <2407992.WHaFxrNaoa@vostro.rjw.lan> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: <2407992.WHaFxrNaoa@vostro.rjw.lan> Sender: linux-pm-owner@vger.kernel.org To: "Rafael J. Wysocki" Cc: Thomas Gleixner , Alan Cox , "Li, Aubrey" , LKML , Linux PM list , ACPI Devel Maling List , Kristen Carlson Accardi , John Stultz , Len Brown List-Id: linux-acpi@vger.kernel.org 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?