Commit ff2653de authored by Mario Limonciello's avatar Mario Limonciello
Browse files

cpufreq/amd-pstate: Move registration after static function call update



On shared memory designs the static functions need to work before
registration is done or the system can hang at bootup.

Move the registration later in amd_pstate_init() to solve this.

Fixes: b427ac40 ("cpufreq/amd-pstate: Remove the redundant amd_pstate_set_driver() call")
Reported-by: default avatarKlara Modin <klarasmodin@gmail.com>
Closes: https://lore.kernel.org/linux-pm/cf9c146d-bacf-444e-92e2-15ebf513af96@gmail.com/#t


Tested-by: default avatarKlara Modin <klarasmodin@gmail.com>
Tested-by: default avatarDhananjay Ugwekar <dhananjay.ugwekar@amd.com>
Link: https://lore.kernel.org/r/20241028145542.1739160-2-superm1@kernel.org


Signed-off-by: default avatarMario Limonciello <mario.limonciello@amd.com>
parent 3ac757e8
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -1859,12 +1859,6 @@ static int __init amd_pstate_init(void)
		return -ENODEV;
	}

	ret = amd_pstate_register_driver(cppc_state);
	if (ret) {
		pr_err("failed to register with return %d\n", ret);
		return ret;
	}

	/* capability check */
	if (cpu_feature_enabled(X86_FEATURE_CPPC)) {
		pr_debug("AMD CPPC MSR based functionality is supported\n");
@@ -1875,6 +1869,12 @@ static int __init amd_pstate_init(void)
		static_call_update(amd_pstate_update_perf, shmem_update_perf);
	}

	ret = amd_pstate_register_driver(cppc_state);
	if (ret) {
		pr_err("failed to register with return %d\n", ret);
		return ret;
	}

	if (amd_pstate_prefcore) {
		ret = amd_detect_prefcore(&amd_pstate_prefcore);
		if (ret)