mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	cpufreq: Add stop CPU callback to cpufreq_driver interface
This callback allows the driver to do clean up before the CPU is completely down and its state cannot be modified. This is used by the intel_pstate driver to reduce the requested P state prior to the core going away. This is required because the requested P state of the offline core is used to select the package P state. This effectively sets the floor package P state to the requested P state on the offline core. Signed-off-by: Dirk Brandewie <dirk.j.brandewie@intel.com> [rjw: Minor modifications] Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
		
							parent
							
								
									bda9f552f9
								
							
						
					
					
						commit
						367dc4aa93
					
				
					 3 changed files with 10 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -61,7 +61,13 @@ target_index		-	See below on the differences.
 | 
			
		|||
 | 
			
		||||
And optionally
 | 
			
		||||
 | 
			
		||||
cpufreq_driver.exit -		A pointer to a per-CPU cleanup function.
 | 
			
		||||
cpufreq_driver.exit -		A pointer to a per-CPU cleanup
 | 
			
		||||
				function called during CPU_POST_DEAD
 | 
			
		||||
				phase of cpu hotplug process.
 | 
			
		||||
 | 
			
		||||
cpufreq_driver.stop_cpu -	A pointer to a per-CPU stop function
 | 
			
		||||
				called during CPU_DOWN_PREPARE phase of
 | 
			
		||||
				cpu hotplug process.
 | 
			
		||||
 | 
			
		||||
cpufreq_driver.resume -		A pointer to a per-CPU resume function
 | 
			
		||||
				which is called with interrupts disabled
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1337,6 +1337,8 @@ static int __cpufreq_remove_dev_prepare(struct device *dev,
 | 
			
		|||
				pr_debug("%s: policy Kobject moved to cpu: %d from: %d\n",
 | 
			
		||||
					 __func__, new_cpu, cpu);
 | 
			
		||||
		}
 | 
			
		||||
	} else if (cpufreq_driver->stop_cpu && cpufreq_driver->setpolicy) {
 | 
			
		||||
		cpufreq_driver->stop_cpu(policy);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -227,6 +227,7 @@ struct cpufreq_driver {
 | 
			
		|||
	int	(*bios_limit)	(int cpu, unsigned int *limit);
 | 
			
		||||
 | 
			
		||||
	int	(*exit)		(struct cpufreq_policy *policy);
 | 
			
		||||
	void	(*stop_cpu)	(struct cpufreq_policy *policy);
 | 
			
		||||
	int	(*suspend)	(struct cpufreq_policy *policy);
 | 
			
		||||
	int	(*resume)	(struct cpufreq_policy *policy);
 | 
			
		||||
	struct freq_attr	**attr;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue