@@ -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)
2122721236static 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