From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753175AbdHOC7t (ORCPT ); Mon, 14 Aug 2017 22:59:49 -0400 Received: from mail-pg0-f65.google.com ([74.125.83.65]:38367 "EHLO mail-pg0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750989AbdHOC7r (ORCPT ); Mon, 14 Aug 2017 22:59:47 -0400 From: Sergey Senozhatsky To: Petr Mladek , Steven Rostedt Cc: Jan Kara , Andrew Morton , Peter Zijlstra , "Rafael J . Wysocki" , Eric Biederman , Greg Kroah-Hartman , Jiri Slaby , Pavel Machek , Andreas Mohr , Tetsuo Handa , linux-kernel@vger.kernel.org, Sergey Senozhatsky , Sergey Senozhatsky Subject: [RFC][PATCHv5 00/13] printk: introduce printing kernel thread Date: Tue, 15 Aug 2017 11:56:12 +0900 Message-Id: <20170815025625.1977-1-sergey.senozhatsky@gmail.com> X-Mailer: git-send-email 2.14.1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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