From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
To: John Ogness <john.ogness@linutronix.de>
Cc: linux-kernel@vger.kernel.org, Petr Mladek <pmladek@suse.com>,
Steven Rostedt <rostedt@goodmis.org>,
Sergey Senozhatsky <senozhatsky@chromium.org>
Subject: Re: [PATCH v2] printk: Use two irq_works instead per-CPU
Date: Wed, 23 Sep 2026 09:55:12 +0200 [thread overview]
Message-ID: <20260923075512.SBaoMRXt@linutronix.de> (raw)
In-Reply-To: <87zex9tcip.fsf@jogness.linutronix.de>
On 2026-09-22 19:35:26 [+0200], John Ogness wrote:
> > @@ -4643,12 +4637,11 @@ static void __wake_up_klogd(int val)
> > *
> > * This pairs with devkmsg_read:A and syslog_print:A.
> > */
> > - if (wq_has_sleeper(&log_wait) || /* LMM(__wake_up_klogd:A) */
> > - (val & PRINTK_PENDING_OUTPUT)) {
> > - this_cpu_or(printk_pending, val);
> > - irq_work_queue(this_cpu_ptr(&wake_up_klogd_work));
> > - }
> > - preempt_enable();
> > + if (wq_has_sleeper(&log_wait)) /* LMM(__wake_up_klogd:A) */
> > + irq_work_queue(&pending_wakeup_work);
> > +
> > + if (val & PRINTK_PENDING_OUTPUT)
> > + irq_work_queue(&pending_output_work);
>
> The ordering of operations has been reverse queued. Perhaps because
> irq_work is LIFO (implementation internal detail) and you wanted to
> preserve the current ordering? Or maybe this ordering was chosen because
> the code looks nicer. Either way, I think it doesn't matter if the
> legacy flushing occurs before/after waking the klogd waiter.
Hmm. I did not give much thinking into the ordering because it shouldn't
matter. We used to have "unlock" followed by "wakeup" in the irq-work
callback and this is what we have now given the LIFO ordering.
Having "wakeup" first might not take effect immediately because the
scheduler delays it or puts it on the current CPU and then it is delayed
until after the interrupt ("unlock") is done. So…
> Reviewed-by: John Ogness <john.ogness@linutronix.de>
Sebastian
prev parent reply other threads:[~2026-09-23 7:55 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-14 14:34 Sebastian Andrzej Siewior
2026-09-22 7:08 ` Sebastian Andrzej Siewior
2026-09-22 9:29 ` Petr Mladek
2026-09-22 13:18 ` John Ogness
2026-09-22 10:02 ` Petr Mladek
2026-09-22 10:06 ` Sebastian Andrzej Siewior
2026-09-22 17:35 ` John Ogness
2026-09-23 7:55 ` Sebastian Andrzej Siewior [this message]
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=20260923075512.SBaoMRXt@linutronix.de \
--to=bigeasy@linutronix.de \
--cc=john.ogness@linutronix.de \
--cc=linux-kernel@vger.kernel.org \
--cc=pmladek@suse.com \
--cc=rostedt@goodmis.org \
--cc=senozhatsky@chromium.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®