Received: by 2002:a5d:9c59:0:0:0:0:0 with SMTP id 25csp2188821iof; Tue, 7 Jun 2022 22:37:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzITLq8emoJFh9l/fjF2WDE2vfVRoKXdid9syLepgBsFzAvnxdzn7+b9zUDMYHkcjsJGOqI X-Received: by 2002:a05:6a00:814:b0:51c:1878:4943 with SMTP id m20-20020a056a00081400b0051c18784943mr14491097pfk.62.1654666646503; Tue, 07 Jun 2022 22:37:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1654666646; cv=none; d=google.com; s=arc-20160816; b=K4JFRmtGINr3Hb9pPtC9Tjp12ZqZ5Pd3DJ2ITQb3e6yFp6pOdRpIvUwZ/X1KMupvdl zEF4LENMbgDvrZLurWdbPAI35qPEhcLUF51PzKVujlNtoPrAzuZztH3bmKVcCYv0c8et 1LOGEb7feyhPxiRGibj2roCLBrz8oyWkLRUAgMv45664CPHvkK6YJ10XV1YSsyk7BbIU 5eSKV6nj9qA8D//FnRaTd89F45OVs6pB2a9GVmX90djPiO0Fe8TMjnUuMd7bbYdcNESg GRmTBQmItf7vF7naeY2iWkuAgXMhdVrlKXeHQ56i82mFUGPD/Cr+EJX7FeNiQu626BsC XxUQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=MCZi9lKw/BTaTZT3PPRVjrbLrCGUAiHnkxFKDMAvVVE=; b=W8HYPRz2CmPzmtz1snqbDUGgY/X/yX4S2fsQFXIhDH2KqZwf/uCPw5eJuuBE6xBCFt PCdP1UVY+K6un1Y77o4hs+Uh7aaCKMGHM2k9S7SRxFth+gwunRl4LvCuLkyfDKTuNwR+ RR650Qg3QywUrkK9vBhmbqGLKMmDT+vTpaqzsaGVqBBE8ZJ8hWSvpTYxYpmm/sruzWed uh3rUCiZ/yZIihNfezZDfO8mkJr0c37vYW2c5t085eIS8/Mfu//CqnEZJ2P/ZGa4yInW JTLzeBElV5sVw+BJt9DhrwSAQqVGjodKiX5rDZG0e5cW1a3z/B2Yi3QNXaSNcGmJps42 +DHA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=wtGeOixa; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id y73-20020a638a4c000000b003fa4f55c763si26097221pgd.776.2022.06.07.22.37.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Jun 2022 22:37:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=wtGeOixa; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from out1.vger.email (out1.vger.email [IPv6:2620:137:e000::1:20]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 9BE032DF319; Tue, 7 Jun 2022 22:03:27 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1385591AbiFGWbj (ORCPT + 99 others); Tue, 7 Jun 2022 18:31:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49044 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1380698AbiFGVQl (ORCPT ); Tue, 7 Jun 2022 17:16:41 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3047A14AF70; Tue, 7 Jun 2022 11:56:24 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id C036D61311; Tue, 7 Jun 2022 18:56:23 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id CACF2C385A2; Tue, 7 Jun 2022 18:56:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1654628183; bh=r3DLkc6jEcY3i0/3z56pH0qiShiXBiSeWD+DV9othKc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=wtGeOixaWLcyLofPkvsBSJC3xddUg+Tqu9olhOX1qpKZWCsh/lGfycSdggZb4f7MO +eMmp73dXpBo9SseJ3HcDKCKhUqh34jCr3gL7HwyadO8Y0LbcfJj0R1qGI0oYUqOyF NxGYVRzAI0xEfav57eAme1q03k8/RsBs+y5ZsDvY= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Rex-BC Chen , Viresh Kumar , Jia-wei Chang , Matthias Brugger , "Rafael J. Wysocki" , Sasha Levin Subject: [PATCH 5.18 234/879] cpufreq: Avoid unnecessary frequency updates due to mismatch Date: Tue, 7 Jun 2022 18:55:52 +0200 Message-Id: <20220607165009.646354366@linuxfoundation.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220607165002.659942637@linuxfoundation.org> References: <20220607165002.659942637@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-3.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable 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 From: Viresh Kumar [ Upstream commit f55ae08c89873e140c7cac2a7fa161d31a0d60cf ] For some platforms, the frequency returned by hardware may be slightly different from what is provided in the frequency table. For example, hardware may return 499 MHz instead of 500 MHz. In such cases it is better to avoid getting into unnecessary frequency updates, as we may end up switching policy->cur between the two and sending unnecessary pre/post update notifications, etc. This patch has chosen allows the hardware frequency and table frequency to deviate by 1 MHz for now, we may want to increase it a bit later on if someone still complains. Reported-by: Rex-BC Chen Signed-off-by: Viresh Kumar Tested-by: Jia-wei Chang Reviewed-by: Matthias Brugger Signed-off-by: Rafael J. Wysocki Signed-off-by: Sasha Levin --- drivers/cpufreq/cpufreq.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index 80f535cc8a75..fbaa8e6c7d23 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c @@ -28,6 +28,7 @@ #include #include #include +#include #include static LIST_HEAD(cpufreq_policy_list); @@ -1707,6 +1708,16 @@ static unsigned int cpufreq_verify_current_freq(struct cpufreq_policy *policy, b return new_freq; if (policy->cur != new_freq) { + /* + * For some platforms, the frequency returned by hardware may be + * slightly different from what is provided in the frequency + * table, for example hardware may return 499 MHz instead of 500 + * MHz. In such cases it is better to avoid getting into + * unnecessary frequency updates. + */ + if (abs(policy->cur - new_freq) < HZ_PER_MHZ) + return policy->cur; + cpufreq_out_of_sync(policy, new_freq); if (update) schedule_work(&policy->update); -- 2.35.1