From: Petr Mladek <pmladek@suse.com>
To: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Cc: John Ogness <john.ogness@linutronix.de>,
Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>,
Steven Rostedt <rostedt@goodmis.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Thomas Gleixner <tglx@linutronix.de>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH printk 3/5] printk: use buffer pool for sprint buffers
Date: Fri, 25 Sep 2020 10:13:20 +0200 [thread overview]
Message-ID: <20200925081319.GJ29288@alley> (raw)
In-Reply-To: <20200924090653.GC541@jagdpanzerIV.localdomain>
On Thu 2020-09-24 18:06:53, Sergey Senozhatsky wrote:
> On (20/09/24 10:54), Petr Mladek wrote:
> > > Just a question:
> > >
> > > Can dynamic_textbuf be a PER_CPU array of five textbuf[1024] buffers
> > > (for normal printk, nmi, hard irq, soft irq and one extra buffer for
> > > recursive printk calls)?
> >
> > That would be my preferred fallback when the approach with
> > vsprintf(NULL, ) is not acceptable for some reasons.
>
> OK.
>
> > But I still think that calling vsprintf(NULL, ) is the most trivial
> > and good enough solution.
>
> It's probably good enough.
>
> > IMHO, the solution with per-CPU buffers is not that trivial, for
> > example:
> >
> > What if recursive printk() is interrupted by NMI and it causes
> > yet another recursion?
> >
> > Is one level of recursion enough?
>
> We might try the current approach - when we, for example, have
> recursion in printk_safe() we just end up writing data to the
> same per-CPU buffer. We need to limit the depth of recursion
> one way or another. With per-CPU counter we will just bail out
> of "deeply recursive printk" without attempting to store its
> messages; with the buffers approach we will write the data to
> a static buffer and see how badly it will be overlapped at the
> end. Just a thought.
It makes some sense but it has just another bunch of problems:
+ require some tricky code [*]
+ temporary buffers need extra care in panic()
+ does not guarantee that there is enough stack for the recursion
I think that limiting recursion to some level (3 or 5?) is much
easier and provide similar protection.
[*] We could reuse printk_safe but we would need to maintain it.
In fact, the code might be easier because it will not be needed
to read the buffer from other CPU. But it would need to be
tricky anyway.
Best Regards,
Petr
next prev parent reply other threads:[~2020-09-25 8:13 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-22 15:38 [PATCH printk 0/5] printk: remove logbuf_lock John Ogness
2020-09-22 15:38 ` [PATCH printk 1/5] printk: get new seq before enabling interrupts John Ogness
2020-09-23 14:17 ` Petr Mladek
2020-09-23 14:36 ` John Ogness
2020-09-22 15:38 ` [PATCH printk 2/5] printk: kmsg_dump_rewind_nolock: start from first record John Ogness
2020-09-23 14:52 ` Petr Mladek
2020-09-23 15:39 ` John Ogness
2020-09-22 15:38 ` [PATCH printk 3/5] printk: use buffer pool for sprint buffers John Ogness
2020-09-23 15:11 ` Petr Mladek
2020-09-23 15:21 ` David Laight
2020-09-23 16:41 ` Petr Mladek
2020-09-24 5:40 ` Sergey Senozhatsky
2020-09-24 8:45 ` Petr Mladek
2020-09-24 8:53 ` Sergey Senozhatsky
2020-09-24 9:49 ` Rasmus Villemoes
2020-09-25 8:15 ` Petr Mladek
2020-09-24 9:54 ` Rasmus Villemoes
2020-09-24 12:32 ` Rasmus Villemoes
2020-09-25 8:28 ` Petr Mladek
2020-09-30 8:06 ` Rasmus Villemoes
2020-09-30 8:51 ` Petr Mladek
2020-09-30 8:57 ` John Ogness
2020-09-30 13:35 ` Steven Rostedt
2020-09-30 14:32 ` David Laight
2020-10-01 7:15 ` Rasmus Villemoes
2020-10-01 7:58 ` Petr Mladek
2020-09-24 1:21 ` Sergey Senozhatsky
2020-09-24 6:17 ` Sergey Senozhatsky
2020-09-24 8:54 ` Petr Mladek
2020-09-24 9:06 ` Sergey Senozhatsky
2020-09-25 8:13 ` Petr Mladek [this message]
2020-09-22 15:38 ` [PATCH printk 4/5] printk: remove logbuf_lock, add syslog_lock John Ogness
2020-09-23 16:30 ` Petr Mladek
2020-09-24 8:45 ` Sergey Senozhatsky
2020-09-24 9:21 ` John Ogness
2020-09-22 15:38 ` [PATCH printk 5/5] printk: remove nmi safe buffers John Ogness
2020-09-23 16:36 ` Petr Mladek
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=20200925081319.GJ29288@alley \
--to=pmladek@suse.com \
--cc=gregkh@linuxfoundation.org \
--cc=john.ogness@linutronix.de \
--cc=linux-kernel@vger.kernel.org \
--cc=rostedt@goodmis.org \
--cc=sergey.senozhatsky.work@gmail.com \
--cc=sergey.senozhatsky@gmail.com \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.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®