Skip to content

Commit 411ca5d

Browse files
committed
Merge branch 'cppc_acpi_refactor'
2 parents 2769038 + da74f05 commit 411ca5d

4 files changed

Lines changed: 73 additions & 8 deletions

File tree

aarch64/corefreqk.c

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2345,7 +2345,7 @@ static PROCESSOR_SPECIFIC *LookupProcessor(void)
23452345
#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 16, 0)
23462346
static int cpufreq_get_policy(struct cpufreq_policy *policy, unsigned int cpu)
23472347
{
2348-
struct cpufreq_policy *cpu_policy __free(put_cpufreq_policy);
2348+
struct cpufreq_policy *cpu_policy;
23492349

23502350
if (!policy)
23512351
return -EINVAL;
@@ -2356,6 +2356,8 @@ static int cpufreq_get_policy(struct cpufreq_policy *policy, unsigned int cpu)
23562356

23572357
memcpy(policy, cpu_policy, sizeof(*policy));
23582358

2359+
cpufreq_cpu_put(cpu_policy);
2360+
23592361
return 0;
23602362
}
23612363
#endif
@@ -4321,7 +4323,19 @@ static long Sys_OS_Driver_Query(void)
43214323
StrCopy(PUBLIC(RO(Proc))->OS.FreqDriver.Governor,
43224324
pGovernor->name, CPUFREQ_NAME_LEN);
43234325
} else {
4324-
PUBLIC(RO(Proc))->OS.FreqDriver.Governor[0] = '\0';
4326+
switch (pFreqPolicy->policy) {
4327+
case CPUFREQ_POLICY_POWERSAVE:
4328+
StrCopy(PUBLIC(RO(Proc))->OS.FreqDriver.Governor,
4329+
"powersave", CPUFREQ_NAME_LEN);
4330+
break;
4331+
case CPUFREQ_POLICY_PERFORMANCE:
4332+
StrCopy(PUBLIC(RO(Proc))->OS.FreqDriver.Governor,
4333+
"performance", CPUFREQ_NAME_LEN);
4334+
break;
4335+
default:
4336+
PUBLIC(RO(Proc))->OS.FreqDriver.Governor[0] = '\0';
4337+
break;
4338+
}
43254339
}
43264340
} else {
43274341
PUBLIC(RO(Proc))->OS.FreqDriver.Governor[0] = '\0';

ppc64le/corefreqk.c

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -980,7 +980,7 @@ static PROCESSOR_SPECIFIC *LookupProcessor(void)
980980
#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 16, 0)
981981
static int cpufreq_get_policy(struct cpufreq_policy *policy, unsigned int cpu)
982982
{
983-
struct cpufreq_policy *cpu_policy __free(put_cpufreq_policy);
983+
struct cpufreq_policy *cpu_policy;
984984

985985
if (!policy)
986986
return -EINVAL;
@@ -991,6 +991,8 @@ static int cpufreq_get_policy(struct cpufreq_policy *policy, unsigned int cpu)
991991

992992
memcpy(policy, cpu_policy, sizeof(*policy));
993993

994+
cpufreq_cpu_put(cpu_policy);
995+
994996
return 0;
995997
}
996998
#endif
@@ -2312,7 +2314,19 @@ static long Sys_OS_Driver_Query(void)
23122314
StrCopy(PUBLIC(RO(Proc))->OS.FreqDriver.Governor,
23132315
pGovernor->name, CPUFREQ_NAME_LEN);
23142316
} else {
2315-
PUBLIC(RO(Proc))->OS.FreqDriver.Governor[0] = '\0';
2317+
switch (pFreqPolicy->policy) {
2318+
case CPUFREQ_POLICY_POWERSAVE:
2319+
StrCopy(PUBLIC(RO(Proc))->OS.FreqDriver.Governor,
2320+
"powersave", CPUFREQ_NAME_LEN);
2321+
break;
2322+
case CPUFREQ_POLICY_PERFORMANCE:
2323+
StrCopy(PUBLIC(RO(Proc))->OS.FreqDriver.Governor,
2324+
"performance", CPUFREQ_NAME_LEN);
2325+
break;
2326+
default:
2327+
PUBLIC(RO(Proc))->OS.FreqDriver.Governor[0] = '\0';
2328+
break;
2329+
}
23162330
}
23172331
} else {
23182332
PUBLIC(RO(Proc))->OS.FreqDriver.Governor[0] = '\0';

riscv64/corefreqk.c

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -987,7 +987,7 @@ static PROCESSOR_SPECIFIC *LookupProcessor(unsigned int cpu)
987987
#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 16, 0)
988988
static int cpufreq_get_policy(struct cpufreq_policy *policy, unsigned int cpu)
989989
{
990-
struct cpufreq_policy *cpu_policy __free(put_cpufreq_policy);
990+
struct cpufreq_policy *cpu_policy;
991991

992992
if (!policy)
993993
return -EINVAL;
@@ -998,6 +998,8 @@ static int cpufreq_get_policy(struct cpufreq_policy *policy, unsigned int cpu)
998998

999999
memcpy(policy, cpu_policy, sizeof(*policy));
10001000

1001+
cpufreq_cpu_put(cpu_policy);
1002+
10011003
return 0;
10021004
}
10031005
#endif
@@ -2437,7 +2439,19 @@ static long Sys_OS_Driver_Query(void)
24372439
StrCopy(PUBLIC(RO(Proc))->OS.FreqDriver.Governor,
24382440
pGovernor->name, CPUFREQ_NAME_LEN);
24392441
} else {
2440-
PUBLIC(RO(Proc))->OS.FreqDriver.Governor[0] = '\0';
2442+
switch (pFreqPolicy->policy) {
2443+
case CPUFREQ_POLICY_POWERSAVE:
2444+
StrCopy(PUBLIC(RO(Proc))->OS.FreqDriver.Governor,
2445+
"powersave", CPUFREQ_NAME_LEN);
2446+
break;
2447+
case CPUFREQ_POLICY_PERFORMANCE:
2448+
StrCopy(PUBLIC(RO(Proc))->OS.FreqDriver.Governor,
2449+
"performance", CPUFREQ_NAME_LEN);
2450+
break;
2451+
default:
2452+
PUBLIC(RO(Proc))->OS.FreqDriver.Governor[0] = '\0';
2453+
break;
2454+
}
24412455
}
24422456
} else {
24432457
PUBLIC(RO(Proc))->OS.FreqDriver.Governor[0] = '\0';

x86_64/corefreqk.c

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14675,6 +14675,14 @@ static void PerCore_AMD_Family_17h_Query(void *arg)
1467514675
}
1467614676
else if (PUBLIC(RO(Proc))->Features.ACPI_CPPC)
1467714677
{
14678+
if (Get_ACPI_CPPC_Registers(Core->Bind, NULL) == 0)
14679+
{
14680+
if (PUBLIC(RO(Proc))->Features.OSPM_EPP) {
14681+
Get_EPP_ACPI_CPPC(Core->Bind);
14682+
}
14683+
14684+
Compute_ACPI_CPPC_Bounds(Core->Bind);
14685+
1467814686
RDMSR(Core->SystemRegister.HWCR, MSR_K7_HWCR);
1467914687

1468014688
Core->PowerThermal.HWP_Capabilities.Highest = \
@@ -14736,6 +14744,7 @@ static void PerCore_AMD_Family_17h_Query(void *arg)
1473614744
Core->Boost[BOOST(HWP_MIN)]=Core->PowerThermal.HWP_Request.Minimum_Perf;
1473714745
Core->Boost[BOOST(HWP_MAX)]=Core->PowerThermal.HWP_Request.Maximum_Perf;
1473814746
Core->Boost[BOOST(HWP_TGT)]=Core->PowerThermal.HWP_Request.Desired_Perf;
14747+
}
1473914748
}
1474014749
}
1474114750

