Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp80036pxf; Wed, 24 Mar 2021 21:47:21 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwNcWK1cCgxsCJAxrqxnn4TBa/ZR0i7pm3lTwGLZP2uKanbJ9Bm4KHosjcnD9yDHFSZIokP X-Received: by 2002:aa7:dd98:: with SMTP id g24mr6953926edv.75.1616647641150; Wed, 24 Mar 2021 21:47:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1616647641; cv=none; d=google.com; s=arc-20160816; b=qQKIQpiUmFk0rU4T6cP9ElX1LOGpKBayZM1X9sP8aiwwyDtSQwrQZ1SR9rqhK7oKU2 eSNZCRDq162psELG1ZMTdRRbOAzy+P/9OOX7NzvEpWotuvj6ST0huIZ3F8Ii7MbmEvB3 0WUm0wrZlcjegBO+2eNdTZ1H4T9PWZJ+YzkCy9rnvDjA1uFFV4nVMFugBICKynslydzs dKVOpIOfQAqr0ixMjr9Tucmc5xGTbQIf/pAJ1TumKZtPt+bwC9xwP2hVddrz4SFfnU9p OrurEjjs74RqET1xN6WwzQTPZRrMi6GRrQzkPTSsdcbzkmWvFStDA5I2V7C87yA5fFdH fBfA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :dkim-signature; bh=TZCYtGh2HBZtUVwJorCovGBfNLPiq/K1lzfxSXvx4vk=; b=Niaa6zKpkTvRy+bx5T0lq6lTSRayr4e96Y2PeGwgDE43AjTgPvA3G6WR/bUkzQUIol bhl1CzaTocK4Mwk+kohD2xESx6lCB/25MaPDGv7UJ0NchAp9GXLIzj0tEJY85ihcw4FJ aHtu988mUcUpPjXyvutMY9hEJ77R3PCNUExl3kq4rbnqVNomDLeRuEv0pVDEmGJELDKC vYvfKeiW+69lBAYMRtl2RUpqd8AFHWY6j6RKlvALCfMUsXErse6r7c11T1XGouflMBTh iG8+1sMATaJabsZrchNy29c8gHyjHouWYQH33F2fG2QxZZ51+2TQ1D9eKmUkfuVJRsTj 7HRg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=lzA+PtY6; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id x27si3361697edi.240.2021.03.24.21.46.58; Wed, 24 Mar 2021 21:47:21 -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; dkim=pass header.i=@linaro.org header.s=google header.b=lzA+PtY6; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229590AbhCYEqB (ORCPT + 99 others); Thu, 25 Mar 2021 00:46:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37584 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229622AbhCYEpt (ORCPT ); Thu, 25 Mar 2021 00:45:49 -0400 Received: from mail-pg1-x535.google.com (mail-pg1-x535.google.com [IPv6:2607:f8b0:4864:20::535]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 78525C06175F for ; Wed, 24 Mar 2021 21:45:47 -0700 (PDT) Received: by mail-pg1-x535.google.com with SMTP id u19so565639pgh.10 for ; Wed, 24 Mar 2021 21:45:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=TZCYtGh2HBZtUVwJorCovGBfNLPiq/K1lzfxSXvx4vk=; b=lzA+PtY6tk9j1jqEKwnNE5FodVwxJ9SyNKaRzguSdVMKJtTPibr5m1YDbHDZlUL2cs SR/WoxKC8NySNh/4JjG/Znk7Aie03DSrUstcP7iOw8i94KmW+Kkkk67bBYKa73BBIWDM dhJQ1gtok7zH5JjmRoBSaERFY98YE+gCnB4DC+ye5O5GEU5uqtFdB0itt8LIJerXImJC c5Em5mBoBVSfzGK7Ll96X3XCOd6CcXbLKgLDZbqTQa3HhoKktwXqpQV1AwK4yiIXy/4y Zn52mvV9lo1PLmDD8GiNfOHWxWM2fHzElKXG7B9Pg1OZtaM8IlwZ5ODnC/UjnTApQ/pc IHuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=TZCYtGh2HBZtUVwJorCovGBfNLPiq/K1lzfxSXvx4vk=; b=QeyTkNgCgz2Bpzdr5JJlp2yHRVJCYfHVv0wHjhZPM/PQuk8XfkXq3fMNEPidWO7FAn qKd1asLgZOQdu6sEgVyzs51uBKKWI+PM20llz8lpERRpr9WpCCaXWpL5VRIFko7tK6h2 HEDGNWAZELWBha6dZUt1p0bHJjQGkts9w7qx5bv853XbR1vFlj+09UUrGAXZhI2tnobz 354SHbx8klChhZ7cYhNvp2jBUP1AlvFiXraO+XBmXTv4Y58Mqu2mtndySPcCScYufgOv Ca144W+xIRRfoFTh3l5tsx9yl7zI+LWI6d6SwkqFmzsn9KVHy08kkqHyjhXMX8sFzwXM YQug== X-Gm-Message-State: AOAM532JXpCZVfS9kFPsCEKQL1FwNqHi43X0sfY+OmMKNp6+/28Jen9I skDTtPi1rNpC89nm6h+GMYn9Gw== X-Received: by 2002:a63:ec50:: with SMTP id r16mr5740664pgj.451.1616647546798; Wed, 24 Mar 2021 21:45:46 -0700 (PDT) Received: from localhost ([122.172.6.13]) by smtp.gmail.com with ESMTPSA id f15sm3727168pgg.84.2021.03.24.21.45.46 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 24 Mar 2021 21:45:46 -0700 (PDT) Date: Thu, 25 Mar 2021 10:15:41 +0530 From: Viresh Kumar To: quanyang.wang@windriver.com Cc: "Rafael J . Wysocki" , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] cpufreq: dt: check the error returned by dev_pm_opp_of_cpumask_add_table Message-ID: <20210325044541.rsncitrmkpaes4dm@vireshk-i7> References: <20210325043129.2255918-1-quanyang.wang@windriver.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210325043129.2255918-1-quanyang.wang@windriver.com> User-Agent: NeoMutt/20180716-391-311a52 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 25-03-21, 12:31, quanyang.wang@windriver.com wrote: > From: Quanyang Wang > > The function dev_pm_opp_of_cpumask_add_table may return zero or an > error. When it returns an error, this means that no OPP table is > added for the cpumask because _dev_pm_opp_cpumask_remove_table is > called to free all OPPs associated with the cpu devices in the error > label "remove_table". So continuing to run the next function > dev_pm_opp_get_opp_count is meaningless since it always return the > count value as 0. > > There is another reason why we should check the error returned by > dev_pm_opp_of_cpumask_add_table is that it may return -EPROBE_DEFER > which comes from clk_get(dev, NULL) in _update_opp_table_clk. When > the clk for cpu device isn't ready, dt_cpufreq_probe should be deferred > and wait to be called again. But if we ignore the return error of > dev_pm_opp_of_cpumask_add_table, dt_cpufreq_probe will return -ENODEV > because dev_pm_opp_get_opp_count returns the count value as 0, > the cpufreq-dt driver will fail with the error log as below: > > [ 0.724069] cpu cpu0: OPP table can't be empty > > Signed-off-by: Quanyang Wang > --- > drivers/cpufreq/cpufreq-dt.c | 12 +++++++++--- > 1 file changed, 9 insertions(+), 3 deletions(-) > > diff --git a/drivers/cpufreq/cpufreq-dt.c b/drivers/cpufreq/cpufreq-dt.c > index b1e1bdc63b01..f24359f47b1a 100644 > --- a/drivers/cpufreq/cpufreq-dt.c > +++ b/drivers/cpufreq/cpufreq-dt.c > @@ -255,10 +255,16 @@ static int dt_cpufreq_early_init(struct device *dev, int cpu) > * before updating priv->cpus. Otherwise, we will end up creating > * duplicate OPPs for the CPUs. > * > - * OPPs might be populated at runtime, don't check for error here. As the comment (which you removed) clearly says, the OPPs maybe added at runtime, don't check for error here. When we say runtime, we mean someone may have called dev_pm_opp_add() for the devices. > + * We need check the return value here, if it is non-zero, there is > + * need to go on. > */ > - if (!dev_pm_opp_of_cpumask_add_table(priv->cpus)) > - priv->have_static_opps = true; > + ret = dev_pm_opp_of_cpumask_add_table(priv->cpus); > + if (ret) { > + dev_err(cpu_dev, "Failed to add OPP table for CPUs\n"); > + goto out; > + } > + > + priv->have_static_opps = true; > > /* > * The OPP table must be initialized, statically or dynamically, by this -- viresh