From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755838AbbBLN0x (ORCPT ); Thu, 12 Feb 2015 08:26:53 -0500 Received: from bombadil.infradead.org ([198.137.202.9]:44840 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755792AbbBLN0v (ORCPT ); Thu, 12 Feb 2015 08:26:51 -0500 Date: Thu, 12 Feb 2015 14:26:43 +0100 From: Peter Zijlstra 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 Subject: Re: [PATCH 5/6] intel_idle: Add ->enter_freeze callbacks 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 Content-Disposition: inline In-Reply-To: <2407992.WHaFxrNaoa@vostro.rjw.lan> User-Agent: Mutt/1.5.21 (2012-12-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@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?