@@ -21226,7 +21235,7 @@ static void Stop_Uncore_AMD_Family_17h(void *arg)
2122621235
#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 16, 0)
2122721236
static int cpufreq_get_policy(struct cpufreq_policy *policy, unsigned int cpu)
2122821237
{
21229-
struct cpufreq_policy *cpu_policy __free(put_cpufreq_policy);
21238+
struct cpufreq_policy *cpu_policy;
2123021239

2123121240
if (!policy)
2123221241
return -EINVAL;
@@ -21237,6 +21246,8 @@ static int cpufreq_get_policy(struct cpufreq_policy *policy, unsigned int cpu)
2123721246

2123821247
memcpy(policy, cpu_policy, sizeof(*policy));
2123921248

21249+
cpufreq_cpu_put(cpu_policy);
21250+
2124021251
return 0;
2124121252
}
2124221253
#endif
@@ -21312,7 +21323,19 @@ static long Sys_OS_Driver_Query(void)
2131221323
StrCopy(PUBLIC(RO(Proc))->OS.FreqDriver.Governor,
2131321324
pGovernor->name, CPUFREQ_NAME_LEN);
2131421325
} else {
21315-
PUBLIC(RO(Proc))->OS.FreqDriver.Governor[0] = '\0';
21326+
switch (pFreqPolicy->policy) {
21327+
case CPUFREQ_POLICY_POWERSAVE:
21328+
StrCopy(PUBLIC(RO(Proc))->OS.FreqDriver.Governor,
21329+
"powersave", CPUFREQ_NAME_LEN);
21330+
break;
21331+
case CPUFREQ_POLICY_PERFORMANCE:
21332+
StrCopy(PUBLIC(RO(Proc))->OS.FreqDriver.Governor,
21333+
"performance", CPUFREQ_NAME_LEN);
21334+
break;
21335+
default:
21336+
PUBLIC(RO(Proc))->OS.FreqDriver.Governor[0] = '\0';
21337+
break;
21338+
}
2131621339
}
2131721340
} else {
2131821341
PUBLIC(RO(Proc))->OS.FreqDriver.Governor[0] = '\0';

0 commit comments

Comments
 (0)