summaryrefslogtreecommitdiff
path: root/sys-kernel/linux-sources-redcore-lts/files/5.15-0004-cpufreq_intel_pstate_ITMT_support_for_overclocked_system.patch
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2022-04-21 02:13:00 +0100
committerV3n3RiX <venerix@koprulu.sector>2022-04-21 02:13:00 +0100
commitbffbad1c6c7cfd8e59b5609c1f298c530d6f3dc0 (patch)
treef68c98fde96c57e94b309b8b11294df16429b574 /sys-kernel/linux-sources-redcore-lts/files/5.15-0004-cpufreq_intel_pstate_ITMT_support_for_overclocked_system.patch
parent076ddede5efb81dd30aee12b999a7cccc4776983 (diff)
sys-kernel/linux-{image,sources}-redcore-lts : version bump
Diffstat (limited to 'sys-kernel/linux-sources-redcore-lts/files/5.15-0004-cpufreq_intel_pstate_ITMT_support_for_overclocked_system.patch')
-rw-r--r--sys-kernel/linux-sources-redcore-lts/files/5.15-0004-cpufreq_intel_pstate_ITMT_support_for_overclocked_system.patch51
1 files changed, 51 insertions, 0 deletions
diff --git a/sys-kernel/linux-sources-redcore-lts/files/5.15-0004-cpufreq_intel_pstate_ITMT_support_for_overclocked_system.patch b/sys-kernel/linux-sources-redcore-lts/files/5.15-0004-cpufreq_intel_pstate_ITMT_support_for_overclocked_system.patch
new file mode 100644
index 00000000..4c0a62d2
--- /dev/null
+++ b/sys-kernel/linux-sources-redcore-lts/files/5.15-0004-cpufreq_intel_pstate_ITMT_support_for_overclocked_system.patch
@@ -0,0 +1,51 @@
+From aa7300919d0656a001fe0d526508b8c5958e7630 Mon Sep 17 00:00:00 2001
+From: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
+Date: Thu, 18 Nov 2021 21:18:01 -0800
+Subject: [PATCH] cpufreq: intel_pstate: ITMT support for overclocked system
+
+On systems with overclocking enabled, CPPC Highest Performance can be
+hard coded to 0xff. In this case even if we have cores with different
+highest performance, ITMT can't be enabled as the current implementation
+depends on CPPC Highest Performance.
+
+On such systems we can use MSR_HWP_CAPABILITIES maximum performance field
+when CPPC.Highest Performance is 0xff.
+
+Due to legacy reasons, we can't solely depend on MSR_HWP_CAPABILITIES as
+in some older systems CPPC Highest Performance is the only way to identify
+different performing cores.
+
+Reported-by: Michael Larabel <Michael@MichaelLarabel.com>
+Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
+---
+ drivers/cpufreq/intel_pstate.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
+index e15c3bc17a55c..8a2c6b58b6524 100644
+--- a/drivers/cpufreq/intel_pstate.c
++++ b/drivers/cpufreq/intel_pstate.c
+@@ -335,6 +335,8 @@ static void intel_pstste_sched_itmt_work_fn(struct work_struct *work)
+
+ static DECLARE_WORK(sched_itmt_work, intel_pstste_sched_itmt_work_fn);
+
++#define CPPC_MAX_PERF U8_MAX
++
+ static void intel_pstate_set_itmt_prio(int cpu)
+ {
+ struct cppc_perf_caps cppc_perf;
+@@ -345,6 +347,14 @@ static void intel_pstate_set_itmt_prio(int cpu)
+ if (ret)
+ return;
+
++ /*
++ * On some systems with overclocking enabled, CPPC.highest_perf is hardcoded to 0xff.
++ * In this case we can't use CPPC.highest_perf to enable ITMT.
++ * In this case we can look at MSR_HWP_CAPABILITIES bits [8:0] to decide.
++ */
++ if (cppc_perf.highest_perf == CPPC_MAX_PERF)
++ cppc_perf.highest_perf = HWP_HIGHEST_PERF(READ_ONCE(all_cpu_data[cpu]->hwp_cap_cached));
++
+ /*
+ * The priorities can be set regardless of whether or not
+ * sched_set_itmt_support(true) has been called and it is valid to