From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Morton Subject: Re: 2.6.21-rc7-mm2 suspend bug. [kernel/kthread.c] Date: Mon, 30 Apr 2007 00:39:46 -0700 Message-ID: <20070430003946.b4d856b4.akpm@linux-foundation.org> References: <200704292227.45215.rjw@sisk.pl> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <200704292227.45215.rjw@sisk.pl> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-pm-bounces@lists.linux-foundation.org Errors-To: linux-pm-bounces@lists.linux-foundation.org To: "Rafael J. Wysocki" Cc: list , Dan Kruchinin , linux-kernel@vger.kernel.org, Pavel Machek , pm@smtp2.linux-foundation.org List-Id: linux-pm@vger.kernel.org On Sun, 29 Apr 2007 22:27:44 +0200 "Rafael J. Wysocki" wrote: > On Sunday, 29 April 2007 21:51, Dan Kruchinin wrote: > > Hi all. > > > > There is a problem on my macbook core duo with suspend. > > after suspending when i'm trying to 'wake up' my notebook, it seems > > that it works, but i don't see anything at my monitor. So i have to > > reboot it to continue my work. > > What exactly do you do to suspend? > This is due to _cpu_down() calling kthread_bind() in state TASK_RUNNING. So I was sent the below, including worrisome changelog. From: Gautham R Shenoy We are anyway kthread_stop()ping other per-cpu kernel threads after move_task_off_dead_cpu(), so we can do it with the stop_machine_run thread as well. I just checked with Vatsa if there was any subtle reason why they had put in the kthread_bind() in cpu.c. Vatsa cannot seem to recollect any and I can't see any. So let us just remove the kthread_bind. Signed-off-by: Gautham R Shenoy Cc: Oleg Nesterov Cc: "Eric W. Biederman" Cc: "Rafael J. Wysocki" Signed-off-by: Andrew Morton --- kernel/cpu.c | 4 ---- 1 files changed, 4 deletions(-) diff -puN kernel/cpu.c~remvoe-kthread_bind-call-from-_cpu_down kernel/cpu.c --- a/kernel/cpu.c~remvoe-kthread_bind-call-from-_cpu_down +++ a/kernel/cpu.c @@ -175,10 +175,6 @@ static int _cpu_down(unsigned int cpu) /* This actually kills the CPU. */ __cpu_die(cpu); - /* Move it here so it can run. */ - kthread_bind(p, get_cpu()); - put_cpu(); - /* CPU is completely dead: tell everyone. Too late to complain. */ if (raw_notifier_call_chain(&cpu_chain, CPU_DEAD, hcpu) == NOTIFY_BAD) BUG(); _