]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
cpufreq/amd-pstate: Fix amd_pstate mode switch on shared memory systems
authorDhananjay Ugwekar <Dhananjay.Ugwekar@amd.com>
Fri, 4 Oct 2024 12:23:04 +0000 (12:23 +0000)
committerMario Limonciello <mario.limonciello@amd.com>
Mon, 7 Oct 2024 16:32:05 +0000 (11:32 -0500)
While switching the driver mode between active and passive, Collaborative
Processor Performance Control (CPPC) is disabled in
amd_pstate_unregister_driver(). But, it is not enabled back while registering
the new driver (passive or active). This leads to the new driver mode not
working correctly, so enable it back in amd_pstate_register_driver().

Fixes: 3ca7bc818d8c ("cpufreq: amd-pstate: Add guided mode control support via sysfs")
Signed-off-by: Dhananjay Ugwekar <Dhananjay.Ugwekar@amd.com>
Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
Link: https://lore.kernel.org/r/20241004122303.94283-1-Dhananjay.Ugwekar@amd.com
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
drivers/cpufreq/amd-pstate.c

index 15e201d5e911c32289cb31e3d648730ebef42a74..4cf2ac5694cb1bffd6419a9ef2480d91dcc84782 100644 (file)
@@ -1201,11 +1201,21 @@ static int amd_pstate_register_driver(int mode)
                return -EINVAL;
 
        cppc_state = mode;
+
+       ret = amd_pstate_enable(true);
+       if (ret) {
+               pr_err("failed to enable cppc during amd-pstate driver registration, return %d\n",
+                      ret);
+               amd_pstate_driver_cleanup();
+               return ret;
+       }
+
        ret = cpufreq_register_driver(current_pstate_driver);
        if (ret) {
                amd_pstate_driver_cleanup();
                return ret;
        }
+
        return 0;
 }