From: "tip-bot2 for Thara Gopinath" <tip-bot2@linutronix.de>
To: linux-tip-commits@vger.kernel.org
Cc: Thara Gopinath <thara.gopinath@linaro.org>,
"Peter Zijlstra (Intel)" <peterz@infradead.org>,
Ingo Molnar <mingo@kernel.org>, x86 <x86@kernel.org>,
LKML <linux-kernel@vger.kernel.org>
Subject: [tip: sched/core] drivers/base/arch_topology: Add infrastructure to store and update instantaneous thermal pressure
Date: Fri, 06 Mar 2020 14:42:10 -0000 [thread overview]
Message-ID: <158350573056.28353.8289359977043719899.tip-bot2@tip-bot2> (raw)
In-Reply-To: <20200222005213.3873-4-thara.gopinath@linaro.org>
The following commit has been merged into the sched/core branch of tip:
Commit-ID: ad58cc5cc50ca8423cf630778594bd38252a0a58
Gitweb: https://git.kernel.org/tip/ad58cc5cc50ca8423cf630778594bd38252a0a58
Author: Thara Gopinath <thara.gopinath@linaro.org>
AuthorDate: Fri, 21 Feb 2020 19:52:07 -05:00
Committer: Ingo Molnar <mingo@kernel.org>
CommitterDate: Fri, 06 Mar 2020 12:57:18 +01:00
drivers/base/arch_topology: Add infrastructure to store and update instantaneous thermal pressure
Add architecture specific APIs to update and track thermal pressure on a
per CPU basis. A per CPU variable thermal_pressure is introduced to keep
track of instantaneous per CPU thermal pressure. Thermal pressure is the
delta between maximum capacity and capped capacity due to a thermal event.
topology_get_thermal_pressure can be hooked into the scheduler specified
arch_scale_thermal_pressure to retrieve instantaneous thermal pressure of
a CPU.
arch_set_thermal_pressure can be used to update the thermal pressure.
Considering topology_get_thermal_pressure reads thermal_pressure and
arch_set_thermal_pressure writes into thermal_pressure, one can argue for
some sort of locking mechanism to avoid a stale value. But considering
topology_get_thermal_pressure can be called from a system critical path
like scheduler tick function, a locking mechanism is not ideal. This means
that it is possible the thermal_pressure value used to calculate average
thermal pressure for a CPU can be stale for up to 1 tick period.
Signed-off-by: Thara Gopinath <thara.gopinath@linaro.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://lkml.kernel.org/r/20200222005213.3873-4-thara.gopinath@linaro.org
---
drivers/base/arch_topology.c | 11 +++++++++++
include/linux/arch_topology.h | 10 ++++++++++
2 files changed, 21 insertions(+)
diff --git a/drivers/base/arch_topology.c b/drivers/base/arch_topology.c
index 6119e11..68dfa49 100644
--- a/drivers/base/arch_topology.c
+++ b/drivers/base/arch_topology.c
@@ -42,6 +42,17 @@ void topology_set_cpu_scale(unsigned int cpu, unsigned long capacity)
per_cpu(cpu_scale, cpu) = capacity;
}
+DEFINE_PER_CPU(unsigned long, thermal_pressure);
+
+void arch_set_thermal_pressure(struct cpumask *cpus,
+ unsigned long th_pressure)
+{
+ int cpu;
+
+ for_each_cpu(cpu, cpus)
+ WRITE_ONCE(per_cpu(thermal_pressure, cpu), th_pressure);
+}
+
static ssize_t cpu_capacity_show(struct device *dev,
struct device_attribute *attr,
char *buf)
diff --git a/include/linux/arch_topology.h b/include/linux/arch_topology.h
index 3015ecb..88a115e 100644
--- a/include/linux/arch_topology.h
+++ b/include/linux/arch_topology.h
@@ -33,6 +33,16 @@ unsigned long topology_get_freq_scale(int cpu)
return per_cpu(freq_scale, cpu);
}
+DECLARE_PER_CPU(unsigned long, thermal_pressure);
+
+static inline unsigned long topology_get_thermal_pressure(int cpu)
+{
+ return per_cpu(thermal_pressure, cpu);
+}
+
+void arch_set_thermal_pressure(struct cpumask *cpus,
+ unsigned long th_pressure);
+
struct cpu_topology {
int thread_id;
int core_id;
next prev parent reply other threads:[~2020-03-06 14:43 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-22 0:52 [Patch v10 0/9] Introduce Thermal Pressure Thara Gopinath
2020-02-22 0:52 ` [Patch v10 1/9] sched/pelt: Add support to track thermal pressure Thara Gopinath
2020-02-22 0:59 ` Randy Dunlap
2020-02-22 18:27 ` Thara Gopinath
2020-02-22 18:50 ` Randy Dunlap
2020-02-24 14:33 ` Thara Gopinath
2020-02-25 15:47 ` Peter Zijlstra
2020-02-25 16:43 ` Thara Gopinath
2020-03-06 14:42 ` [tip: sched/core] " tip-bot2 for Thara Gopinath
2020-02-22 0:52 ` [Patch v10 2/9] sched/topology: Add hook to read per cpu " Thara Gopinath
2020-03-06 14:42 ` [tip: sched/core] sched/topology: Add callback to read per CPU " tip-bot2 for Thara Gopinath
2020-02-22 0:52 ` [Patch v10 3/9] drivers/base/arch_topology: Add infrastructure to store and update instantaneous " Thara Gopinath
2020-03-06 14:42 ` tip-bot2 for Thara Gopinath [this message]
2020-02-22 0:52 ` [Patch v10 4/9] arm64/topology: Populate arch_scale_thermal_pressure for arm64 platforms Thara Gopinath
2020-03-06 14:42 ` [tip: sched/core] arm64/topology: Populate arch_scale_thermal_pressure() " tip-bot2 for Thara Gopinath
2020-02-22 0:52 ` [Patch v10 5/9] arm/topology: Populate arch_scale_thermal_pressure for arm platforms Thara Gopinath
2020-03-06 14:42 ` [tip: sched/core] arm/topology: Populate arch_scale_thermal_pressure() for ARM platforms tip-bot2 for Thara Gopinath
2020-02-22 0:52 ` [Patch v10 6/9] sched/fair: Enable periodic update of average thermal pressure Thara Gopinath
2020-02-27 9:03 ` Amit Kucheria
2020-03-06 14:42 ` [tip: sched/core] " tip-bot2 for Thara Gopinath
2020-02-22 0:52 ` [Patch v10 7/9] sched/fair: update cpu_capacity to reflect " Thara Gopinath
2020-03-06 14:42 ` [tip: sched/core] sched/fair: Update " tip-bot2 for Thara Gopinath
2020-02-22 0:52 ` [Patch v10 8/9] thermal/cpu-cooling: Update thermal pressure in case of a maximum frequency capping Thara Gopinath
2020-03-06 14:42 ` [tip: sched/core] " tip-bot2 for Thara Gopinath
2020-02-22 0:52 ` [Patch v10 9/9] sched/fair: Enable tuning of decay period Thara Gopinath
2020-03-06 14:42 ` [tip: sched/core] " tip-bot2 for Thara Gopinath
2020-02-27 9:01 ` [Patch v10 0/9] Introduce Thermal Pressure Amit Kucheria
[not found] ` <CAP=VYLqWfqOZT6ec9cKyKOsOhu7HhVn2f_eU+ca006i4CV8R-w@mail.gmail.com>
2020-04-16 13:40 ` Thara Gopinath
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=158350573056.28353.8289359977043719899.tip-bot2@tip-bot2 \
--to=tip-bot2@linutronix.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=thara.gopinath@linaro.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.