From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753308AbbE1B6l (ORCPT ); Wed, 27 May 2015 21:58:41 -0400 Received: from e36.co.us.ibm.com ([32.97.110.154]:35395 "EHLO e36.co.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751712AbbE1B6c (ORCPT ); Wed, 27 May 2015 21:58:32 -0400 Message-ID: <55667640.6090605@linux.vnet.ibm.com> Date: Thu, 28 May 2015 07:28:24 +0530 From: Preeti U Murthy User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 MIME-Version: 1.0 To: "Rafael J. Wysocki" , Linux PM list , Daniel Lezcano CC: Linux Kernel Mailing List , Peter Zijlstra , Len Brown Subject: Re: [PATCH v2] cpuidle: Do not use CPUIDLE_DRIVER_STATE_START in cpuidle.c References: <5494512.JcUbNX5Mxs@vostro.rjw.lan> <5147438.NJg8nCxJVn@vostro.rjw.lan> In-Reply-To: <5147438.NJg8nCxJVn@vostro.rjw.lan> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 15052801-0021-0000-0000-00000AE7A116 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 05/28/2015 07:39 AM, Rafael J. Wysocki wrote: > From: Rafael J. Wysocki > > The CPUIDLE_DRIVER_STATE_START symbol is defined as 1 only if > CONFIG_ARCH_HAS_CPU_RELAX is set, otherwise it is defined as 0. > However, if CONFIG_ARCH_HAS_CPU_RELAX is set, the first (index 0) > entry in the cpuidle driver's table of states is overwritten with > the default "poll" entry by the core. The "state" defined by the > "poll" entry doesn't provide ->enter_dead and ->enter_freeze > callbacks and its exit_latency is 0. > > For this reason, it is not necessary to use CPUIDLE_DRIVER_STATE_START > in cpuidle_play_dead() (->enter_dead is NULL, so the "poll state" > will be skipped by the loop). > > It also is arguably unuseful to return states with exit_latency > equal to 0 from find_deepest_state(), so the function can be modified > to start the loop from index 0 and the "poll state" will be skipped by > it as a result of the check against latency_req. > > Signed-off-by: Rafael J. Wysocki > --- > drivers/cpuidle/cpuidle.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > Index: linux-pm/drivers/cpuidle/cpuidle.c > =================================================================== > --- linux-pm.orig/drivers/cpuidle/cpuidle.c > +++ linux-pm/drivers/cpuidle/cpuidle.c > @@ -65,7 +65,7 @@ int cpuidle_play_dead(void) > return -ENODEV; > > /* Find lowest-power state that supports long-term idle */ > - for (i = drv->state_count - 1; i >= CPUIDLE_DRIVER_STATE_START; i--) > + for (i = drv->state_count - 1; i >= 0; i--) > if (drv->states[i].enter_dead) > return drv->states[i].enter_dead(dev, i); > > @@ -79,9 +79,9 @@ static int find_deepest_state(struct cpu > bool freeze) > { > unsigned int latency_req = 0; > - int i, ret = freeze ? -1 : CPUIDLE_DRIVER_STATE_START - 1; > + int i, ret = -ENXIO; > > - for (i = CPUIDLE_DRIVER_STATE_START; i < drv->state_count; i++) { > + for (i = 0; i < drv->state_count; i++) { > struct cpuidle_state *s = &drv->states[i]; > struct cpuidle_state_usage *su = &dev->states_usage[i]; > Reviewed-by: Preeti U Murthy > > -- > To unsubscribe from this list: send the line "unsubscribe linux-pm" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html >