From: John Ogness <john.ogness@linutronix.de> Date: Mon, 19 Feb 2024 17:35:49 +0000 Subject: [PATCH 15/48] printk: nbcon: Do not rely on proxy headers The headers kernel.h, serial_core.h, and console.h allow for the definitions of many types and functions from other headers. Rather than relying on these as proxy headers, explicitly include all headers providing needed definitions. Also sort the list alphabetically to be able to easily detect duplicates. Suggested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: John Ogness <john.ogness@linutronix.de> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> --- kernel/printk/internal.h | 8 ++++++-- kernel/printk/nbcon.c | 12 +++++++++++- kernel/printk/printk_ringbuffer.h | 2 ++ 3 files changed, 19 insertions(+), 3 deletions(-) Index: linux-6.8.2-rt10/kernel/printk/internal.h =================================================================== @ linux-6.8.2-rt10/kernel/printk/internal.h:5 @ /* * internal.h - printk internal definitions */ -#include <linux/percpu.h> #include <linux/console.h> -#include "printk_ringbuffer.h" +#include <linux/percpu.h> +#include <linux/types.h> #if defined(CONFIG_PRINTK) && defined(CONFIG_SYSCTL) +struct ctl_table; void __init printk_sysctl_init(void); int devkmsg_sysctl_set_loglvl(struct ctl_table *table, int write, void *buffer, size_t *lenp, loff_t *ppos); @ linux-6.8.2-rt10/kernel/printk/internal.h:47 @ enum printk_info_flags { LOG_CONT = 8, /* text is a fragment of a continuation line */ }; +struct printk_ringbuffer; +struct dev_printk_info; + extern struct printk_ringbuffer *prb; __printf(4, 0) Index: linux-6.8.2-rt10/kernel/printk/nbcon.c =================================================================== --- linux-6.8.2-rt10.orig/kernel/printk/nbcon.c +++ linux-6.8.2-rt10/kernel/printk/nbcon.c @ linux-6.8.2-rt10/kernel/printk/internal.h:5 @ // Copyright (C) 2022 Linutronix GmbH, John Ogness // Copyright (C) 2022 Intel, Thomas Gleixner -#include <linux/kernel.h> +#include <linux/atomic.h> #include <linux/bug.h> #include <linux/console.h> #include <linux/delay.h> +#include <linux/errno.h> #include <linux/export.h> +#include <linux/init.h> +#include <linux/irqflags.h> +#include <linux/minmax.h> +#include <linux/percpu.h> +#include <linux/preempt.h> #include <linux/slab.h> +#include <linux/smp.h> +#include <linux/stddef.h> #include <linux/string.h> +#include <linux/types.h> #include "internal.h" +#include "printk_ringbuffer.h" /* * Printk console printing implementation for consoles which does not depend * on the legacy style console_lock mechanism. Index: linux-6.8.2-rt10/kernel/printk/printk_ringbuffer.h =================================================================== --- linux-6.8.2-rt10.orig/kernel/printk/printk_ringbuffer.h +++ linux-6.8.2-rt10/kernel/printk/printk_ringbuffer.h @ linux-6.8.2-rt10/kernel/printk/internal.h:8 @ #include <linux/atomic.h> #include <linux/dev_printk.h> +#include <linux/stddef.h> +#include <linux/types.h> /* * Meta information about each stored message.