All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCHv7 0/8] printk: use printk_safe to handle printk() recursive calls
@ 2016-12-27 14:16 Sergey Senozhatsky
  2016-12-27 14:16 ` [PATCHv7 1/8] printk: use vprintk_func in vprintk() Sergey Senozhatsky
                   ` (8 more replies)
  0 siblings, 9 replies; 55+ messages in thread
From: Sergey Senozhatsky @ 2016-12-27 14:16 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Petr Mladek, Linus Torvalds, Jan Kara, Tejun Heo, Calvin Owens,
	Steven Rostedt, Ingo Molnar, Peter Zijlstra, Andy Lutomirski,
	Peter Hurley, linux-kernel, Sergey Senozhatsky,
	Sergey Senozhatsky

Hello,

	This patch set extends a lock-less NMI per-cpu buffers idea to
handle recursive printk() calls. The basic mechanism is pretty much the
same -- at the beginning of a deadlock-prone section we switch to lock-less
printk callback, and return back to a default printk implementation at the
end; the messages are getting flushed to a logbuf buffer from a safer
context.

See patch 0006 for examples of possible deadlock scenarios that are
handled by printk-safe.


v7:
-- don't touch printk_nmi_enter/exit
-- new printk_safe macros naming: printk_safe_enter_irqsave/exit_irqrestore
-- added printk_safe_enter_irq/printk_safe_exit_irq
-- added patch that converts the rest of printk.c to printk-safe
-- fix build error on !NMI configs
-- improved lost_messages reporting

v6:
-- re-based
-- addressed Petr's review (added comments; moved lost accounting to seq buf)
...

[against next-20161224 + "printk: always report dropped messages" patch set]

Sergey Senozhatsky (8):
  printk: use vprintk_func in vprintk()
  printk: rename nmi.c and exported api
  printk: introduce per-cpu safe_print seq buffer
  printk: always use deferred printk when flush printk_safe lines
  printk: report lost messages in printk safe/nmi contexts
  printk: use printk_safe buffers in printk
  printk: remove zap_locks() function
  printk: convert the rest to printk-safe

 include/linux/printk.h                 |  21 ++-
 init/Kconfig                           |  16 ++-
 init/main.c                            |   2 +-
 kernel/kexec_core.c                    |   2 +-
 kernel/panic.c                         |   4 +-
 kernel/printk/Makefile                 |   2 +-
 kernel/printk/internal.h               |  79 ++++++-----
 kernel/printk/printk.c                 | 220 +++++++++++++------------------
 kernel/printk/{nmi.c => printk_safe.c} | 234 +++++++++++++++++++++++----------
 lib/nmi_backtrace.c                    |   2 +-
 10 files changed, 335 insertions(+), 247 deletions(-)
 rename kernel/printk/{nmi.c => printk_safe.c} (53%)

-- 
2.11.0

^ permalink raw reply	[flat|nested] 55+ messages in thread

end of thread, other threads:[~2017-02-23  9:23 UTC | newest]

Thread overview: 55+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-12-27 14:16 [PATCHv7 0/8] printk: use printk_safe to handle printk() recursive calls Sergey Senozhatsky
2016-12-27 14:16 ` [PATCHv7 1/8] printk: use vprintk_func in vprintk() Sergey Senozhatsky
2016-12-27 14:16 ` [PATCHv7 2/8] printk: rename nmi.c and exported api Sergey Senozhatsky
2017-01-04 13:07   ` Petr Mladek
2017-02-01 15:48   ` Steven Rostedt
2017-02-01 15:50     ` Steven Rostedt
2017-02-23  7:50   ` Geert Uytterhoeven
2017-02-23  8:02     ` Sergey Senozhatsky
2017-02-23  9:23       ` Geert Uytterhoeven
2016-12-27 14:16 ` [PATCHv7 3/8] printk: introduce per-cpu safe_print seq buffer Sergey Senozhatsky
2017-01-04 13:31   ` Petr Mladek
2017-01-05  1:01     ` Sergey Senozhatsky
2017-02-01 15:52   ` Steven Rostedt
2016-12-27 14:16 ` [PATCHv7 4/8] printk: always use deferred printk when flush printk_safe lines Sergey Senozhatsky
2017-02-01 16:06   ` Steven Rostedt
2017-02-02  6:05     ` Sergey Senozhatsky
2017-02-02 15:37       ` Petr Mladek
2017-02-02 15:52         ` Petr Mladek
2017-02-03  2:04           ` Sergey Senozhatsky
2017-02-03 11:18             ` Petr Mladek
2017-02-06  1:48               ` Sergey Senozhatsky
2017-02-06  2:08                 ` Sergey Senozhatsky
2017-02-06 12:16                   ` Petr Mladek
2017-02-06 13:27                     ` Steven Rostedt
2017-02-06 16:42                       ` Sergey Senozhatsky
2017-02-06 16:55                         ` Steven Rostedt
2016-12-27 14:16 ` [PATCHv7 5/8] printk: report lost messages in printk safe/nmi contexts Sergey Senozhatsky
2017-01-04 14:46   ` Petr Mladek
2017-01-05  1:01     ` Sergey Senozhatsky
2017-02-01 16:37   ` Steven Rostedt
2017-02-02  2:02     ` Sergey Senozhatsky
2017-02-02 14:34       ` Steven Rostedt
2017-02-02 16:13         ` Petr Mladek
2017-02-03  1:57         ` Sergey Senozhatsky
2017-02-03  3:13           ` Steven Rostedt
2016-12-27 14:16 ` [PATCHv7 6/8] printk: use printk_safe buffers in printk Sergey Senozhatsky
2017-01-31 17:27   ` Ross Zwisler
2017-02-01  9:06     ` Jan Kara
2017-02-01  9:37       ` Peter Zijlstra
2017-02-01 15:39         ` Petr Mladek
2017-02-01 16:15           ` Peter Zijlstra
2017-02-01 16:41             ` Steven Rostedt
2017-02-02  2:11           ` Sergey Senozhatsky
2017-02-02  9:07             ` Peter Zijlstra
2017-02-02 10:03               ` Sergey Senozhatsky
2017-02-02 15:20                 ` Petr Mladek
2017-02-03  2:45                   ` Sergey Senozhatsky
2017-02-02  1:59     ` Sergey Senozhatsky
2017-02-01 17:04   ` Steven Rostedt
2017-02-02  2:13     ` Sergey Senozhatsky
2016-12-27 14:16 ` [PATCHv7 7/8] printk: remove zap_locks() function Sergey Senozhatsky
2016-12-27 14:16 ` [PATCHv7 8/8] printk: convert the rest to printk-safe Sergey Senozhatsky
2017-01-04 16:28   ` Petr Mladek
2017-01-05  1:00     ` Sergey Senozhatsky
2017-01-05 16:58 ` [PATCHv7 0/8] printk: use printk_safe to handle printk() recursive calls Petr Mladek

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.