forked from mirrors/linux
		
	ARM: tegra: add cpu_disable for hotplug
The Tegra114 could hotplug the CPU0, but the common cpu_disable didn't support that. Adding a Tegra specific cpu_disable function for it. Signed-off-by: Joseph Lo <josephl@nvidia.com> [swarren: adjusted the switch statement to be future-proof] Signed-off-by: Stephen Warren <swarren@nvidia.com>
This commit is contained in:
		
							parent
							
								
									33d5c01915
								
							
						
					
					
						commit
						510bb595de
					
				
					 3 changed files with 13 additions and 0 deletions
				
			
		| 
						 | 
					@ -2,3 +2,4 @@ extern struct smp_operations tegra_smp_ops;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern int tegra_cpu_kill(unsigned int cpu);
 | 
					extern int tegra_cpu_kill(unsigned int cpu);
 | 
				
			||||||
extern void tegra_cpu_die(unsigned int cpu);
 | 
					extern void tegra_cpu_die(unsigned int cpu);
 | 
				
			||||||
 | 
					extern int tegra_cpu_disable(unsigned int cpu);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -46,6 +46,17 @@ void __ref tegra_cpu_die(unsigned int cpu)
 | 
				
			||||||
	BUG();
 | 
						BUG();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int tegra_cpu_disable(unsigned int cpu)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						switch (tegra_chip_id) {
 | 
				
			||||||
 | 
						case TEGRA20:
 | 
				
			||||||
 | 
						case TEGRA30:
 | 
				
			||||||
 | 
							return cpu == 0 ? -EPERM : 0;
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void __init tegra_hotplug_init(void)
 | 
					void __init tegra_hotplug_init(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if (!IS_ENABLED(CONFIG_HOTPLUG_CPU))
 | 
						if (!IS_ENABLED(CONFIG_HOTPLUG_CPU))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -196,5 +196,6 @@ struct smp_operations tegra_smp_ops __initdata = {
 | 
				
			||||||
#ifdef CONFIG_HOTPLUG_CPU
 | 
					#ifdef CONFIG_HOTPLUG_CPU
 | 
				
			||||||
	.cpu_kill		= tegra_cpu_kill,
 | 
						.cpu_kill		= tegra_cpu_kill,
 | 
				
			||||||
	.cpu_die		= tegra_cpu_die,
 | 
						.cpu_die		= tegra_cpu_die,
 | 
				
			||||||
 | 
						.cpu_disable		= tegra_cpu_disable,
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue