Thread (13 messages) 13 messages, 5 authors, 2021-08-06

RE: [PREEMPT_RT][PATCH] printk: Enhance the condition check of msleep in pr_flush()

flat view

From: Qin, Chao <hidden>
Date: 2021-08-02 06:08:50
Also in: lkml

As John Ogness commented, I also found it would hang if sleep when >= SYSTEM_SCHEDULING.

 And as in commit https://lore.kernel.org/lkml/20170516184736.272225698@linutronix.de/ (local),  it should enable sleep right when the scheduler starts working(>= SYSTEM_RUNNING).

-Chao.

-----Original Message-----
From: John Ogness <john.ogness@linutronix.de> 
Sent: Friday, July 30, 2021 10:47 PM
To: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Cc: Qin, Chao <redacted>; linux-kernel@vger.kernel.org; linux-rt-users@vger.kernel.org; tglx@linutronix.de; rostedt@goodmis.org; mgross@linux.intel.com; Mei, Paul <redacted>; Li, Lili <redacted>
Subject: Re: [PREEMPT_RT][PATCH] printk: Enhance the condition check of msleep in pr_flush()

On 2021-07-30, Sebastian Andrzej Siewior [off-list ref] wrote:
On 2021-07-19 17:01:51 [+0206], John Ogness wrote:
quoted
On 2021-07-19, chao.qin@intel.com wrote:
quoted
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -3620,7 +3620,8 @@ bool pr_flush(int timeout_ms, bool reset_on_progress)
 	u64 diff;
 	u64 seq;
 
-	may_sleep = (preemptible() && !in_softirq());
+	may_sleep = (preemptible() && !in_softirq()
+			&& (system_state >= SYSTEM_RUNNING));
I don't have more context but scheduling should work starting with 
SYSTEM_SCHEDULING.
I also thought this, but a quick test shows that is not the case. For example, init/main.c:kernel_init() is called in preemptible context, but
msleep() will hang if called at the beginning of that function.

John Ogness
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help