From: John Ogness <john.ogness@linutronix.de>
To: Marcos Paulo de Souza <mpdesouza@suse.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Petr Mladek <pmladek@suse.com>,
Steven Rostedt <rostedt@goodmis.org>,
Sergey Senozhatsky <senozhatsky@chromium.org>,
Jason Wessel <jason.wessel@windriver.com>,
Daniel Thompson <danielt@kernel.org>,
Douglas Anderson <dianders@chromium.org>
Cc: linux-kernel@vger.kernel.org,
kgdb-bugreport@lists.sourceforge.net,
Marcos Paulo de Souza <mpdesouza@suse.com>
Subject: Re: [PATCH v5 2/5] printk: nbcon: Introduce KDB helpers
Date: Wed, 01 Oct 2025 17:02:41 +0206 [thread overview]
Message-ID: <84h5wihdqu.fsf@jogness.linutronix.de> (raw)
In-Reply-To: <20250930-nbcon-kgdboc-v5-2-8125893cfb4f@suse.com>
On 2025-09-30, Marcos Paulo de Souza <mpdesouza@suse.com> wrote:
> diff --git a/kernel/printk/nbcon.c b/kernel/printk/nbcon.c
> index 558ef31779760340ce42608294d91d5401239f1d..c23abed5933527cb7c6bcc42057fadbb44a43446 100644
> --- a/kernel/printk/nbcon.c
> +++ b/kernel/printk/nbcon.c
> @@ -1855,3 +1855,69 @@ void nbcon_device_release(struct console *con)
> console_srcu_read_unlock(cookie);
> }
> EXPORT_SYMBOL_GPL(nbcon_device_release);
> +
> +/**
> + * nbcon_kdb_try_acquire - Try to acquire nbcon console, enter unsafe
> + * section, and initialized nbcon write context
initialize ---^^^^^^^^^^^
And technically it is not initializing the write context, just the
console ownership context. I'm not sure it is really necessary to
mention that.
> + * @con: The nbcon console to acquire
> + * @wctxt: The nbcon write context to be used on success
> + *
> + * Context: Under console_srcu_read_lock() for emiting a single kdb message
emitting ---^^^^^^^
"./scripts/checkpatch.pl --codespell" is your friend. ;-)
> + * using the given con->write_atomic() callback. Can be called
> + * only when the console is usable at the moment.
> + *
> + * Return: True if the console was acquired. False otherwise.
> + *
> + * kdb emits messages on consoles registered for printk() without
> + * storing them into the ring buffer. It has to acquire the console
> + * ownerhip so that it could call con->write_atomic() callback a safe way.
> + *
> + * This function acquires the nbcon console using priority NBCON_PRIO_EMERGENCY
> + * and marks it unsafe for handover/takeover.
> + */
> +bool nbcon_kdb_try_acquire(struct console *con,
> + struct nbcon_write_context *wctxt)
> +{
> + struct nbcon_context *ctxt = &ACCESS_PRIVATE(wctxt, ctxt);
> +
> + memset(ctxt, 0, sizeof(*ctxt));
> + ctxt->console = con;
> + ctxt->prio = NBCON_PRIO_EMERGENCY;
> +
> + if (!nbcon_context_try_acquire(ctxt, false))
> + return false;
> +
> + if (!nbcon_context_enter_unsafe(ctxt))
> + return false;
> +
> + return true;
> +}
> +
> +/**
> + * nbcon_kdb_release - Exit unsafe section and release the nbcon console
> + *
> + * @wctxt: The nbcon write context initialized by a successful
> + * nbcon_kdb_try_acquire()
> + *
> + * Context: Under console_srcu_read_lock() for emiting a single kdb message
emitting ---^^^^^^^
> + * using the given con->write_atomic() callback. Can be called
> + * only when the console is usable at the moment.
I do not think the "Context" is relevant. It must be called if
a previous call to nbcon_kdb_try_acquire() was successful.
> + */
> +void nbcon_kdb_release(struct nbcon_write_context *wctxt)
> +{
> + struct nbcon_context *ctxt = &ACCESS_PRIVATE(wctxt, ctxt);
> +
> + if (!nbcon_context_exit_unsafe(ctxt))
> + return;
> +
> + nbcon_context_release(ctxt);
> +
> + /*
> + * Flush any new printk() messages added when the console was blocked.
> + * Only the console used by the given write context was blocked.
> + * The console was locked only when the write_atomic() callback
> + * was usable.
> + */
> + __nbcon_atomic_flush_pending_con(ctxt->console,
> + prb_next_reserve_seq(prb), false);
This can all be one line. 100 characters is the official limit for code.
> +}
next prev parent reply other threads:[~2025-10-01 14:56 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-30 17:21 [PATCH v5 0/5] Handle NBCON consoles on KDB Marcos Paulo de Souza
2025-09-30 17:21 ` [PATCH v5 1/5] printk: nbcon: Export console_is_usable Marcos Paulo de Souza
2025-10-01 14:36 ` John Ogness
2025-09-30 17:21 ` [PATCH v5 2/5] printk: nbcon: Introduce KDB helpers Marcos Paulo de Souza
2025-10-01 14:56 ` John Ogness [this message]
2025-10-02 11:23 ` Marcos Paulo de Souza
2025-10-02 19:03 ` Marcos Paulo de Souza
2025-10-06 8:31 ` John Ogness
2025-10-06 13:58 ` Petr Mladek
2025-09-30 17:21 ` [PATCH v5 3/5] printk: nbcon: Allow KDB to acquire the NBCON context Marcos Paulo de Souza
2025-10-01 15:05 ` John Ogness
2025-09-30 17:21 ` [PATCH v5 4/5] printk: nbcon: Export nbcon_write_context_set_buf Marcos Paulo de Souza
2025-10-01 15:08 ` John Ogness
2025-09-30 17:21 ` [PATCH v5 5/5] kdb: Adapt kdb_msg_write to work with NBCON consoles Marcos Paulo de Souza
2025-10-01 15:21 ` John Ogness
2025-10-02 14:01 ` [PATCH v5 0/5] Handle NBCON consoles on KDB Daniel Thompson
2025-10-02 16:20 ` Marcos Paulo de Souza
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=84h5wihdqu.fsf@jogness.linutronix.de \
--to=john.ogness@linutronix.de \
--cc=danielt@kernel.org \
--cc=dianders@chromium.org \
--cc=gregkh@linuxfoundation.org \
--cc=jason.wessel@windriver.com \
--cc=kgdb-bugreport@lists.sourceforge.net \
--cc=linux-kernel@vger.kernel.org \
--cc=mpdesouza@suse.com \
--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 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.