Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp2605223ybk; Mon, 18 May 2020 03:27:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwygk5WcnCKWbDEMPN1gYi9ELavPyV83T2cX9VzdAu2V3n/PvIEMzJgwRfiQ/xV+bXlwAMv X-Received: by 2002:a50:9b58:: with SMTP id a24mr12050553edj.256.1589797642159; Mon, 18 May 2020 03:27:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589797642; cv=none; d=google.com; s=arc-20160816; b=bIHZFfngGiO8nUIN9p1jtVYsykRaLEuV3FFtJUs1x18VoMPxh+YkPtRAI/8ezNnjYl E5Ts3QtkMSjoCy/rw7NX+DiOcgG1DLpOILGg2HoYLnsdYiZJczZsSqFiO6NuIIEYudOZ N2jHNKmvOVe8eIOSvmraErRbf5sv6TyJhJU9xHz32ppaUiTRkqvspuXNnSTV39VQaawX spoQKUZZAnnZy0wq4HkHc0XuHELqPQfeIZyxcfmeGh9rZjB0Z7CKBF0S7Le6SVieeZGb PztBPKIJmDhAdLxteP8iNiK+FQEYgmwB9BcudBQtWP6/YGB0UG/w0DItGNT9k7eT6sqH LHUQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=emR5AbUtw72Lk9cOCyN7fUdrx5wasSwaR6Xh5RvoQQk=; b=P/ok7Zzshl2LD0KPaIgvaI6Nz0Nd/KZsQcmmrDmNfz9HT7PeOBz3GQJZsWZRqOxes1 0tpKZCOUmdLTuOgwpvL2LimVuAV8hAcVpK/hJ56153yRREm2eR25AdYaC7AkidlRowQQ l1RrSLppGdwmOTIymkLJB0j5qwOIN+IExYq5qeB4fUDICfyJj1uVL0Da+EjV3OFowbVQ rZ3kJvjvX3TpdDyPot3s3FQhS2xKMmSl+L9oOLF2QXwq7nG2c5xlSI20XTlp6RQuJGM3 pB20giC1t9YJbXH51PUFY1qsksHzwB57GOeLKODytgqHAAAnypuHoZWGPHRq0jWB2eXx 6y0Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id pk4si6392043ejb.118.2020.05.18.03.26.57; Mon, 18 May 2020 03:27:22 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726543AbgERKWh (ORCPT + 99 others); Mon, 18 May 2020 06:22:37 -0400 Received: from cloudserver094114.home.pl ([79.96.170.134]:52840 "EHLO cloudserver094114.home.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726127AbgERKWg (ORCPT ); Mon, 18 May 2020 06:22:36 -0400 Received: from 89-64-86-21.dynamic.chello.pl (89.64.86.21) (HELO kreacher.localnet) by serwer1319399.home.pl (79.96.170.134) with SMTP (IdeaSmtpServer 0.83.415) id d62f9a6050febd90; Mon, 18 May 2020 12:22:34 +0200 From: "Rafael J. Wysocki" To: Viresh Kumar Cc: "Rafael J. Wysocki" , Serge Semin , Serge Semin , Thomas Bogendoerfer , Ulf Hansson , Matthias Kaehlcke , Alexey Malahov , Paul Burton , Ralf Baechle , Arnd Bergmann , Rob Herring , linux-mips@vger.kernel.org, devicetree@vger.kernel.org, stable@vger.kernel.org, Frederic Weisbecker , Ingo Molnar , Yue Hu , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2 20/20] cpufreq: Return zero on success in boost sw setting Date: Mon, 18 May 2020 12:22:31 +0200 Message-ID: <10461949.HoJUxHt8jL@kreacher> In-Reply-To: <20200518101109.4uggngudy4gfmlvo@vireshk-i7> References: <20200306124807.3596F80307C2@mail.baikalelectronics.ru> <20200518101109.4uggngudy4gfmlvo@vireshk-i7> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Monday, May 18, 2020 12:11:09 PM CEST Viresh Kumar wrote: > On 18-05-20, 11:53, Rafael J. Wysocki wrote: > > That said if you really only want it to return 0 on success, you may as well > > add a ret = 0; statement (with a comment explaining why it is needed) after > > the last break in the loop. > > That can be done as well, but will be a bit less efficient as the loop > will execute once for each policy, and so the statement will run > multiple times. Though it isn't going to add any significant latency > in the code. Right. However, the logic in this entire function looks somewhat less than straightforward to me, because it looks like it should return an error on the first policy without a frequency table (having a frequency table depends on the driver and that is the same for all policies, so it is pointless to iterate any further in that case). Also, the error should not be -EINVAL, because that means "invalid argument" which would be the state value. So I would do something like this: --- drivers/cpufreq/cpufreq.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) Index: linux-pm/drivers/cpufreq/cpufreq.c =================================================================== --- linux-pm.orig/drivers/cpufreq/cpufreq.c +++ linux-pm/drivers/cpufreq/cpufreq.c @@ -2535,26 +2535,27 @@ EXPORT_SYMBOL_GPL(cpufreq_update_limits) static int cpufreq_boost_set_sw(int state) { struct cpufreq_policy *policy; - int ret = -EINVAL; for_each_active_policy(policy) { + int ret; + if (!policy->freq_table) - continue; + return -ENXIO; ret = cpufreq_frequency_table_cpuinfo(policy, policy->freq_table); if (ret) { pr_err("%s: Policy frequency update failed\n", __func__); - break; + return ret; } ret = freq_qos_update_request(policy->max_freq_req, policy->max); if (ret < 0) - break; + return ret; } - return ret; + return 0; } int cpufreq_boost_trigger_state(int state)