From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752781AbcAVJU2 (ORCPT ); Fri, 22 Jan 2016 04:20:28 -0500 Received: from foss.arm.com ([217.140.101.70]:54836 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751987AbcAVJUT (ORCPT ); Fri, 22 Jan 2016 04:20:19 -0500 Subject: Re: [PATCH] cpuidle: fix fallback mechanism for suspend to idle in absence of enter_freeze To: "Rafael J. Wysocki" References: <1453375169-14768-1-git-send-email-sudeep.holla@arm.com> <14264394.1r9YeUMTui@vostro.rjw.lan> Cc: Sudeep Holla , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, Lorenzo Pieralisi , Ingo Molnar , Peter Zijlstra From: Sudeep Holla Organization: ARM Message-ID: <56A1F44F.4040305@arm.com> Date: Fri, 22 Jan 2016 09:20:15 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.1 MIME-Version: 1.0 In-Reply-To: <14264394.1r9YeUMTui@vostro.rjw.lan> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 22/01/16 01:15, Rafael J. Wysocki wrote: > On Thursday, January 21, 2016 11:19:29 AM Sudeep Holla wrote: >> Commit 51164251f5c3 ("sched / idle: Drop default_idle_call() fallback >> from call_cpuidle()") made find_deepest_state() return non-negative >> value and check all the states with index > 0. Also a result, >> find_deepest_state() returns 0 even when enter_freeze callbacks are not >> implemented and enter_freeze_proper is called which ends up crashing >> the kernel. >> >> This patch updates the check for index > 0 in cpuidle_enter_freeze and >> cpuidle_idle_call(when idle_should_freeze is true) to restore the >> suspend-to-idle functionality in absence of enter_freeze callback. >> >> Fixes: 51164251f5c3 ("sched / idle: Drop default_idle_call() fallback from call_cpuidle()") >> Cc: "Rafael J. Wysocki" >> Cc: Ingo Molnar >> Cc: Peter Zijlstra >> Signed-off-by: Sudeep Holla >> --- >> drivers/cpuidle/cpuidle.c | 2 +- >> kernel/sched/idle.c | 2 +- >> 2 files changed, 2 insertions(+), 2 deletions(-) >> >> Hi Rafael, > > Hi, > > Sorry for the breakage. > Sorry that I missed to test suspend-to-idle before it got merged. >> I assume you prefer to retain find_deepest_state return non-negative >> values, so I took this approach for fixing the bug. Do you think we >> need to support enter_freeze_proper for index 0 ? > > Zero is a special case on x86, so supporting enter_freeze_proper() for it > is not necessary. > Even on ARM, 0 is used for WFI only, which will not be used for freeze. > If you think we can also make 0 a special case on ARM, the others should > not object to that either. > Makes sense and since it's already reserved for WFI on ARM, it should be fine. If there are no objections, can you pick up this fix ? -- Regards, Sudeep