linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Linus Torvalds <torvalds@linux-foundation.org>
To: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
Cc: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>,
	Joe Perches <joe@perches.com>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Petr Mladek <pmladek@suse.cz>, Tejun Heo <tj@kernel.org>,
	Calvin Owens <calvinowens@fb.com>,
	Steven Rostedt <rostedt@goodmis.org>,
	Andrew Morton <akpm@linux-foundation.org>
Subject: Re: linux.git: printk() problem
Date: Mon, 24 Oct 2016 21:15:41 -0700	[thread overview]
Message-ID: <CA+55aFzW5YEXBy3hyrML5P87_FmQ_MDCDAodDwge6zwOOp9zkw@mail.gmail.com> (raw)
In-Reply-To: <20161025040617.GA565@swordfish>

On Mon, Oct 24, 2016 at 9:06 PM, Sergey Senozhatsky
<sergey.senozhatsky.work@gmail.com> wrote:
>
> 1) the way we dumpstack on x86 (at least on x86) is a spaghetti of
> printk() and pr_cont() calls. for instance, arch/x86/kernel/dumpstack_64.c
> show_regs() does pr_cont() to print out the registers, while the stack and
> backtrace are printed with printk(). so, I assume, the backtrace now will
> look a bit upside-down, because cont lines are printed with the delay.
> correct?

No. Most cont lines never hit the delay, because when the line is
completed, it is flushed (and then printed synchronously, assuming it
can get the console lock).

So the timeout only ever comes into effect if the line isn't completed
in time at all. Which is actually very rare, and never happens for the
"let's print things out in multiple chinks because we're using a
loop".

Similarly, if a new printk() happens due to interleaving, the previous
buffered line is always flushed first, so buffering never causes
out-of-order behavior.

Basically, the only time the timer actually does anything is if
something just does a printk() without a newline, and no other
printouts happen for the next 0.1s.

> 2) flush on oops.

Again, really not an issue for the exact reason above: nothing is ever
buffered when something new is printed.

And all you need to guarantee that last line of the oops itself is
printed is that it has a newline.

So again, the timer only matters for the exceptional case, not for the
normal situation. It's literally there to guarantee basic timeliness.

         Linus

  parent reply	other threads:[~2016-10-25  4:23 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-12 13:30 linux.git: printk() problem Tetsuo Handa
2016-10-12 14:35 ` Michal Hocko
2016-10-12 16:08   ` Joe Perches
2016-10-13  6:26     ` Michal Hocko
2016-10-13  9:29       ` Joe Perches
2016-10-13 10:04         ` Michal Hocko
2016-10-13 10:20           ` Joe Perches
2016-10-13 11:06             ` Michal Hocko
2016-10-12 15:47 ` Linus Torvalds
2016-10-12 16:16   ` Joe Perches
2016-10-12 16:54     ` Linus Torvalds
2016-10-12 18:50       ` [PATCH] acpi_os_vprintf: Use printk_get_level() to avoid unnecessary KERN_CONT Joe Perches
2016-10-13 21:59         ` Rafael J. Wysocki
2016-10-23  9:22   ` linux.git: printk() problem Geert Uytterhoeven
2016-10-23 18:11     ` Linus Torvalds
2016-10-23 19:06       ` Joe Perches
2016-10-23 19:32         ` Linus Torvalds
2016-10-23 19:46           ` Linus Torvalds
2016-10-24 11:15             ` Geert Uytterhoeven
2016-10-24 14:08             ` Sergey Senozhatsky
2016-10-24 14:23               ` Sergey Senozhatsky
2016-10-24 17:54               ` Linus Torvalds
2016-10-24 17:55                 ` Linus Torvalds
2016-10-25  1:55                   ` Sergey Senozhatsky
2016-10-25  2:06                     ` Linus Torvalds
2016-10-25  2:22                       ` Linus Torvalds
2016-10-25  4:06                         ` Sergey Senozhatsky
2016-10-25  4:13                           ` Joe Perches
2016-10-25  4:15                           ` Linus Torvalds [this message]
2016-10-25  4:44                             ` Sergey Senozhatsky
2016-10-25 14:44                         ` Petr Mladek
2016-11-09 15:47                         ` Petr Mladek
2016-10-25  2:24                     ` Sergey Senozhatsky
2016-10-23 20:33           ` Joe Perches
2016-10-23 21:13             ` Linus Torvalds
2016-10-25 14:42       ` Steven Rostedt

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=CA+55aFzW5YEXBy3hyrML5P87_FmQ_MDCDAodDwge6zwOOp9zkw@mail.gmail.com \
    --to=torvalds@linux-foundation.org \
    --cc=akpm@linux-foundation.org \
    --cc=calvinowens@fb.com \
    --cc=geert@linux-m68k.org \
    --cc=joe@perches.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=penguin-kernel@i-love.sakura.ne.jp \
    --cc=pmladek@suse.cz \
    --cc=rostedt@goodmis.org \
    --cc=sergey.senozhatsky.work@gmail.com \
    --cc=sergey.senozhatsky@gmail.com \
    --cc=tj@kernel.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;
as well as URLs for NNTP newsgroup(s).