Received: by 2002:a05:6a10:1a4d:0:0:0:0 with SMTP id nk13csp2496048pxb; Wed, 9 Feb 2022 21:40:29 -0800 (PST) X-Google-Smtp-Source: ABdhPJwxn1crPfg8+ug0WHoC5qLQL6hUeSuiSOJO+tRYJejjT8v0BvRPxoTfGUVhs/LvAg8meYN9 X-Received: by 2002:a17:90b:354:: with SMTP id fh20mr1065287pjb.134.1644471629300; Wed, 09 Feb 2022 21:40:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1644471629; cv=none; d=google.com; s=arc-20160816; b=QzaTVi+hfy8PIkUqpzGWm1E5yN7/0smirlLxUbOPTM+HQmhWiJZiSXjcNlz0RMPLkv Ohd+qyZOyAT7aRLlxDnC5mNz7V63HYvDq5r7B+q0J06uDobpJU/HA4yoiLItcNgeAzYU O0AVT2mGUQq8kWokXAyEmrQmLJjLo+xzn6zUGYWmxuJw+kz0yngGGYDG1D2B1OCgMgCQ +Tjniw3I1qXurXAmt1TisNc6jLgo0ckGRg/xmK/+6of08B6vgeWquehLTuQakySj49eF f70yQ01xj7KN/+Ajiu5PrzfA6wwMX8NaUz1KLZ4acNRgyhPk/nwP9qfkMk8vjdpw+rQm zR3w== 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=aNj5Xh0xA6luKin8itDN2Q7hu6ygPFEEo5apEpE+LlY=; b=Jh4sSNi51SARN+9mU90MBBofwhvNpvKW0obr45pp2Yxx8nrdzinfD3oGN9LOivC7kl dhxS/5HyuVzRgUcHW7RK5E6k/BsK1Toz1I6TKGojnIfi0pFeAhdIFGDCmNp1JZJl3cze 1NOAeLpJXjHCeO8O0NtVC7w0NcBINHPhCYoqlWNFnYyZuvun3KNaYiHkmvMHhomucT8e R310twAgayrKQciD+Jj4cGefi+ZevCJNzpD9pBOkJGJVWulVST/d6nvuKIlRlL0pi3yc PVcsRt8cK9poTlajIdN09XAS+dGw99BeTuHX49KGIr+1ugT586Y5Y7qDxf+6yoSOoipi 7Dgw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=tBMJbISr; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id w4si915759plz.621.2022.02.09.21.40.16; Wed, 09 Feb 2022 21:40:29 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=tBMJbISr; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S233684AbiBJF1W (ORCPT + 99 others); Thu, 10 Feb 2022 00:27:22 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:51064 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231808AbiBJF1Q (ORCPT ); Thu, 10 Feb 2022 00:27:16 -0500 Received: from mail-pf1-x433.google.com (mail-pf1-x433.google.com [IPv6:2607:f8b0:4864:20::433]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3F741DB3 for ; Wed, 9 Feb 2022 21:27:17 -0800 (PST) Received: by mail-pf1-x433.google.com with SMTP id i30so8241146pfk.8 for ; Wed, 09 Feb 2022 21:27:17 -0800 (PST) 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=aNj5Xh0xA6luKin8itDN2Q7hu6ygPFEEo5apEpE+LlY=; b=tBMJbISrQv+1mFot1P5qF4jD2V2MhoFY3dgpLTbOyXJf9HCdVKkRFzDYALxvCLpSU5 RDp6h19SWeKdPqNQGV61d1dGNX5gzx4+Q0HwUvCE4jaXwgRLR9jJNiJduW2o7Lvy5KgD ne19u3f2NT7Q2nTDFtTCXx2qXdFj9DzBxiS/QB5gs+HDmz6jVe/kLNDzK9+2qXkAQ6mg swz5K5IzKu/9777ETt+ZLfYKTo28cZfrKZlc6d3ZgKa1GUAiDf8e8OpSC/QmoBSDzM9O U0JwdkDRq7lsaU+5lX2pdo9U0nJ+eX9TWgCm1/qFvkmjZiXrrHQ271s3eC5Rnrx1dn1r /MOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=aNj5Xh0xA6luKin8itDN2Q7hu6ygPFEEo5apEpE+LlY=; b=OAAY8l6VjoEQ35Tm0ZXKzSUPIwHiWU3Qa8wskth2CdvOUbXk9Z7wW/UJDUzRD/3F1f FSeoiSI5kQhdz64yULZb9SgCb+qauGOLYTZqy+aDiJezF1z5ZCrxzmkRxdEQGJet8m8s JWl3uLGP5hA2aY9Njg9jhReGShUDGxdclslf4KtEJP1EJuJ2ABunIQpf0YDgta0OH+NI txbbxA9DMjsv10Vgl4sx5Oegh9+kPxuVsGXu8chTaK9RCs4EGTQFKaQRalFbdz47oC/7 7WLIEENTVqBuxD2DpBrXY2qnBxrFMdfDnh4E5TFJ/K9c3N4zUC3zhg2eO2jEl6xh4KPN MRcQ== X-Gm-Message-State: AOAM531JsCmm/xfkbPkdnIOg2Y7tiDdUZ3xSRhN+rC72/dSA6cIQMW+2 n0pDSLnns/WLW6yxti2J97dnJw== X-Received: by 2002:a63:4b17:: with SMTP id y23mr4781304pga.489.1644470836741; Wed, 09 Feb 2022 21:27:16 -0800 (PST) Received: from localhost ([136.185.132.167]) by smtp.gmail.com with ESMTPSA id pc4sm691067pjb.3.2022.02.09.21.27.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Feb 2022 21:27:16 -0800 (PST) Date: Thu, 10 Feb 2022 10:57:14 +0530 From: Viresh Kumar To: Pierre Gondois Cc: linux-kernel@vger.kernel.org, Ionela.Voinescu@arm.com, Lukasz.Luba@arm.com, Morten.Rasmussen@arm.com, "Rafael J. Wysocki" , linux-pm@vger.kernel.org Subject: Re: [PATCH v3] cpufreq: CPPC: Fix performance/frequency conversion Message-ID: <20220210052714.em6vt7j627wi5dns@vireshk-i7> References: <20220208080109.697904-1-Pierre.Gondois@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20220208080109.697904-1-Pierre.Gondois@arm.com> User-Agent: NeoMutt/20180716-391-311a52 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 08-02-22, 09:01, Pierre Gondois wrote: > CPUfreq governors request CPU frequencies using information > on current CPU usage. The CPPC driver converts them to > performance requests. Frequency targets are computed as: > target_freq = (util / cpu_capacity) * max_freq > target_freq is then clamped between [policy->min, policy->max]. > > The CPPC driver converts performance values to frequencies > (and vice-versa) using cppc_cpufreq_perf_to_khz() and > cppc_cpufreq_khz_to_perf(). These functions both use two different > factors depending on the range of the input value. For > cppc_cpufreq_khz_to_perf(): > - (NOMINAL_PERF / NOMINAL_FREQ) or > - (LOWEST_PERF / LOWEST_FREQ) > and for cppc_cpufreq_perf_to_khz(): > - (NOMINAL_FREQ / NOMINAL_PERF) or > - ((NOMINAL_PERF - LOWEST_FREQ) / (NOMINAL_PERF - LOWEST_PERF)) > > This means: > 1- the functions are not inverse for some values: > (perf_to_khz(khz_to_perf(x)) != x) > 2- cppc_cpufreq_perf_to_khz(LOWEST_PERF) can sometimes give > a different value from LOWEST_FREQ due to integer approximation > 3- it is implied that performance and frequency are proportional > (NOMINAL_FREQ / NOMINAL_PERF) == (LOWEST_PERF / LOWEST_FREQ) > > This patch changes the conversion functions to an affine function. > This fixes the 3 points above. > > Suggested-by: Lukasz Luba > Suggested-by: Morten Rasmussen > Signed-off-by: Pierre Gondois > --- > drivers/cpufreq/cppc_cpufreq.c | 43 +++++++++++++++++----------------- > 1 file changed, 21 insertions(+), 22 deletions(-) Applied. Thanks. -- viresh