summaryrefslogtreecommitdiffstats
path: root/drivers/video/console
diff options
context:
space:
mode:
authorManuel Schölling <manuel.schoelling@gmx.de>2017-01-13 21:07:58 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-01-25 11:54:02 +0100
commit1a336c934623b011c289a298aff3b7fdefb3f876 (patch)
treecc6c320ce6408d3944ec70a052bc268cd58b7799 /drivers/video/console
parentaabd31c421ddc730edf6d89c4ed3885e4fca5e30 (diff)
downloadlinux-1a336c934623b011c289a298aff3b7fdefb3f876.tar.gz
linux-1a336c934623b011c289a298aff3b7fdefb3f876.tar.bz2
linux-1a336c934623b011c289a298aff3b7fdefb3f876.zip
console: Make persistent scrollback a boot parameter
The impact of the persistent scrollback feature on the code size is rather small, so the config option is removed. The feature stays disabled by default and can be enabled by using the boot command line parameter 'vgacon.scrollback_persistent=1' or by setting VGACON_SOFT_SCROLLBACK_PERSISTENT_ENABLE_BY_DEFAULT=y. Signed-off-by: Manuel Schölling <manuel.schoelling@gmx.de> Suggested-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/video/console')
-rw-r--r--drivers/video/console/Kconfig12
-rw-r--r--drivers/video/console/vgacon.c25
2 files changed, 19 insertions, 18 deletions
diff --git a/drivers/video/console/Kconfig b/drivers/video/console/Kconfig
index f500e58f7636..5b71bd905a60 100644
--- a/drivers/video/console/Kconfig
+++ b/drivers/video/console/Kconfig
@@ -47,14 +47,16 @@ config VGACON_SOFT_SCROLLBACK_SIZE
buffers of VGA consoles. Each 64KB will give you approximately
16 80x25 screenfuls of scrollback buffer.
-config VGACON_SOFT_SCROLLBACK_PERSISTENT
- bool "Persistent Scrollback History for each console"
+config VGACON_SOFT_SCROLLBACK_PERSISTENT_ENABLE_BY_DEFAULT
+ bool "Persistent Scrollback History for each console by default"
depends on VGACON_SOFT_SCROLLBACK
default n
help
- Say Y here if the scrollback history should persist when switching
- between consoles. Otherwise, the scrollback history will be flushed
- each time the console is switched.
+ Say Y here if the scrollback history should persist by default when
+ switching between consoles. Otherwise, the scrollback history will be
+ flushed each time the console is switched. This feature can also be
+ enabled using the boot command line parameter
+ 'vgacon.scrollback_persistent=1'.
This feature might break your tool of choice to flush the scrollback
buffer, e.g. clear(1) will work fine but Debian's clear_console(1)
diff --git a/drivers/video/console/vgacon.c b/drivers/video/console/vgacon.c
index ca23d222e029..dc06cb6a15dc 100644
--- a/drivers/video/console/vgacon.c
+++ b/drivers/video/console/vgacon.c
@@ -174,11 +174,11 @@ struct vgacon_scrollback_info {
};
static struct vgacon_scrollback_info *vgacon_scrollback_cur;
-#ifdef CONFIG_VGACON_SOFT_SCROLLBACK_PERSISTENT
static struct vgacon_scrollback_info vgacon_scrollbacks[MAX_NR_CONSOLES];
-#else
-static struct vgacon_scrollback_info vgacon_scrollbacks[1];
-#endif
+static bool scrollback_persistent = \
+ IS_ENABLED(CONFIG_VGACON_SOFT_SCROLLBACK_PERSISTENT_ENABLE_BY_DEFAULT);
+module_param_named(scrollback_persistent, scrollback_persistent, bool, 0000);
+MODULE_PARM_DESC(scrollback_persistent, "Enable persistent scrollback for all vga consoles");
static void vgacon_scrollback_reset(int vc_num, size_t reset_size)
{
@@ -213,20 +213,19 @@ static void vgacon_scrollback_init(int vc_num)
static void vgacon_scrollback_switch(int vc_num)
{
-#ifndef CONFIG_VGACON_SOFT_SCROLLBACK_PERSISTENT
- vc_num = 0;
-#endif
+ if (!scrollback_persistent)
+ vc_num = 0;
if (!vgacon_scrollbacks[vc_num].data) {
vgacon_scrollback_init(vc_num);
} else {
-#ifdef CONFIG_VGACON_SOFT_SCROLLBACK_PERSISTENT
- vgacon_scrollback_cur = &vgacon_scrollbacks[vc_num];
-#else
- size_t size = CONFIG_VGACON_SOFT_SCROLLBACK_SIZE * 1024;
+ if (scrollback_persistent) {
+ vgacon_scrollback_cur = &vgacon_scrollbacks[vc_num];
+ } else {
+ size_t size = CONFIG_VGACON_SOFT_SCROLLBACK_SIZE * 1024;
- vgacon_scrollback_reset(vc_num, size);
-#endif
+ vgacon_scrollback_reset(vc_num, size);
+ }
}
}