From f5708683877570e2993c9364b84267255f016e7c Mon Sep 17 00:00:00 2001 From: Srinivas Pandruvada Date: Sun, 2 Jun 2024 16:00:37 -0700 Subject: [PATCH 3/3] cpufreq: intel_pstate: Update turbo flag on HWP perf change When HWP performance change, update tuebo flag. Signed-off-by: Srinivas Pandruvada --- drivers/cpufreq/intel_pstate.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c index 998b2e8fc2d7..f641c9ed31a3 100644 --- a/drivers/cpufreq/intel_pstate.c +++ b/drivers/cpufreq/intel_pstate.c @@ -1168,6 +1168,12 @@ static void intel_pstate_update_limits(unsigned int cpu) if (!policy) return; + pr_info("turbo status before:%d\n", global.turbo_disabled); + global.turbo_disabled = turbo_is_disabled(); + pr_info("turbo status after:%d\n", global.turbo_disabled); + global.no_turbo = global.turbo_disabled; + arch_set_max_freq_ratio(global.turbo_disabled); + __intel_pstate_update_max_freq(all_cpu_data[cpu], policy); cpufreq_cpu_release(policy); @@ -1629,6 +1635,8 @@ void notify_hwp_interrupt(void) u64 value, status_mask; unsigned long flags; + pr_info("%s HWP interrupt\n", __func__); + if (!hwp_active || !boot_cpu_has(X86_FEATURE_HWP_NOTIFY)) return; @@ -1637,9 +1645,11 @@ void notify_hwp_interrupt(void) status_mask |= HWP_HIGHEST_PERF_CHANGE_STATUS; rdmsrl_safe(MSR_HWP_STATUS, &value); + pr_info("%s HWP interrupt status:%llx\n", __func__, value); if (!(value & status_mask)) return; + spin_lock_irqsave(&hwp_notify_lock, flags); if (!cpumask_test_cpu(this_cpu, &hwp_intr_enable_mask)) @@ -1692,6 +1702,8 @@ static void intel_pstate_enable_hwp_interrupt(struct cpudata *cpudata) if (boot_cpu_has(X86_FEATURE_HWP_HIGHEST_PERF_CHANGE)) interrupt_mask |= HWP_HIGHEST_PERF_CHANGE_REQ; + pr_info("%s HWP interrupt mask:%llx\n", __func__, interrupt_mask); + /* wrmsrl_on_cpu has to be outside spinlock as this can result in IPC */ wrmsrl_on_cpu(cpudata->cpu, MSR_HWP_INTERRUPT, interrupt_mask); wrmsrl_on_cpu(cpudata->cpu, MSR_HWP_STATUS, 0); -- 2.40.1