Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935110AbcKOOU0 (ORCPT ); Tue, 15 Nov 2016 09:20:26 -0500 Received: from foss.arm.com ([217.140.101.70]:55568 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932407AbcKOOUY (ORCPT ); Tue, 15 Nov 2016 09:20:24 -0500 Subject: Re: [PATCH v2] drivers: cpuidle: assign enter_freeze to same as enter callback function To: linux-pm@vger.kernel.org, "Rafael J . Wysocki" References: <1478713410-10727-1-git-send-email-sudeep.holla@arm.com> <1478787873-18180-1-git-send-email-sudeep.holla@arm.com> Cc: Sudeep Holla , linux-kernel@vger.kernel.org, Daniel Lezcano , Lorenzo Pieralisi , Andy Gross , Vincent Guittot From: Sudeep Holla Organization: ARM Message-ID: Date: Tue, 15 Nov 2016 14:20:21 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: <1478787873-18180-1-git-send-email-sudeep.holla@arm.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1569 Lines: 43 Hi Rafael, On 10/11/16 14:24, Sudeep Holla wrote: > enter_freeze() callback is expected atleast to do the same as enter() > but it has to guarantee that interrupts aren't enabled at any point > in its execution, as the tick is frozen. > > CPUs execute ->enter_freeze with the local tick or entire timekeeping > suspended, so it must not re-enable interrupts at any point (even > temporarily) or attempt to change states of clock event devices. > > It will be called when the system goes to suspend-to-idle and will > reduce power usage because CPUs won't be awaken for unnecessary IRQs > (i.e. woken up only on IRQs from "wakeup sources") > > We can reuse the same code for both the enter() and enter_freeze() > callbacks as along as they don't re-enable interrupts. Only "coupled" > cpuidle mechanism enables interrupts and doing that with timekeeping > suspended is generally not safe. > > Since this generic DT based idle driver doesn't support "coupled" > states, it is safe to assume that the interrupts are not re-enabled. > > This patch assign enter_freeze to same as enter callback function which > helps to save power without any intermittent spurious wakeups from > suspend-to-idle. > > Cc: "Rafael J. Wysocki" > Signed-off-by: Sudeep Holla > --- > drivers/cpuidle/dt_idle_states.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > v1->v2: > - Dropped checking and using only states with CPUIDLE_FLAG_TIMER_STOP > enabled. > Can you pick up this patch directly if there are no concerns ? -- Regards, Sudeep