| From 2b473438dc206aa0885d082c30b2703eabb93fbd Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 3 Feb 2026 10:48:52 +0800 |
| Subject: cpufreq: intel_pstate: Enable asym capacity only when CPU SMT is not |
| possible |
| |
| From: Yaxiong Tian <tianyaxiong@kylinos.cn> |
| |
| [ Upstream commit 1fedbb589448bee9f20bb2ed9c850d1d2cf9963c ] |
| |
| According to the description in the intel_pstate.rst documentation, |
| Capacity-Aware Scheduling and Energy-Aware Scheduling are only |
| supported on a hybrid processor without SMT. Previously, the system |
| used sched_smt_active() for judgment, which is not a strict condition |
| because users can switch it on or off via /sys at any time. |
| |
| This could lead to incorrect driver settings in certain scenarios. |
| For example, on a CPU that supports SMT, a user can disable SMT |
| via the nosmt parameter to enable asym capacity, and then re-enable |
| SMT via /sys. In such cases, some settings in the driver would no |
| longer be correct. |
| |
| To address this issue, replace sched_smt_active() with cpu_smt_possible(), |
| and only enable asym capacity when CPU SMT is not possible. |
| |
| Fixes: 929ebc93ccaa ("cpufreq: intel_pstate: Set asymmetric CPU capacity on hybrid systems") |
| Signed-off-by: Yaxiong Tian <tianyaxiong@kylinos.cn> |
| [ rjw: Subject and changelog edits ] |
| Link: https://patch.msgid.link/20260203024852.301066-1-tianyaxiong@kylinos.cn |
| Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/cpufreq/intel_pstate.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c |
| index 492a10f1bdbfa..38333f7da40db 100644 |
| --- a/drivers/cpufreq/intel_pstate.c |
| +++ b/drivers/cpufreq/intel_pstate.c |
| @@ -1152,7 +1152,7 @@ static void hybrid_init_cpu_capacity_scaling(bool refresh) |
| * the capacity of SMT threads is not deterministic even approximately, |
| * do not do that when SMT is in use. |
| */ |
| - if (hwp_is_hybrid && !sched_smt_active() && arch_enable_hybrid_capacity_scale()) { |
| + if (hwp_is_hybrid && !cpu_smt_possible() && arch_enable_hybrid_capacity_scale()) { |
| hybrid_refresh_cpu_capacity_scaling(); |
| /* |
| * Disabling ITMT causes sched domains to be rebuilt to disable asym |
| -- |
| 2.51.0 |
| |