From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752193AbbEKRkv (ORCPT ); Mon, 11 May 2015 13:40:51 -0400 Received: from mail-wi0-f176.google.com ([209.85.212.176]:35235 "EHLO mail-wi0-f176.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751282AbbEKRkq (ORCPT ); Mon, 11 May 2015 13:40:46 -0400 Message-ID: <5550E999.8080005@linaro.org> Date: Mon, 11 May 2015 19:40:41 +0200 From: Daniel Lezcano User-Agent: Mozilla/5.0 (X11; Linux i686; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-Version: 1.0 To: "Rafael J. Wysocki" , Preeti U Murthy , peterz@infradead.org CC: tglx@linutronix.de, rafael.j.wysocki@intel.com, rlippert@google.com, linux-pm@vger.kernel.org, linus.walleij@linaro.org, linux-kernel@vger.kernel.org, mingo@redhat.com, sudeep.holla@arm.com, linuxppc-dev@lists.ozlabs.org, Kevin Hilman , Lina Iyer , Ulf Hansson Subject: Re: [PATCH 0/3] cpuidle: updates related to tick_broadcast_enter() failures References: <20150508073418.28491.4150.stgit@preeti.in.ibm.com> <10239011.l6QLHlKIVm@vostro.rjw.lan> <3161640.llJtBoKCBr@vostro.rjw.lan> <8965830.CMQzZzsqm0@vostro.rjw.lan> In-Reply-To: <8965830.CMQzZzsqm0@vostro.rjw.lan> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 05/10/2015 01:15 AM, Rafael J. Wysocki wrote: > On Saturday, May 09, 2015 10:33:05 PM Rafael J. Wysocki wrote: >> On Saturday, May 09, 2015 10:11:41 PM Rafael J. Wysocki wrote: >>> On Saturday, May 09, 2015 11:19:16 AM Preeti U Murthy wrote: >>>> Hi Rafael, >>>> >>>> On 05/08/2015 07:48 PM, Rafael J. Wysocki wrote: >>> >>> [cut] >>> >>>>>> >>>>>> + /* Take note of the planned idle state. */ >>>>>> + idle_set_state(smp_processor_id(), target_state); >>>>> >>>>> And I wouldn't do this either. >>>>> >>>>> The behavior here is pretty much as though the driver demoted the state chosen >>>>> by the governor and we don't call idle_set_state() again in those cases. >>>> >>>> Why is this wrong? >>> >>> It is not "wrong", but incomplete, because demotions done by the cpuidle driver >>> should also be taken into account in the same way. >>> >>> But I'm seeing that the recent patch of mine that made cpuidle_enter_state() >>> call default_idle_call() was a mistake, because it might confuse find_idlest_cpu() >>> significantly as to what state the CPU is in. I'll drop that one for now. >> >> OK, done. >> >> So after I've dropped it I think we need to do three things: >> (1) Move the idle_set_state() calls to cpuidle_enter_state(). >> (2) Make cpuidle_enter_state() call default_idle_call() again, but this time >> do that *before* it has called idle_set_state() for target_state. >> (3) Introduce demotion as per my last patch. >> >> Let me cut patches for that. > > Done as per the above and the patches follow in replies to this messge. > > All on top of the current linux-next branch of the linux-pm.git tree. IMO the resulting code is more and more confusing. Except I miss something, the tick_broadcast_enter can fail only if the local timer of the current cpu is used as a broadcast timer (which is the case today for PPC only). The correct fix would be to tie this local timer with the cpu power domain and disable the idle state powering down this domain like it was done for the renesas cpuidle driver. IOW, the cpu power domain is in use (because of its local timer), so we shouldn't shut it down. No ? I am aware this is not easily fixable because the genpd framework is incomplete and has some restrictions but I believe it is worth to have a discussion. Add Kevin and Ulf in Cc. -- Daniel -- Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wg0-f43.google.com (mail-wg0-f43.google.com [74.125.82.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id BE64B1A0CA4 for ; Tue, 12 May 2015 03:40:49 +1000 (AEST) Received: by wgiu9 with SMTP id u9so135882486wgi.3 for ; Mon, 11 May 2015 10:40:45 -0700 (PDT) Message-ID: <5550E999.8080005@linaro.org> Date: Mon, 11 May 2015 19:40:41 +0200 From: Daniel Lezcano MIME-Version: 1.0 To: "Rafael J. Wysocki" , Preeti U Murthy , peterz@infradead.org Subject: Re: [PATCH 0/3] cpuidle: updates related to tick_broadcast_enter() failures References: <20150508073418.28491.4150.stgit@preeti.in.ibm.com> <10239011.l6QLHlKIVm@vostro.rjw.lan> <3161640.llJtBoKCBr@vostro.rjw.lan> <8965830.CMQzZzsqm0@vostro.rjw.lan> In-Reply-To: <8965830.CMQzZzsqm0@vostro.rjw.lan> Content-Type: text/plain; charset=utf-8; format=flowed Cc: rlippert@google.com, Ulf Hansson , Kevin Hilman , linux-pm@vger.kernel.org, linus.walleij@linaro.org, rafael.j.wysocki@intel.com, linux-kernel@vger.kernel.org, mingo@redhat.com, sudeep.holla@arm.com, tglx@linutronix.de, linuxppc-dev@lists.ozlabs.org, Lina Iyer List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , On 05/10/2015 01:15 AM, Rafael J. Wysocki wrote: > On Saturday, May 09, 2015 10:33:05 PM Rafael J. Wysocki wrote: >> On Saturday, May 09, 2015 10:11:41 PM Rafael J. Wysocki wrote: >>> On Saturday, May 09, 2015 11:19:16 AM Preeti U Murthy wrote: >>>> Hi Rafael, >>>> >>>> On 05/08/2015 07:48 PM, Rafael J. Wysocki wrote: >>> >>> [cut] >>> >>>>>> >>>>>> + /* Take note of the planned idle state. */ >>>>>> + idle_set_state(smp_processor_id(), target_state); >>>>> >>>>> And I wouldn't do this either. >>>>> >>>>> The behavior here is pretty much as though the driver demoted the state chosen >>>>> by the governor and we don't call idle_set_state() again in those cases. >>>> >>>> Why is this wrong? >>> >>> It is not "wrong", but incomplete, because demotions done by the cpuidle driver >>> should also be taken into account in the same way. >>> >>> But I'm seeing that the recent patch of mine that made cpuidle_enter_state() >>> call default_idle_call() was a mistake, because it might confuse find_idlest_cpu() >>> significantly as to what state the CPU is in. I'll drop that one for now. >> >> OK, done. >> >> So after I've dropped it I think we need to do three things: >> (1) Move the idle_set_state() calls to cpuidle_enter_state(). >> (2) Make cpuidle_enter_state() call default_idle_call() again, but this time >> do that *before* it has called idle_set_state() for target_state. >> (3) Introduce demotion as per my last patch. >> >> Let me cut patches for that. > > Done as per the above and the patches follow in replies to this messge. > > All on top of the current linux-next branch of the linux-pm.git tree. IMO the resulting code is more and more confusing. Except I miss something, the tick_broadcast_enter can fail only if the local timer of the current cpu is used as a broadcast timer (which is the case today for PPC only). The correct fix would be to tie this local timer with the cpu power domain and disable the idle state powering down this domain like it was done for the renesas cpuidle driver. IOW, the cpu power domain is in use (because of its local timer), so we shouldn't shut it down. No ? I am aware this is not easily fixable because the genpd framework is incomplete and has some restrictions but I believe it is worth to have a discussion. Add Kevin and Ulf in Cc. -- Daniel -- Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog