summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJie Zhan <zhanjie9@hisilicon.com>2025-12-23 15:21:18 +0800
committerViresh Kumar <viresh.kumar@linaro.org>2026-01-27 11:21:23 +0530
commit206b6612556398e717b1e293d96992d5ab2b8f32 (patch)
treea4b9c4570def9e95a8f208c6c4ed636d0abf7330
parentf9cadb3d56912a70571fdd95f426b757557c465b (diff)
cpufreq: CPPC: Factor out cppc_fie_kworker_init()
Factor out the CPPC FIE kworker init in cppc_freq_invariance_init() because it's a standalone procedure for use when the CPC regs are in PCC channels. Reviewed-by: Lifeng Zheng <zhenglifeng1@huawei.com> Reviewed-by: Pierre Gondois <pierre.gondois@arm.com> Signed-off-by: Jie Zhan <zhanjie9@hisilicon.com> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
-rw-r--r--drivers/cpufreq/cppc_cpufreq.c29
1 files changed, 17 insertions, 12 deletions
diff --git a/drivers/cpufreq/cppc_cpufreq.c b/drivers/cpufreq/cppc_cpufreq.c
index 9eac77c4f294..947b4e2e1d4e 100644
--- a/drivers/cpufreq/cppc_cpufreq.c
+++ b/drivers/cpufreq/cppc_cpufreq.c
@@ -184,7 +184,7 @@ static void cppc_cpufreq_cpu_fie_exit(struct cpufreq_policy *policy)
}
}
-static void __init cppc_freq_invariance_init(void)
+static void cppc_fie_kworker_init(void)
{
struct sched_attr attr = {
.size = sizeof(struct sched_attr),
@@ -201,17 +201,6 @@ static void __init cppc_freq_invariance_init(void)
};
int ret;
- if (fie_disabled != FIE_ENABLED && fie_disabled != FIE_DISABLED) {
- fie_disabled = FIE_ENABLED;
- if (cppc_perf_ctrs_in_pcc()) {
- pr_info("FIE not enabled on systems with registers in PCC\n");
- fie_disabled = FIE_DISABLED;
- }
- }
-
- if (fie_disabled)
- return;
-
kworker_fie = kthread_run_worker(0, "cppc_fie");
if (IS_ERR(kworker_fie)) {
pr_warn("%s: failed to create kworker_fie: %ld\n", __func__,
@@ -229,6 +218,22 @@ static void __init cppc_freq_invariance_init(void)
}
}
+static void __init cppc_freq_invariance_init(void)
+{
+ if (fie_disabled != FIE_ENABLED && fie_disabled != FIE_DISABLED) {
+ fie_disabled = FIE_ENABLED;
+ if (cppc_perf_ctrs_in_pcc()) {
+ pr_info("FIE not enabled on systems with registers in PCC\n");
+ fie_disabled = FIE_DISABLED;
+ }
+ }
+
+ if (fie_disabled)
+ return;
+
+ cppc_fie_kworker_init();
+}
+
static void cppc_freq_invariance_exit(void)
{
if (fie_disabled)