Re: [patch 1/4] cuidle: fix boot hang

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Applied
(and cpuidle branch restored to acpi-test tree)

thanks,
-Len

On Tuesday 27 March 2007 01:38, akpm@xxxxxxxxxxxxxxxxxxxx wrote:
> From: Venkatesh Pallipadi <venkatesh.pallipadi@xxxxxxxxx>
> 
> Patch for cpuidle boot hang reported by Larry Finger here.
> http://www.ussg.iu.edu/hypermail/linux/kernel/0703.2/2025.html
> 
> Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@xxxxxxxxx>
> Cc: Len Brown <lenb@xxxxxxxxxx>
> Cc: Larry Finger <larry.finger@xxxxxxxxxxxx>
> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
> ---
> 
>  drivers/cpuidle/cpuidle.c |   26 +++++++++++++++++++-------
>  drivers/cpuidle/driver.c  |    4 ++--
>  2 files changed, 21 insertions(+), 9 deletions(-)
> 
> diff -puN drivers/cpuidle/cpuidle.c~cpuidle-fix-boot-hang drivers/cpuidle/cpuidle.c
> --- a/drivers/cpuidle/cpuidle.c~cpuidle-fix-boot-hang
> +++ a/drivers/cpuidle/cpuidle.c
> @@ -119,6 +119,7 @@ static int cpuidle_add_device(struct sys
>  
>  	dev = &per_cpu(cpuidle_devices, cpu);
>  
> +	dev->cpu = cpu;
>  	mutex_lock(&cpuidle_lock);
>  	if (cpu_is_offline(cpu)) {
>  		mutex_unlock(&cpuidle_lock);
> @@ -129,15 +130,26 @@ static int cpuidle_add_device(struct sys
>  		mutex_unlock(&cpuidle_lock);
>  		return 0;
>  	}
> -	dev->status |= CPUIDLE_STATUS_DETECTED;
> -	list_add(&dev->device_list, &cpuidle_detected_devices);
> -	cpuidle_add_sysfs(sys_dev);
> -	if (cpuidle_curr_driver)
> -		cpuidle_attach_driver(dev);
> -	if (cpuidle_curr_governor)
> -		cpuidle_attach_governor(dev);
> +	if (cpuidle_curr_driver) {
> +		if (cpuidle_attach_driver(dev))
> +			goto err_ret;
> +	}
> +
> +	if (cpuidle_curr_governor) {
> +		if (cpuidle_attach_governor(dev)) {
> +			cpuidle_detach_driver(dev);
> +			goto err_ret;
> +		}
> +	}
> +
>  	if (cpuidle_device_can_idle(dev))
>  		cpuidle_install_idle_handler();
> +
> +	list_add(&dev->device_list, &cpuidle_detected_devices);
> +	cpuidle_add_sysfs(sys_dev);
> +	dev->status |= CPUIDLE_STATUS_DETECTED;
> +
> +err_ret:
>  	mutex_unlock(&cpuidle_lock);
>  
>  	return 0;
> diff -puN drivers/cpuidle/driver.c~cpuidle-fix-boot-hang drivers/cpuidle/driver.c
> --- a/drivers/cpuidle/driver.c~cpuidle-fix-boot-hang
> +++ a/drivers/cpuidle/driver.c
> @@ -37,8 +37,8 @@ int cpuidle_attach_driver(struct cpuidle
>  	ret = cpuidle_curr_driver->init(dev);
>  	if (ret) {
>  		module_put(cpuidle_curr_driver->owner);
> -		printk(KERN_ERR "cpuidle: driver %s failed to attach to cpu %d\n",
> -			cpuidle_curr_driver->name, dev->cpu);
> +		printk(KERN_INFO "cpuidle: driver %s failed to attach to "
> +			"cpu %d\n", cpuidle_curr_driver->name, dev->cpu);
>  	} else {
>  		if (dev->status & CPUIDLE_STATUS_GOVERNOR_ATTACHED)
>  			cpuidle_rescan_device(dev);
> _
> -
> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux