Messages in this thread | | | From | Sergey Senozhatsky <> | Subject | [RFC][PATCHv5 00/13] printk: introduce printing kernel thread | Date | Tue, 15 Aug 2017 11:56:12 +0900 |
| |
Hello,
RFC
This patch set adds a printk() kernel thread which let us to print kernel messages to the console from a non-atomic/schedule-able context, avoiding different sort of lockups, stalls, etc.
Offloading threshold is now in "seconds spent in console_unlock()", not in "lines printed", this lets us to be a little bit more 'watchdog-aware' in printk. But we still can (and probably must) do better, tho. May be there will be a new watchdog API some day, so will be able to make better decisions in printk.
And a whole bunch of other improvements and tweaks. Like preemption in console_unlock(), and so on. Any comments and thoughts are appreciated.
v4->v5 -- split some of the patches -- make offloading time-based (not number of lines printed) -- move offloading control to per-CPU -- remove a pessimistic offloading spin from console_unlock() -- adjust printk_kthread CPU affinity mask -- disable preemption in console_unlock() -- always offload printing from user space processes -- add sync version of emergency_begin API -- offload from printk_kthread as well, to periodically up() console_sem -- limit `atomic_print_limit' to `watchdog_thresh' -- and some other changes...
v3->v4 (Petr, Jan) -- add syscore notifiers -- fix 0001 compilation warnings -- use proper CPU notifiers return values
v2->v3 (Petr, Pavel, Andreas): -- rework offloading -- use PM notifiers -- dropped some patches, etc. etc.
v1->v2: -- introduce printk_emergency mode and API to switch it on/off -- move printk_pending out of per-CPU memory -- add printk emergency_mode sysfs node -- switch sysrq handlers (some of them) to printk_emergency -- cleanus/etc.
Sergey Senozhatsky (13): printk: move printk_pending out of per-cpu printk: introduce printing kernel thread printk: add sync printk_emergency API printk: add enforce_emergency parameter printk: enable printk offloading printk: register PM notifier printk: register syscore notifier printk: set watchdog_thresh as maximum value for atomic_print_limit printk: add auto-emergency enforcement mechanism printk: force printk_kthread to offload printing printk: always offload printing from user-space processes printk: do not cond_resched() when we can offload printk: move offloading logic to per-cpu
Documentation/admin-guide/kernel-parameters.txt | 17 + include/linux/console.h | 5 + kernel/printk/printk.c | 435 ++++++++++++++++++++++-- 3 files changed, 433 insertions(+), 24 deletions(-)
-- 2.14.1
| |