From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751779AbcBPBNr (ORCPT ); Mon, 15 Feb 2016 20:13:47 -0500 Received: from mail-pa0-f47.google.com ([209.85.220.47]:34148 "EHLO mail-pa0-f47.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751640AbcBPBNp (ORCPT ); Mon, 15 Feb 2016 20:13:45 -0500 Date: Tue, 16 Feb 2016 06:43:35 +0530 From: Viresh Kumar To: "Rafael J. Wysocki" Cc: Guenter Roeck , "Rafael J. Wysocki" , linux-next@vger.kernel.org, Linux Kernel Mailing List , "linux-arm-kernel@lists.infradead.org" , "linux-pm@vger.kernel.org" , Peter Zijlstra Subject: Re: Crashes in arm qemu emulations due to 'cpufreq: governor: Replace timers with utilization ...' Message-ID: <20160216011335.GI6334@vireshk-i7> References: <20160215170527.GA24453@roeck-us.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 15-02-16, 19:41, Rafael J. Wysocki wrote: > On Mon, Feb 15, 2016 at 6:05 PM, Guenter Roeck wrote: > > [ 1.340000] [] (__cpufreq_driver_target) from [] (dbs_check_cpu+0x1ac/0x1e8) > > [ 1.340000] [] (dbs_check_cpu) from [] (cpufreq_governor_dbs+0x1fc/0x608) > > [ 1.340000] [] (cpufreq_governor_dbs) from [] (__cpufreq_governor+0x1a8/0x204) > > [ 1.340000] [] (__cpufreq_governor) from [] (cpufreq_init_policy+0x60/0x8c) > > [ 1.340000] [] (cpufreq_init_policy) from [] (cpufreq_online+0x2e8/0x708) > > [ 1.340000] [] (cpufreq_online) from [] (subsys_interface_register+0x80/0xc4) > > [ 1.340000] [] (subsys_interface_register) from [] (cpufreq_register_driver+0x144/0x1a0) > > This is the registration of the cpufreq driver (cpufreq-dt in this case). > > It does cpufreq_online()->cpufreq_init_policy()->__cpufreq_governor()->cpufreq_governor_dbs()->dbs_check_cpu(). > > The only way that can happen is when cpufreq_set_policy() finds that > the "old" and the "new" policies use the same governor, so it goes and > calls __cpufreq_governor(policy, CPUFREQ_GOV_LIMITS), but I'm not sure > how this is possible during the initialization ATM. > > Viresh, any ideas? You misread probably. During init, policy->gov is NULL and new_policy->gov is set to the default one, probably ondemand/conservative. And in that case, we do: - INIT - START - LIMITS So above sequence is guaranteed to happen rather. -- viresh From mboxrd@z Thu Jan 1 00:00:00 1970 From: Viresh Kumar Subject: Re: Crashes in arm qemu emulations due to 'cpufreq: governor: Replace timers with utilization ...' Date: Tue, 16 Feb 2016 06:43:35 +0530 Message-ID: <20160216011335.GI6334@vireshk-i7> References: <20160215170527.GA24453@roeck-us.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: Sender: linux-pm-owner@vger.kernel.org To: "Rafael J. Wysocki" Cc: Guenter Roeck , "Rafael J. Wysocki" , linux-next@vger.kernel.org, Linux Kernel Mailing List , "linux-arm-kernel@lists.infradead.org" , "linux-pm@vger.kernel.org" , Peter Zijlstra List-Id: linux-next.vger.kernel.org On 15-02-16, 19:41, Rafael J. Wysocki wrote: > On Mon, Feb 15, 2016 at 6:05 PM, Guenter Roeck wrote: > > [ 1.340000] [] (__cpufreq_driver_target) from [] (dbs_check_cpu+0x1ac/0x1e8) > > [ 1.340000] [] (dbs_check_cpu) from [] (cpufreq_governor_dbs+0x1fc/0x608) > > [ 1.340000] [] (cpufreq_governor_dbs) from [] (__cpufreq_governor+0x1a8/0x204) > > [ 1.340000] [] (__cpufreq_governor) from [] (cpufreq_init_policy+0x60/0x8c) > > [ 1.340000] [] (cpufreq_init_policy) from [] (cpufreq_online+0x2e8/0x708) > > [ 1.340000] [] (cpufreq_online) from [] (subsys_interface_register+0x80/0xc4) > > [ 1.340000] [] (subsys_interface_register) from [] (cpufreq_register_driver+0x144/0x1a0) > > This is the registration of the cpufreq driver (cpufreq-dt in this case). > > It does cpufreq_online()->cpufreq_init_policy()->__cpufreq_governor()->cpufreq_governor_dbs()->dbs_check_cpu(). > > The only way that can happen is when cpufreq_set_policy() finds that > the "old" and the "new" policies use the same governor, so it goes and > calls __cpufreq_governor(policy, CPUFREQ_GOV_LIMITS), but I'm not sure > how this is possible during the initialization ATM. > > Viresh, any ideas? You misread probably. During init, policy->gov is NULL and new_policy->gov is set to the default one, probably ondemand/conservative. And in that case, we do: - INIT - START - LIMITS So above sequence is guaranteed to happen rather. -- viresh From mboxrd@z Thu Jan 1 00:00:00 1970 From: viresh.kumar@linaro.org (Viresh Kumar) Date: Tue, 16 Feb 2016 06:43:35 +0530 Subject: Crashes in arm qemu emulations due to 'cpufreq: governor: Replace timers with utilization ...' In-Reply-To: References: <20160215170527.GA24453@roeck-us.net> Message-ID: <20160216011335.GI6334@vireshk-i7> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On 15-02-16, 19:41, Rafael J. Wysocki wrote: > On Mon, Feb 15, 2016 at 6:05 PM, Guenter Roeck wrote: > > [ 1.340000] [] (__cpufreq_driver_target) from [] (dbs_check_cpu+0x1ac/0x1e8) > > [ 1.340000] [] (dbs_check_cpu) from [] (cpufreq_governor_dbs+0x1fc/0x608) > > [ 1.340000] [] (cpufreq_governor_dbs) from [] (__cpufreq_governor+0x1a8/0x204) > > [ 1.340000] [] (__cpufreq_governor) from [] (cpufreq_init_policy+0x60/0x8c) > > [ 1.340000] [] (cpufreq_init_policy) from [] (cpufreq_online+0x2e8/0x708) > > [ 1.340000] [] (cpufreq_online) from [] (subsys_interface_register+0x80/0xc4) > > [ 1.340000] [] (subsys_interface_register) from [] (cpufreq_register_driver+0x144/0x1a0) > > This is the registration of the cpufreq driver (cpufreq-dt in this case). > > It does cpufreq_online()->cpufreq_init_policy()->__cpufreq_governor()->cpufreq_governor_dbs()->dbs_check_cpu(). > > The only way that can happen is when cpufreq_set_policy() finds that > the "old" and the "new" policies use the same governor, so it goes and > calls __cpufreq_governor(policy, CPUFREQ_GOV_LIMITS), but I'm not sure > how this is possible during the initialization ATM. > > Viresh, any ideas? You misread probably. During init, policy->gov is NULL and new_policy->gov is set to the default one, probably ondemand/conservative. And in that case, we do: - INIT - START - LIMITS So above sequence is guaranteed to happen rather. -- viresh