From: John Ogness <john.ogness@linutronix.de> To: linux-kernel@vger.kernel.org Cc: Peter Zijlstra <peterz@infradead.org>, Petr Mladek <pmladek@suse.com>, Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>, Steven Rostedt <rostedt@goodmis.org>, Linus Torvalds <torvalds@linux-foundation.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Andrea Parri <andrea.parri@amarulasolutions.com>, Thomas Gleixner <tglx@linutronix.de>, Sergey Senozhatsky <sergey.senozhatsky@gmail.com>, Brendan Higgins <brendanhiggins@google.com> Subject: [RFC PATCH v4 0/9] printk: new ringbuffer implementation Date: Thu, 8 Aug 2019 00:32:25 +0206 Message-ID: <20190807222634.1723-1-john.ogness@linutronix.de> (raw) Hello, This is a follow-up RFC on the work to re-implement much of the core of printk. The threads for the previous RFC versions are here: v1[0], v2[1], v3[2]. This series only builds upon v3 (i.e. the first part of this series is exactly v3). The main purpose of this series is to replace the current printk ringbuffer with the new ringbuffer. As was discussed[3], this is a conservative first step to rework printk. For example, all logbuf_lock usage is kept even though the new ringbuffer does not require it. This avoids any side-effect bugs in case the logbuf_lock is (unintentionally) synchronizing more than just the ringbuffer. However, this also means that the series does not bring any improvements, just swapping out implementations. A future patch will remove the logbuf_lock. Except for the test module (patches 2 and 6), the rest may already be interesting for mainline as is. I have tested the various interfaces (console, /dev/kmsg, syslog, kmsg_dump) and their features and all looks good AFAICT. The patches can be broken down as follows: 1-2: the previously posted RFCv3 3-7: addresses minor issues from RFCv3 8: adds new high-level ringbuffer functions to support printk (nothing involving new memory barriers) 9: replace the ringbuffer usage in printk.c One important thing to know (as is mentioned in the commit message of patch 9), there are 2 externally visible changes: - vmcore info changes - powerpc powernv/opal memdump of log discontinued I have no idea how acceptable these changes are. I will not be posting any further printk patches until I have received some feedback on this. I appreciate all the help so far. I realize that this is a lot of code to go through. The series is based on 5.3-rc3. I would encourage people to apply the series and give it a run. I expect that you will not notice any difference with your printk behaviour. John Ogness [0] https://lkml.kernel.org/r/20190212143003.48446-1-john.ogness@linutronix.de [1] https://lkml.kernel.org/r/20190607162349.18199-1-john.ogness@linutronix.de [2] https://lkml.kernel.org/r/20190727013333.11260-1-john.ogness@linutronix.de [3] https://lkml.kernel.org/r/87y35hn6ih.fsf@linutronix.de John Ogness (9): printk-rb: add a new printk ringbuffer implementation printk-rb: add test module printk-rb: fix missing includes/exports printk-rb: initialize new descriptors as invalid printk-rb: remove extra data buffer size allocation printk-rb: adjust test module ringbuffer sizes printk-rb: increase size of seq and size variables printk-rb: new functionality to support printk printk: use a new ringbuffer implementation arch/powerpc/platforms/powernv/opal.c | 22 +- include/linux/kmsg_dump.h | 6 +- include/linux/printk.h | 12 - kernel/printk/Makefile | 5 + kernel/printk/dataring.c | 809 ++++++++++++++++++ kernel/printk/dataring.h | 108 +++ kernel/printk/numlist.c | 376 +++++++++ kernel/printk/numlist.h | 72 ++ kernel/printk/printk.c | 745 +++++++++-------- kernel/printk/ringbuffer.c | 1079 +++++++++++++++++++++++++ kernel/printk/ringbuffer.h | 354 ++++++++ kernel/printk/test_prb.c | 256 ++++++ 12 files changed, 3450 insertions(+), 394 deletions(-) create mode 100644 kernel/printk/dataring.c create mode 100644 kernel/printk/dataring.h create mode 100644 kernel/printk/numlist.c create mode 100644 kernel/printk/numlist.h create mode 100644 kernel/printk/ringbuffer.c create mode 100644 kernel/printk/ringbuffer.h create mode 100644 kernel/printk/test_prb.c -- 2.20.1
next reply index Thread overview: 131+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-08-07 22:26 John Ogness [this message] 2019-08-07 22:26 ` [RFC PATCH v4 1/9] printk-rb: add a new printk " John Ogness 2019-08-20 8:15 ` numlist_pop(): " Petr Mladek 2019-08-21 5:41 ` John Ogness 2019-09-04 12:19 ` Peter Zijlstra 2019-08-20 8:22 ` assign_desc() barriers: " Petr Mladek 2019-08-20 14:14 ` Petr Mladek 2019-08-21 5:52 ` John Ogness 2019-08-22 11:53 ` Petr Mladek 2019-08-25 2:06 ` John Ogness 2019-08-26 8:21 ` John Ogness 2019-08-20 8:55 ` comments style: " Petr Mladek 2019-08-20 9:27 ` Sergey Senozhatsky 2019-08-21 5:46 ` John Ogness 2019-08-22 13:50 ` Petr Mladek 2019-08-22 17:38 ` Andrea Parri 2019-08-23 10:47 ` Petr Mladek 2019-08-23 14:27 ` Andrea Parri 2019-08-23 9:49 ` Sergey Senozhatsky 2019-08-23 5:54 ` Sergey Senozhatsky 2019-08-23 10:29 ` Petr Mladek 2019-08-21 5:42 ` John Ogness 2019-08-22 12:44 ` Petr Mladek 2019-08-20 13:50 ` dataring_push() barriers " Petr Mladek 2019-08-25 2:42 ` John Ogness 2019-08-27 14:36 ` Petr Mladek 2019-08-28 13:43 ` John Ogness 2019-08-20 15:12 ` datablock reuse races " Petr Mladek 2019-08-23 9:21 ` numlist_push() barriers " Petr Mladek 2019-08-26 8:34 ` Andrea Parri 2019-08-26 8:43 ` Andrea Parri 2019-08-26 14:10 ` Petr Mladek 2019-08-26 16:01 ` Andrea Parri 2019-08-26 22:36 ` John Ogness 2019-08-27 7:40 ` Petr Mladek 2019-08-27 14:28 ` John Ogness 2019-08-27 15:07 ` Petr Mladek 2019-08-28 10:24 ` John Ogness 2019-08-23 17:18 ` numlist API " Petr Mladek 2019-08-26 23:57 ` John Ogness 2019-08-27 13:03 ` Petr Mladek 2019-08-28 7:13 ` John Ogness 2019-08-28 8:58 ` Petr Mladek 2019-08-28 14:03 ` John Ogness 2019-08-29 11:28 ` Petr Mladek 2019-09-03 7:58 ` Sergey Senozhatsky 2019-08-30 14:48 ` dataring " Petr Mladek 2019-08-07 22:26 ` [RFC PATCH v4 2/9] printk-rb: add test module John Ogness 2019-08-07 22:26 ` [RFC PATCH v4 3/9] printk-rb: fix missing includes/exports John Ogness 2019-08-07 22:26 ` [RFC PATCH v4 4/9] printk-rb: initialize new descriptors as invalid John Ogness 2019-08-20 9:23 ` Petr Mladek 2019-08-20 10:16 ` Sergey Senozhatsky 2019-08-21 5:56 ` John Ogness 2019-08-07 22:26 ` [RFC PATCH v4 5/9] printk-rb: remove extra data buffer size allocation John Ogness 2019-08-07 22:26 ` [RFC PATCH v4 6/9] printk-rb: adjust test module ringbuffer sizes John Ogness 2019-08-19 21:29 ` [PATCH] printk-rb: fix test module macro usage John Ogness 2019-08-07 22:26 ` [RFC PATCH v4 7/9] printk-rb: increase size of seq and size variables John Ogness 2019-08-07 22:26 ` [RFC PATCH v4 8/9] printk-rb: new functionality to support printk John Ogness 2019-08-20 9:59 ` Sergey Senozhatsky 2019-08-21 5:47 ` John Ogness 2019-08-07 22:26 ` [RFC PATCH v4 9/9] printk: use a new ringbuffer implementation John Ogness 2019-08-08 19:07 ` Linus Torvalds 2019-08-08 22:55 ` John Ogness 2019-08-08 23:33 ` Linus Torvalds 2019-08-08 23:45 ` Steven Rostedt 2019-08-09 0:21 ` Linus Torvalds 2019-08-09 0:48 ` Steven Rostedt 2019-08-09 1:15 ` Linus Torvalds 2019-08-09 11:15 ` Thomas Gleixner 2019-08-09 16:00 ` Linus Torvalds 2019-08-09 20:07 ` Thomas Gleixner 2019-08-09 20:20 ` Linus Torvalds 2019-08-09 6:14 ` Peter Zijlstra 2019-08-09 7:08 ` John Ogness 2019-08-09 15:57 ` Linus Torvalds 2019-08-10 5:53 ` Thomas Gleixner 2019-09-10 3:19 ` Sergey Senozhatsky 2019-08-12 9:54 ` Geert Uytterhoeven 2019-08-16 5:46 ` Dave Young 2019-08-16 5:54 ` Dave Young 2019-08-16 9:40 ` John Ogness 2019-09-04 12:35 ` [RFC PATCH v4 0/9] printk: " Peter Zijlstra 2019-09-05 13:05 ` Petr Mladek 2019-09-05 14:31 ` Peter Zijlstra 2019-09-05 15:38 ` Thomas Gleixner 2019-09-05 16:11 ` Steven Rostedt 2019-09-05 21:10 ` John Ogness 2019-09-06 9:39 ` Petr Mladek 2019-09-09 14:11 ` printk meeting at LPC Thomas Gleixner 2019-09-13 13:26 ` John Ogness 2019-09-13 14:48 ` Daniel Vetter 2019-09-15 13:47 ` John Ogness 2019-09-16 8:44 ` Daniel Vetter 2019-09-16 4:30 ` Tetsuo Handa 2019-09-16 10:46 ` Petr Mladek 2019-09-16 13:43 ` Steven Rostedt 2019-09-16 14:28 ` John Ogness 2019-09-17 8:11 ` Petr Mladek 2019-09-17 7:52 ` Petr Mladek 2019-09-17 13:02 ` Steven Rostedt 2019-09-17 13:12 ` Greg Kroah-Hartman 2019-09-17 13:37 ` Steven Rostedt 2019-09-17 14:08 ` Tetsuo Handa 2019-09-17 7:51 ` Sergey Senozhatsky 2019-09-18 1:25 ` Sergey Senozhatsky 2019-09-18 2:08 ` Steven Rostedt 2019-09-18 2:36 ` Sergey Senozhatsky 2019-09-18 5:19 ` Sergey Senozhatsky 2019-09-18 7:42 ` John Ogness 2019-09-18 8:10 ` Sergey Senozhatsky 2019-09-18 9:05 ` John Ogness 2019-09-18 9:11 ` Sergey Senozhatsky 2019-09-18 16:41 ` Petr Mladek 2019-09-18 16:48 ` Steven Rostedt 2019-09-24 14:24 ` Petr Mladek 2019-09-19 8:06 ` Daniel Vetter 2019-09-18 7:33 ` John Ogness 2019-09-18 8:08 ` Sergey Senozhatsky 2019-10-04 14:48 ` Tony Asleson 2019-10-07 12:01 ` Petr Mladek 2019-09-06 9:06 ` [RFC PATCH v4 0/9] printk: new ringbuffer implementation Peter Zijlstra 2019-09-06 10:09 ` Sergey Senozhatsky 2019-09-06 10:49 ` Peter Zijlstra 2019-09-06 13:44 ` Sergey Senozhatsky 2019-09-06 12:42 ` Petr Mladek 2019-09-06 14:01 ` Peter Zijlstra 2019-09-06 14:22 ` Peter Zijlstra 2019-09-06 19:53 ` Sergey Senozhatsky 2019-09-06 22:47 ` John Ogness 2019-09-08 22:18 ` Peter Zijlstra 2019-09-10 3:22 ` Sergey Senozhatsky
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=20190807222634.1723-1-john.ogness@linutronix.de \ --to=john.ogness@linutronix.de \ --cc=andrea.parri@amarulasolutions.com \ --cc=brendanhiggins@google.com \ --cc=gregkh@linuxfoundation.org \ --cc=linux-kernel@vger.kernel.org \ --cc=peterz@infradead.org \ --cc=pmladek@suse.com \ --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
LKML Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/lkml/0 lkml/git/0.git git clone --mirror https://lore.kernel.org/lkml/1 lkml/git/1.git git clone --mirror https://lore.kernel.org/lkml/2 lkml/git/2.git git clone --mirror https://lore.kernel.org/lkml/3 lkml/git/3.git git clone --mirror https://lore.kernel.org/lkml/4 lkml/git/4.git git clone --mirror https://lore.kernel.org/lkml/5 lkml/git/5.git git clone --mirror https://lore.kernel.org/lkml/6 lkml/git/6.git git clone --mirror https://lore.kernel.org/lkml/7 lkml/git/7.git git clone --mirror https://lore.kernel.org/lkml/8 lkml/git/8.git git clone --mirror https://lore.kernel.org/lkml/9 lkml/git/9.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 lkml lkml/ https://lore.kernel.org/lkml \ linux-kernel@vger.kernel.org public-inbox-index lkml Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.linux-kernel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git