From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marc.Zyngier@arm.com (Marc Zyngier) Date: Thu, 26 May 2011 17:22:28 +0100 Subject: [BUG] "sched: Remove rq->lock from the first half of ttwu()" locks up on ARM In-Reply-To: <1306426148.2497.83.camel@laptop> References: <1306260792.27474.133.camel@e102391-lin.cambridge.arm.com> <1306272750.2497.79.camel@laptop> <1306343335.21578.65.camel@twins> <1306358128.21578.107.camel@twins> <1306405979.1200.63.camel@twins> <1306407759.27474.207.camel@e102391-lin.cambridge.arm.com> <1306409575.1200.71.camel@twins> <1306412511.1200.90.camel@twins> <20110526154508.GA13788@redhat.com> <1306425584.2497.81.camel@laptop> <1306426148.2497.83.camel@laptop> Message-ID: <1306426948.27474.243.camel@e102391-lin.cambridge.arm.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Thu, 2011-05-26 at 18:09 +0200, Peter Zijlstra wrote: > On Thu, 2011-05-26 at 17:59 +0200, Peter Zijlstra wrote: > > On Thu, 2011-05-26 at 17:45 +0200, Oleg Nesterov wrote: > > > Stupid question. Can't we fix this problem if we do > > > > > > - if (p == current) > > > + if (cpu == raw_smp_processor_id()) > > > > > > ? > > > > > > I forgot the rules... but iirc task_cpu(p) can't be changed under us? > > > > Easy enough to test.. brain gave out again,. hold on ;-) > > The below seems to run all-right so far, I'll let it run for a while. Just got the following: INFO: task kjournald:904 blocked for more than 120 seconds. "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. kjournald D c0284c88 0 904 2 0x00000000 [] (schedule+0x54c/0x620) from [] (io_schedule+0x7c/0xac) [] (io_schedule+0x7c/0xac) from [] (sleep_on_buffer+0x8/0x10) [] (sleep_on_buffer+0x8/0x10) from [] (__wait_on_bit+0x54/0x9c) [] (__wait_on_bit+0x54/0x9c) from [] (out_of_line_wait_on_bit+0x78/0x84) [] (out_of_line_wait_on_bit+0x78/0x84) from [] (journal_commit_transaction+0x734/0x13f4) [] (journal_commit_transaction+0x734/0x13f4) from [] (kjournald+0xb8/0x210) [] (kjournald+0xb8/0x210) from [] (kthread+0x80/0x88) [] (kthread+0x80/0x88) from [] (kernel_thread_exit+0x0/0x8) M. -- Reality is an implementation detail.