From: Petr Mladek <pmladek@suse.com>
To: John Ogness <john.ogness@linutronix.de>
Cc: Sergey Senozhatsky <senozhatsky@chromium.org>,
Steven Rostedt <rostedt@goodmis.org>,
Thomas Gleixner <tglx@linutronix.de>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH printk v4 02/17] printk: Fail pr_flush() if before SYSTEM_SCHEDULING
Date: Tue, 27 Aug 2024 14:00:45 +0200 [thread overview]
Message-ID: <Zs2_7Vl9XaSB-kw4@pathway.suse.cz> (raw)
In-Reply-To: <20240827044333.88596-3-john.ogness@linutronix.de>
On Tue 2024-08-27 06:49:18, John Ogness wrote:
> A follow-up change adds pr_flush() to console unregistration.
> However, with boot consoles unregistration can happen very
> early if there are also regular consoles registering as well.
> In this case the pr_flush() is not important because all
> consoles are flushed when checking the initial console sequence
> number.
>
> Allow pr_flush() to fail if @system_state has not yet reached
> SYSTEM_SCHEDULING. This avoids might_sleep() and msleep()
> explosions that would otherwise occur:
>
> [ 0.436739][ T0] printk: legacy console [ttyS0] enabled
> [ 0.439820][ T0] printk: legacy bootconsole [earlyser0] disabled
> [ 0.446822][ T0] BUG: scheduling while atomic: swapper/0/0/0x00000002
> [ 0.450491][ T0] 1 lock held by swapper/0/0:
> [ 0.457897][ T0] #0: ffffffff82ae5f88 (console_mutex){+.+.}-{4:4}, at: console_list_lock+0x20/0x70
> [ 0.463141][ T0] Modules linked in:
> [ 0.465307][ T0] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 6.10.0-rc1+ #372
> [ 0.469394][ T0] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.14.0-2 04/01/2014
> [ 0.474402][ T0] Call Trace:
> [ 0.476246][ T0] <TASK>
> [ 0.481473][ T0] dump_stack_lvl+0x93/0xb0
> [ 0.483949][ T0] dump_stack+0x10/0x20
> [ 0.486256][ T0] __schedule_bug+0x68/0x90
> [ 0.488753][ T0] __schedule+0xb9b/0xd80
> [ 0.491179][ T0] ? lock_release+0xb5/0x270
> [ 0.493732][ T0] schedule+0x43/0x170
> [ 0.495998][ T0] schedule_timeout+0xc5/0x1e0
> [ 0.498634][ T0] ? __pfx_process_timeout+0x10/0x10
> [ 0.501522][ T0] ? msleep+0x13/0x50
> [ 0.503728][ T0] msleep+0x3c/0x50
> [ 0.505847][ T0] __pr_flush.constprop.0.isra.0+0x56/0x500
> [ 0.509050][ T0] ? _printk+0x58/0x80
> [ 0.511332][ T0] ? lock_is_held_type+0x9c/0x110
> [ 0.514106][ T0] unregister_console_locked+0xe1/0x450
> [ 0.517144][ T0] register_console+0x509/0x620
> [ 0.519827][ T0] ? __pfx_univ8250_console_init+0x10/0x10
> [ 0.523042][ T0] univ8250_console_init+0x24/0x40
> [ 0.525845][ T0] console_init+0x43/0x210
> [ 0.528280][ T0] start_kernel+0x493/0x980
> [ 0.530773][ T0] x86_64_start_reservations+0x18/0x30
> [ 0.533755][ T0] x86_64_start_kernel+0xae/0xc0
> [ 0.536473][ T0] common_startup_64+0x12c/0x138
> [ 0.539210][ T0] </TASK>
>
> And then the kernel goes into an infinite loop complaining about:
>
> 1. releasing a pinned lock
> 2. unpinning an unpinned lock
> 3. bad: scheduling from the idle thread!
> 4. goto 1
>
> Signed-off-by: John Ogness <john.ogness@linutronix.de>
Thanks a lot for adding all the details. It is much more clear now.
Reviewed-by: Petr Mladek <pmladek@suse.com>
Best Regards,
Petr
next prev parent reply other threads:[~2024-08-27 12:00 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-27 4:43 [PATCH printk v4 00/17] add threaded printing + the rest John Ogness
2024-08-27 4:43 ` [PATCH printk v4 01/17] printk: nbcon: Add function for printers to reacquire ownership John Ogness
2024-08-27 11:57 ` Petr Mladek
2024-08-27 4:43 ` [PATCH printk v4 02/17] printk: Fail pr_flush() if before SYSTEM_SCHEDULING John Ogness
2024-08-27 12:00 ` Petr Mladek [this message]
2024-08-27 4:43 ` [PATCH printk v4 03/17] printk: Flush console on unregister_console() John Ogness
2024-08-27 4:43 ` [PATCH printk v4 04/17] printk: nbcon: Add context to usable() and emit() John Ogness
2024-08-27 12:21 ` Petr Mladek
2024-08-27 4:43 ` [PATCH printk v4 05/17] printk: nbcon: Init @nbcon_seq to highest possible John Ogness
2024-08-27 12:29 ` Petr Mladek
2024-08-27 4:43 ` [PATCH printk v4 06/17] printk: nbcon: Introduce printer kthreads John Ogness
2024-08-27 14:48 ` Petr Mladek
2024-08-28 17:33 ` John Ogness
2024-08-27 4:43 ` [PATCH printk v4 07/17] printk: nbcon: Relocate nbcon_atomic_emit_one() John Ogness
2024-08-27 14:50 ` Petr Mladek
2024-08-27 4:43 ` [PATCH printk v4 08/17] printk: nbcon: Use thread callback if in task context for legacy John Ogness
2024-08-27 15:09 ` Petr Mladek
2024-08-27 4:43 ` [PATCH printk v4 09/17] printk: nbcon: Rely on kthreads for normal operation John Ogness
2024-08-27 15:50 ` Petr Mladek
2024-08-27 21:13 ` John Ogness
2024-08-27 4:43 ` [PATCH printk v4 10/17] printk: Provide helper for message prepending John Ogness
2024-08-27 4:43 ` [PATCH printk v4 11/17] printk: nbcon: Show replay message on takeover John Ogness
2024-08-27 4:43 ` [PATCH printk v4 12/17] proc: consoles: Add notation to c_start/c_stop John Ogness
2024-08-27 4:43 ` [PATCH printk v4 13/17] proc: Add nbcon support for /proc/consoles John Ogness
2024-08-27 4:43 ` [PATCH printk v4 14/17] tty: sysfs: Add nbcon support for 'active' John Ogness
2024-08-27 4:43 ` [PATCH printk v4 15/17] printk: Implement legacy printer kthread for PREEMPT_RT John Ogness
2024-08-27 4:43 ` [PATCH printk v4 16/17] printk: nbcon: Assign nice -20 for printing threads John Ogness
2024-08-27 4:43 ` [PATCH printk v4 17/17] printk: Avoid false positive lockdep report for legacy printing John Ogness
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Zs2_7Vl9XaSB-kw4@pathway.suse.cz \
--to=pmladek@suse.com \
--cc=john.ogness@linutronix.de \
--cc=linux-kernel@vger.kernel.org \
--cc=rostedt@goodmis.org \
--cc=senozhatsky@chromium.org \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.