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