From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tony Lindgren Subject: Re: [PATCH] arm: Convert arm boot_lock to raw Date: Fri, 4 May 2018 08:21:37 -0700 Message-ID: <20180504152137.GC98604@atomide.com> References: <20180504105600.20613-1-bigeasy@linutronix.de> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Content-Disposition: inline In-Reply-To: <20180504105600.20613-1-bigeasy@linutronix.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Sebastian Andrzej Siewior Cc: Barry Song , linux-samsung-soc@vger.kernel.org, Maxime Ripard , Frank Rowand , linux-arm-msm@vger.kernel.org, linux-soc@vger.kernel.org, Russell King , Krzysztof Kozlowski , Patrice Chotard , David Brown , Chen-Yu Tsai , Kukjin Kim , Wei Xu , Viresh Kumar , Andy Gross , tglx@linutronix.de, linux-omap@vger.kernel.org, Shiraz Hashim , Andreas =?utf-8?Q?F=C3=A4rber?= , linux-arm-kernel@lists.infradead.org List-Id: linux-arm-msm@vger.kernel.org * Sebastian Andrzej Siewior [180504 10:58]: > From: Frank Rowand > > The arm boot_lock is used by the secondary processor startup code. The locking > task is the idle thread, which has idle->sched_class == &idle_sched_class. > idle_sched_class->enqueue_task == NULL, so if the idle task blocks on the > lock, the attempt to wake it when the lock becomes available will fail: > > try_to_wake_up() > ... > activate_task() > enqueue_task() > p->sched_class->enqueue_task(rq, p, flags) > > Fix by converting boot_lock to a raw spin lock. Still works for me: Tested-by: Tony Lindgren From mboxrd@z Thu Jan 1 00:00:00 1970 From: tony@atomide.com (Tony Lindgren) Date: Fri, 4 May 2018 08:21:37 -0700 Subject: [PATCH] arm: Convert arm boot_lock to raw In-Reply-To: <20180504105600.20613-1-bigeasy@linutronix.de> References: <20180504105600.20613-1-bigeasy@linutronix.de> Message-ID: <20180504152137.GC98604@atomide.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org * Sebastian Andrzej Siewior [180504 10:58]: > From: Frank Rowand > > The arm boot_lock is used by the secondary processor startup code. The locking > task is the idle thread, which has idle->sched_class == &idle_sched_class. > idle_sched_class->enqueue_task == NULL, so if the idle task blocks on the > lock, the attempt to wake it when the lock becomes available will fail: > > try_to_wake_up() > ... > activate_task() > enqueue_task() > p->sched_class->enqueue_task(rq, p, flags) > > Fix by converting boot_lock to a raw spin lock. Still works for me: Tested-by: Tony Lindgren