diff options
Diffstat (limited to 'drivers/acpi/processor_idle.c')
| -rw-r--r-- | drivers/acpi/processor_idle.c | 13 | 
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c index 2dd2c1f3a01..556ee158519 100644 --- a/drivers/acpi/processor_idle.c +++ b/drivers/acpi/processor_idle.c @@ -1669,6 +1669,7 @@ static int acpi_processor_setup_cpuidle(struct acpi_processor *pr)  		return -EINVAL;  	} +	dev->cpu = pr->id;  	for (i = 0; i < CPUIDLE_STATE_MAX; i++) {  		dev->states[i].name[0] = '\0';  		dev->states[i].desc[0] = '\0'; @@ -1738,7 +1739,7 @@ static int acpi_processor_setup_cpuidle(struct acpi_processor *pr)  int acpi_processor_cst_has_changed(struct acpi_processor *pr)  { -	int ret; +	int ret = 0;  	if (boot_option_idle_override)  		return 0; @@ -1756,8 +1757,10 @@ int acpi_processor_cst_has_changed(struct acpi_processor *pr)  	cpuidle_pause_and_lock();  	cpuidle_disable_device(&pr->power.dev);  	acpi_processor_get_power_info(pr); -	acpi_processor_setup_cpuidle(pr); -	ret = cpuidle_enable_device(&pr->power.dev); +	if (pr->flags.power) { +		acpi_processor_setup_cpuidle(pr); +		ret = cpuidle_enable_device(&pr->power.dev); +	}  	cpuidle_resume_and_unlock();  	return ret; @@ -1813,7 +1816,6 @@ int __cpuinit acpi_processor_power_init(struct acpi_processor *pr,  	if (pr->flags.power) {  #ifdef CONFIG_CPU_IDLE  		acpi_processor_setup_cpuidle(pr); -		pr->power.dev.cpu = pr->id;  		if (cpuidle_register_device(&pr->power.dev))  			return -EIO;  #endif @@ -1850,8 +1852,7 @@ int acpi_processor_power_exit(struct acpi_processor *pr,  		return 0;  #ifdef CONFIG_CPU_IDLE -	if (pr->flags.power) -		cpuidle_unregister_device(&pr->power.dev); +	cpuidle_unregister_device(&pr->power.dev);  #endif  	pr->flags.power_setup_done = 0;  |