From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753108AbdAJVaD (ORCPT ); Tue, 10 Jan 2017 16:30:03 -0500 Received: from mout.gmx.net ([212.227.17.20]:53377 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753034AbdAJV36 (ORCPT ); Tue, 10 Jan 2017 16:29:58 -0500 From: =?UTF-8?q?Manuel=20Sch=C3=B6lling?= To: gregkh@linuxfoundation.org Cc: jslaby@suse.com, kilobyte@angband.pl, lkml14@scotdoyle.com, rdunlap@infradead.org, shorne@gmail.com, andrey_utkin@fastmail.com, akpm@linux-foundation.org, paul.burton@imgtec.com, daniel.vetter@ffwll.ch, tj@kernel.org, hdegoede@redhat.com, linux-kernel@vger.kernel.org, linux-fbdev@vger.kernel.org, =?UTF-8?q?Manuel=20Sch=C3=B6lling?= Subject: [PATCH v9 4/4] console: Make persistent scrollback a boot parameter Date: Tue, 10 Jan 2017 22:28:38 +0100 Message-Id: <20170110212838.16175-5-manuel.schoelling@gmx.de> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170110212838.16175-1-manuel.schoelling@gmx.de> References: <20170110212838.16175-1-manuel.schoelling@gmx.de> In-Reply-To: <4640722.jsFVORW8WM@amdc3058> References: <4640722.jsFVORW8WM@amdc3058> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Provags-ID: V03:K0:4r3eNxf3HTs4zO6G9f+o5LVLYnztZhw7L7GOVzPQeJMHWitOPwU EJPeqcDq+/4DWgOBSDkuUYQm2k7O9nXj96wGptNQl5mf0rrARaH9D1M+oQtQ2RfwLn2OV0p 7uhbwFBhwz0ndAyN6mP7Q3tFA4D2rHXT1j9kKUE5Ds74OzJEbLx8B0hd/8Pcm8CYNqytBNB BJKXWqi3N1el4ZWiaTJig== X-UI-Out-Filterresults: notjunk:1;V01:K0:VzZ03vwYZI0=:KOZZRsInjweZTE76csMgx7 6zSf4LtwEjxsEEQUSlGn3BtSRsT5jlXo/eaNBeGTm3WK/G/a1fKLPWHesE61UU8pKEmG6RBpT coOq5iwlmxA6AmYnC+CjEwpf09XHZpunY8VBVTZDAd0o2PHHYgISsJ/DoxcwLq9ubAOdu+sBS 9jeSA4Dz3rb+GWKIXKWKssCz3ESX0kJiAaQyilbweDzdnNKU6lUQn4olt2GRemtL9yvTmfNko 3CRvYST7ljoYdZ4fWmEtw3/aJIA/wSNMyH0O2IUZ2zn7yue7WoNTUtWmz54CmeTcq2CgTi2qP ci+36viHKhNgrAIm1BvznXdBF/7Vcxgm2huky1BJNNDSKuw2huEY+BHITbLtiwg0VLN/EPBqQ BqY622g26zbj/UGQHPKXSAJSpNZld7Enn5RPmASGgm0OWM6gqDcJzTc6wJ5bG4We4prd4QJYu AqjNnSYEChBNmZYCkiZZg5CZb1LcG3ybPCJYqErOuXWOW9mXa4tLKkp1EHxs9ViRHZ7qIpJUQ u8EvyzMhc7SLt2q4ThJawd2P3cUHnfJ7X+CevsGsF9CgSIpKM1lGJM/F/RUXYXKd+vsm1H+mU 1NDmkpFJxIYRDjXpZz2pR7SrxT8mFnMExt1wbyyzi8A4ajYvDvVcdk8b9gfbBs4Et8RMa6Vfj g7jmm86TRDISXbDh0rPgF2LcMImTbNDiM44ct/0urTDa9OYmuWKiKIPHWV1jZFAI0NxACE0xt 1UFy0rRxROpvWTHln6Q1OPY8FcAxb0Txz4yALpIdOcguV1Smju7SPVv8EvVR7lW0tJUj1qcTS eh+tYva Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 Suggested-by: Bartlomiej Zolnierkiewicz --- drivers/video/console/Kconfig | 12 +++++++----- drivers/video/console/vgacon.c | 25 ++++++++++++------------- 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..45a76972495b 100644 --- a/drivers/video/console/vgacon.c +++ b/drivers/video/console/vgacon.c @@ -174,11 +174,9 @@ 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); static void vgacon_scrollback_reset(int vc_num, size_t reset_size) { @@ -213,20 +211,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); + } } } @@ -1423,4 +1420,6 @@ const struct consw vga_con = { }; EXPORT_SYMBOL(vga_con); +module_param_named(scrollback_persistent, scrollback_persistent, bool, 0000); +MODULE_PARM_DESC(scrollback_persistent, "Enable persistent scrollback for all vga consoles"); MODULE_LICENSE("GPL"); -- 2.11.0 From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Manuel=20Sch=C3=B6lling?= Date: Tue, 10 Jan 2017 21:28:38 +0000 Subject: [PATCH v9 4/4] console: Make persistent scrollback a boot parameter Message-Id: <20170110212838.16175-5-manuel.schoelling@gmx.de> List-Id: References: <20170110212838.16175-1-manuel.schoelling@gmx.de> In-Reply-To: <20170110212838.16175-1-manuel.schoelling@gmx.de> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable To: gregkh@linuxfoundation.org Cc: jslaby@suse.com, kilobyte@angband.pl, lkml14@scotdoyle.com, rdunlap@infradead.org, shorne@gmail.com, andrey_utkin@fastmail.com, akpm@linux-foundation.org, paul.burton@imgtec.com, daniel.vetter@ffwll.ch, tj@kernel.org, hdegoede@redhat.com, linux-kernel@vger.kernel.org, linux-fbdev@vger.kernel.org, =?UTF-8?q?Manuel=20Sch=C3=B6lling?= 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=3D1' or by setting VGACON_SOFT_SCROLLBACK_PERSISTENT_ENABLE_BY_DEFAULT=3Dy. Signed-off-by: Manuel Sch=C3=B6lling Suggested-by: Bartlomiej Zolnierkiewicz --- drivers/video/console/Kconfig | 12 +++++++----- drivers/video/console/vgacon.c | 25 ++++++++++++------------- 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. =20 -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=3D1'. =20 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..45a76972495b 100644 --- a/drivers/video/console/vgacon.c +++ b/drivers/video/console/vgacon.c @@ -174,11 +174,9 @@ struct vgacon_scrollback_info { }; =20 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 =3D \ + IS_ENABLED(CONFIG_VGACON_SOFT_SCROLLBACK_PERSISTENT_ENABLE_BY_DEFAULT); =20 static void vgacon_scrollback_reset(int vc_num, size_t reset_size) { @@ -213,20 +211,19 @@ static void vgacon_scrollback_init(int vc_num) =20 static void vgacon_scrollback_switch(int vc_num) { -#ifndef CONFIG_VGACON_SOFT_SCROLLBACK_PERSISTENT - vc_num =3D 0; -#endif + if (!scrollback_persistent) + vc_num =3D 0; =20 if (!vgacon_scrollbacks[vc_num].data) { vgacon_scrollback_init(vc_num); } else { -#ifdef CONFIG_VGACON_SOFT_SCROLLBACK_PERSISTENT - vgacon_scrollback_cur =3D &vgacon_scrollbacks[vc_num]; -#else - size_t size =3D CONFIG_VGACON_SOFT_SCROLLBACK_SIZE * 1024; + if (scrollback_persistent) { + vgacon_scrollback_cur =3D &vgacon_scrollbacks[vc_num]; + } else { + size_t size =3D CONFIG_VGACON_SOFT_SCROLLBACK_SIZE * 1024; =20 - vgacon_scrollback_reset(vc_num, size); -#endif + vgacon_scrollback_reset(vc_num, size); + } } } =20 @@ -1423,4 +1420,6 @@ const struct consw vga_con =3D { }; EXPORT_SYMBOL(vga_con); =20 +module_param_named(scrollback_persistent, scrollback_persistent, bool, 000= 0); +MODULE_PARM_DESC(scrollback_persistent, "Enable persistent scrollback for = all vga consoles"); MODULE_LICENSE("GPL"); --=20 2.11.0