Messages in this thread |  | | From | Sean Hudson <> | Subject | [RFC PATCH v2 0/2] printk: Shared kernel logging | Date | Tue, 4 Oct 2016 16:08:53 -0500 |
| |
This patch set is based on Linus' v4.8-rc8 tag.
This debug feature allows the kernel to use an external buffer and control block for kernel log messages. The feature is controlled by an optional command line parameter. The existing buffer and control block can contain existing log messages from previous boot cycles and/or the bootloader. The command line parameter was chosen for flexibility, cross arch portability, and the ability to dynamically enable/disable this feature. The parameter specifies the address of a control block used to replace the default log buffer. Existing bootloader and kernel log messages are kept, in order, inside the new buffer. After a boot that preserves the buffer contents, a bootloader can display both kernel and bootloader log entries from multiple, previous boots. It also allows the kernel to display bootloader log entries along with its own messages.
This feature is intended for debug purposes and has no effect unless the command line parameter is specified. Further, it validates the passed control block carefully and if any checks fail, it falls back to the default behaviour. As such, it can be left enabled by default.
Memory Reservation
This feature expects the bootloader to reserve/preserve the shared buffer memory. This reservation needs to prevent the kernel from overwriting the external log control block and log entries. In my testing, I've used the 'fdt' commands in uboot to dynamically inject reserved memory regions via the DT to the kernel.
Sean Hudson (2): printk: collect offsets into replaceable structure printk: external log buffer (CONFIG_LOGBUFFER)
init/Kconfig | 12 + init/main.c | 7 + kernel/printk/printk.c | 599 +++++++++++++++++++++++++++++++++++-------------- 3 files changed, 451 insertions(+), 167 deletions(-)
Changes since v1: Fix CONFIG_PRINTK disabled build
-- 2.7.4
|  |