[PATCH] windfarm: fix windfarm thread freezer interaction

Rafael J. Wysocki rjw at sisk.pl
Wed Oct 24 06:17:35 EST 2007


On Tuesday, 23 October 2007 14:33, Johannes Berg wrote:
> When I fixed the windfarm freezer interaction first in commit
> 1ed2ddf380e19dafeec2150ca709ef7f4a67cd21, an earlier patch than the one
> I came up with after comments was committed. This has come back to haunt
> us now because commit d5d8c5976d6adeddb8208c240460411e2198b393 changed
> the freezer to no long send signals. Fix it by removing the windfarm
> thread's signal logic and restoring the original try_to_freeze().
> 
> We could simply revert 1ed2ddf380e19dafeec2150ca709ef7f4a67cd21 now
> but I feel that the assertion that no signal is delivered to the
> windfarm thread needs not be there.
> 
> Signed-off-by: Johannes Berg <johannes at sipsolutions.net>

Acked-by: Rafael J. Wysocki <rjw at sisk.pl>

> ---
>  drivers/macintosh/windfarm_core.c |   10 +++-------
>  1 file changed, 3 insertions(+), 7 deletions(-)
> 
> --- linux-2.6-git.orig/drivers/macintosh/windfarm_core.c	2007-10-23 14:23:02.406437623 +0200
> +++ linux-2.6-git/drivers/macintosh/windfarm_core.c	2007-10-23 14:25:28.745447695 +0200
> @@ -94,7 +94,9 @@ static int wf_thread_func(void *data)
>  	DBG("wf: thread started\n");
>  
>  	set_freezable();
> -	while(!kthread_should_stop()) {
> +	while (!kthread_should_stop()) {
> +		try_to_freeze();
> +
>  		if (time_after_eq(jiffies, next)) {
>  			wf_notify(WF_EVENT_TICK, NULL);
>  			if (wf_overtemp) {
> @@ -116,12 +118,6 @@ static int wf_thread_func(void *data)
>  		delay = next - jiffies;
>  		if (delay <= HZ)
>  			schedule_timeout_interruptible(delay);
> -
> -		/* there should be no non-suspend signal, but oh well */
> -		if (signal_pending(current) && !try_to_freeze()) {
> -			printk(KERN_WARNING "windfarm: thread got sigl !\n");
> -			break;
> -		}
>  	}
>  
>  	DBG("wf: thread stopped\n");
> 
> 
> 
> 




More information about the Linuxppc-dev mailing list