diff options
Diffstat (limited to 'drivers/base/cpu.c')
| -rw-r--r-- | drivers/base/cpu.c | 18 | 
1 files changed, 8 insertions, 10 deletions
diff --git a/drivers/base/cpu.c b/drivers/base/cpu.c index dd712b24ec9..3972d8ac978 100644 --- a/drivers/base/cpu.c +++ b/drivers/base/cpu.c @@ -8,6 +8,7 @@  #include <linux/cpu.h>  #include <linux/topology.h>  #include <linux/device.h> +#include <linux/node.h>  #include "base.h" @@ -57,13 +58,12 @@ static void __devinit register_cpu_control(struct cpu *cpu)  {  	sysdev_create_file(&cpu->sysdev, &attr_online);  } -void unregister_cpu(struct cpu *cpu, struct node *root) +void unregister_cpu(struct cpu *cpu)  {  	int logical_cpu = cpu->sysdev.id; -	if (root) -		sysfs_remove_link(&root->sysdev.kobj, -				  kobject_name(&cpu->sysdev.kobj)); +	unregister_cpu_under_node(logical_cpu, cpu_to_node(logical_cpu)); +  	sysdev_remove_file(&cpu->sysdev, &attr_online);  	sysdev_unregister(&cpu->sysdev); @@ -109,23 +109,21 @@ static SYSDEV_ATTR(crash_notes, 0400, show_crash_notes, NULL);   *   * Initialize and register the CPU device.   */ -int __devinit register_cpu(struct cpu *cpu, int num, struct node *root) +int __devinit register_cpu(struct cpu *cpu, int num)  {  	int error; -  	cpu->node_id = cpu_to_node(num);  	cpu->sysdev.id = num;  	cpu->sysdev.cls = &cpu_sysdev_class;  	error = sysdev_register(&cpu->sysdev); -	if (!error && root) -		error = sysfs_create_link(&root->sysdev.kobj, -					  &cpu->sysdev.kobj, -					  kobject_name(&cpu->sysdev.kobj)); +  	if (!error && !cpu->no_control)  		register_cpu_control(cpu);  	if (!error)  		cpu_sys_devices[num] = &cpu->sysdev; +	if (!error) +		register_cpu_under_node(num, cpu_to_node(num));  #ifdef CONFIG_KEXEC  	if (!error)  |