mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 16:48:26 +02:00 
			
		
		
		
	cpufreq/amd-pstate: Invalidate cppc_req_cached during suspend
During resume it's possible the firmware didn't restore the CPPC request MSR but the kernel thinks the values line up. This leads to incorrect performance after resume from suspend. To fix the issue invalidate the cached value at suspend. During resume use the saved values programmed as cached limits. Reviewed-by: Gautham R. Shenoy <gautham.shenoy@amd.com> Reviewed-by: Dhananjay Ugwekar <dhananjay.ugwekar@amd.com> Reported-by: Miroslav Pavleski <miroslav@pavleski.net> Closes: https://bugzilla.kernel.org/show_bug.cgi?id=217931 Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
This commit is contained in:
		
							parent
							
								
									a1d1d8fb65
								
							
						
					
					
						commit
						b7a4115658
					
				
					 1 changed files with 4 additions and 1 deletions
				
			
		|  | @ -1605,7 +1605,7 @@ static int amd_pstate_epp_reenable(struct cpufreq_policy *policy) | ||||||
| 					  max_perf, policy->boost_enabled); | 					  max_perf, policy->boost_enabled); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	return amd_pstate_update_perf(cpudata, 0, 0, max_perf, cpudata->epp_cached, false); | 	return amd_pstate_epp_update_limit(policy); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static int amd_pstate_epp_cpu_online(struct cpufreq_policy *policy) | static int amd_pstate_epp_cpu_online(struct cpufreq_policy *policy) | ||||||
|  | @ -1654,6 +1654,9 @@ static int amd_pstate_epp_suspend(struct cpufreq_policy *policy) | ||||||
| 	if (cppc_state != AMD_PSTATE_ACTIVE) | 	if (cppc_state != AMD_PSTATE_ACTIVE) | ||||||
| 		return 0; | 		return 0; | ||||||
| 
 | 
 | ||||||
|  | 	/* invalidate to ensure it's rewritten during resume */ | ||||||
|  | 	cpudata->cppc_req_cached = 0; | ||||||
|  | 
 | ||||||
| 	/* set this flag to avoid setting core offline*/ | 	/* set this flag to avoid setting core offline*/ | ||||||
| 	cpudata->suspended = true; | 	cpudata->suspended = true; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Mario Limonciello
						Mario Limonciello