Received: by 2002:a25:c205:0:0:0:0:0 with SMTP id s5csp6901234ybf; Fri, 6 Mar 2020 06:43:11 -0800 (PST) X-Google-Smtp-Source: ADFU+vvDQQuLLzXk7dF5i7Sw9YKHVOXxrhPwf3DTTJg1ATQirJ3zhw8s+dRp2GIGEn+Wvs44shrA X-Received: by 2002:aca:ec16:: with SMTP id k22mr2735435oih.50.1583505791711; Fri, 06 Mar 2020 06:43:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1583505791; cv=none; d=google.com; s=arc-20160816; b=qh+Ua5+GLfNqeVF+38gAtkswS9oDmM0f6Z71+rGTha5ASZH5QjEeNR8U5y9nS6sCE9 0Ba/OoTFN6TiEBGE/QxR9Hae1NMK4yJE+5OjciRfp7UlWW5f7Zsj7+cvNyY1og8Nkvac FQ+WHmaMcrtX6oO5FApYjDv1ASo079DG1X3S6bhUY1fa40mWXUWorSO1AGZ7s0H3qvhM mwzpTgO3LYZ+uFxstFemd/SFMZB/N+WepX1VDgr51cP4glWxJoPBKbG0pzHdrUfIVgCN qXjMyUr4+0Nxp0q0LNP+jGLmbBncznmUAoUMsELaJP4IPAg7l04xEhPF3RObbsGLJ2Q3 XpfA== 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 :robot-unsubscribe:robot-id:message-id:mime-version:references :in-reply-to:cc:subject:to:reply-to:from:date; bh=Y15MsZNRhFDpXLJwI2/SzodvtYN/DQlYBA1Z+nmGnt0=; b=wuiebY4FKI1wiTMgxRbKySN9lnLqoTbv0TZcukIo7wORR9kxMo0aQFnzK66/3X3dWT ePtXgUU1bTov2KQa5fFRCaGUoEYAgAJoM9ENpkpZRYX5pAqyO0IOOIPQofAeHn6zjAiu cQ4kNx5PzHooZ0CIR1gxFTP6bTTiqnPvwqdtMB+hlNPTs1XJseqGHts1GexpnXkxlft0 JSZKFBMJvgRlawOW/5+6sP3BDXQjtbFJ4QF/NdP+p0jVAgzkbu8zNt98kAroNxp2bUnB zlIf6RjSTzzzpBHVwXvGvaoYuL9WpqaD9oeSu0ZUMYzx+v9fEzx3GMzSMqxv6EZD3NDq pq2w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e63si1515064oib.19.2020.03.06.06.42.59; Fri, 06 Mar 2020 06:43:11 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727336AbgCFOm3 (ORCPT + 99 others); Fri, 6 Mar 2020 09:42:29 -0500 Received: from Galois.linutronix.de ([193.142.43.55]:53844 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727222AbgCFOmW (ORCPT ); Fri, 6 Mar 2020 09:42:22 -0500 Received: from [5.158.153.53] (helo=tip-bot2.lab.linutronix.de) by Galois.linutronix.de with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1jAEB6-0006Kw-Sz; Fri, 06 Mar 2020 15:42:17 +0100 Received: from [127.0.1.1] (localhost [IPv6:::1]) by tip-bot2.lab.linutronix.de (Postfix) with ESMTP id D075A1C21DD; Fri, 6 Mar 2020 15:42:08 +0100 (CET) Date: Fri, 06 Mar 2020 14:42:08 -0000 From: "tip-bot2 for Thara Gopinath" Reply-to: linux-kernel@vger.kernel.org To: linux-tip-commits@vger.kernel.org Subject: [tip: sched/core] thermal/cpu-cooling: Update thermal pressure in case of a maximum frequency capping Cc: Thara Gopinath , "Peter Zijlstra (Intel)" , Ingo Molnar , x86 , LKML In-Reply-To: <20200222005213.3873-9-thara.gopinath@linaro.org> References: <20200222005213.3873-9-thara.gopinath@linaro.org> MIME-Version: 1.0 Message-ID: <158350572857.28353.7469807947344049697.tip-bot2@tip-bot2> X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Linutronix-Spam-Score: -1.0 X-Linutronix-Spam-Level: - X-Linutronix-Spam-Status: No , -1.0 points, 5.0 required, ALL_TRUSTED=-1,SHORTCIRCUIT=-0.0001 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The following commit has been merged into the sched/core branch of tip: Commit-ID: f12e4f66ab6a31f17da386b682e5fec87ae46537 Gitweb: https://git.kernel.org/tip/f12e4f66ab6a31f17da386b682e5fec87ae46537 Author: Thara Gopinath AuthorDate: Fri, 21 Feb 2020 19:52:12 -05:00 Committer: Ingo Molnar CommitterDate: Fri, 06 Mar 2020 12:57:21 +01:00 thermal/cpu-cooling: Update thermal pressure in case of a maximum frequency capping Thermal governors can request for a CPU's maximum supported frequency to be capped in case of an overheat event. This in turn means that the maximum capacity available for tasks to run on the particular CPU is reduced. Delta between the original maximum capacity and capped maximum capacity is known as thermal pressure. Enable cpufreq cooling device to update the thermal pressure in event of a capped maximum frequency. Signed-off-by: Thara Gopinath Signed-off-by: Peter Zijlstra (Intel) Signed-off-by: Ingo Molnar Link: https://lkml.kernel.org/r/20200222005213.3873-9-thara.gopinath@linaro.org --- drivers/thermal/cpufreq_cooling.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/drivers/thermal/cpufreq_cooling.c b/drivers/thermal/cpufreq_cooling.c index fe83d7a..4ae8c85 100644 --- a/drivers/thermal/cpufreq_cooling.c +++ b/drivers/thermal/cpufreq_cooling.c @@ -431,6 +431,10 @@ static int cpufreq_set_cur_state(struct thermal_cooling_device *cdev, unsigned long state) { struct cpufreq_cooling_device *cpufreq_cdev = cdev->devdata; + struct cpumask *cpus; + unsigned int frequency; + unsigned long max_capacity, capacity; + int ret; /* Request state should be less than max_level */ if (WARN_ON(state > cpufreq_cdev->max_level)) @@ -442,8 +446,19 @@ static int cpufreq_set_cur_state(struct thermal_cooling_device *cdev, cpufreq_cdev->cpufreq_state = state; - return freq_qos_update_request(&cpufreq_cdev->qos_req, - get_state_freq(cpufreq_cdev, state)); + frequency = get_state_freq(cpufreq_cdev, state); + + ret = freq_qos_update_request(&cpufreq_cdev->qos_req, frequency); + + if (ret > 0) { + cpus = cpufreq_cdev->policy->cpus; + max_capacity = arch_scale_cpu_capacity(cpumask_first(cpus)); + capacity = frequency * max_capacity; + capacity /= cpufreq_cdev->policy->cpuinfo.max_freq; + arch_set_thermal_pressure(cpus, max_capacity - capacity); + } + + return ret; } /* Bind cpufreq callbacks to thermal cooling device ops */