Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1174142

[PATCH v4.2-rc1] printk: make extended printk support conditional on netconsole

From Tejun Heo <tj@kernel.org>
Newsgroups linux.kernel
Subject [PATCH v4.2-rc1] printk: make extended printk support conditional on netconsole
Date 2015-06-30 01:40 +0200
Message-ID <pGQOC-1cM-5@gated-at.bofh.it> (permalink)
References (3 earlier) <pGJaq-6Wg-9@gated-at.bofh.it> <pGJtM-7jc-11@gated-at.bofh.it> <pGJtM-7jc-13@gated-at.bofh.it> <pGJWN-86F-3@gated-at.bofh.it> <pGJWN-86F-1@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


6fe29354befe ("printk: implement support for extended console
drivers") implemented extended printk support for extended netconsole.
The code added was miniscule but it added static 8k buffer
unconditionally unnecessarily bloating the kernel for cases where
extended netconsole is not used.

This patch introduces CONFIG_PRINTK_CON_EXTENDED which is selected by
CONFIG_NETCONSOLE.  If the config option is not set, extended printk
support is compiled out along with the static buffer.

Verified 8k reduction in vmlinux bss when !CONFIG_NETCONSOLE.

Signed-off-by: Tejun Heo <tj@kernel.org>
Reported-and-suggested-by: Geert Uytterhoeven <geert@linux-m68k.org>
---
Linus, Andrew.

This removes an unnecessary 8k bss bloat introduced during v4.2-rc1
merge window on certain configs.  The original patch was routed
through -mm.  How should this be routed?

Thanks.

 drivers/net/Kconfig    |    1 +
 init/Kconfig           |    3 +++
 kernel/printk/printk.c |   33 +++++++++++++++++++++++++++++----
 3 files changed, 33 insertions(+), 4 deletions(-)

--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
@@ -195,6 +195,7 @@ config GENEVE
 
 config NETCONSOLE
 	tristate "Network console logging support"
+	select PRINTK_CON_EXTENDED
 	---help---
 	If you want to log kernel messages over the network, enable this.
 	See <file:Documentation/networking/netconsole.txt> for details.
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -1438,6 +1438,9 @@ config PRINTK
 	  very difficult to diagnose system problems, saying N here is
 	  strongly discouraged.
 
+config PRINTK_CON_EXTENDED
+	bool
+
 config BUG
 	bool "BUG() support" if EXPERT
 	default y
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -84,6 +84,10 @@ static struct lockdep_map console_lock_d
 };
 #endif
 
+#ifdef CONFIG_PRINTK_CON_EXTENDED
+
+#define CONSOLE_EXT_LOG_BUF_LEN		CONSOLE_EXT_LOG_MAX
+
 /*
  * Number of registered extended console drivers.
  *
@@ -96,6 +100,25 @@ static struct lockdep_map console_lock_d
  */
 static int nr_ext_console_drivers;
 
+static void inc_nr_ext_console_drivers(void)
+{
+	nr_ext_console_drivers++;
+}
+
+static void dec_nr_ext_console_drivers(void)
+{
+	nr_ext_console_drivers--;
+}
+
+#else	/* CONFIG_PRINTK_CON_EXTENDED */
+
+#define CONSOLE_EXT_LOG_BUF_LEN		0
+#define nr_ext_console_drivers		0
+static void inc_nr_ext_console_drivers(void) { }
+static void dec_nr_ext_console_drivers(void) { }
+
+#endif	/* CONFIG_PRINTK_CON_EXTENDED */
+
 /*
  * Helper macros to handle lockdep when locking/unlocking console_sem. We use
  * macros instead of functions so that _RET_IP_ contains useful information.
@@ -2224,7 +2247,7 @@ out:
  */
 void console_unlock(void)
 {
-	static char ext_text[CONSOLE_EXT_LOG_MAX];
+	static char ext_text[CONSOLE_EXT_LOG_BUF_LEN];
 	static char text[LOG_LINE_MAX + PREFIX_MAX];
 	static u64 seen_seq;
 	unsigned long flags;
@@ -2561,9 +2584,11 @@ void register_console(struct console *ne
 		console_drivers->next = newcon;
 	}
 
-	if (newcon->flags & CON_EXTENDED)
-		if (!nr_ext_console_drivers++)
+	if (newcon->flags & CON_EXTENDED) {
+		if (!nr_ext_console_drivers)
 			pr_info("printk: continuation disabled due to ext consoles, expect more fragments in /dev/kmsg\n");
+		inc_nr_ext_console_drivers();
+	}
 
 	if (newcon->flags & CON_PRINTBUFFER) {
 		/*
@@ -2638,7 +2663,7 @@ int unregister_console(struct console *c
 	}
 
 	if (!res && (console->flags & CON_EXTENDED))
-		nr_ext_console_drivers--;
+		dec_nr_ext_console_drivers();
 
 	/*
 	 * If this isn't the last console and it has CON_CONSDEV set, we
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Re: [PATCH 3/3] printk: implement support for extended console  drivers Tejun Heo <tj@kernel.org> - 2015-06-29 17:30 +0200
  Re: [PATCH 3/3] printk: implement support for extended console drivers Geert Uytterhoeven <geert@linux-m68k.org> - 2015-06-29 17:50 +0200
    Re: [PATCH 3/3] printk: implement support for extended console  drivers Tejun Heo <tj@kernel.org> - 2015-06-29 17:50 +0200
      [PATCH v4.2-rc1] printk: make extended printk support conditional on  netconsole Tejun Heo <tj@kernel.org> - 2015-06-30 01:40 +0200
        Re: [PATCH v2 v4.2-rc1] printk: make extended printk support  conditional on netconsole Petr Mladek <pmladek@suse.com> - 2015-07-03 16:10 +0200
          Re: [PATCH v2 v4.2-rc1] printk: make extended printk support  conditional on netconsole Tejun Heo <tj@kernel.org> - 2015-07-03 17:30 +0200
        [PATCH v3 v4.2-rc1] printk: make extended printk support conditional  on netconsole Tejun Heo <tj@kernel.org> - 2015-07-03 18:30 +0200

csiph-web