From patchwork Tue Jan 10 21:28:38 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Manuel_Sch=C3=B6lling?= X-Patchwork-Id: 9508541 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 9B61C60231 for ; Tue, 10 Jan 2017 21:30:43 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8D284285BF for ; Tue, 10 Jan 2017 21:30:43 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 81F34285C1; Tue, 10 Jan 2017 21:30:43 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.4 required=2.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_HI, RCVD_IN_SORBS_SPAM autolearn=unavailable version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 123A6285BF for ; Tue, 10 Jan 2017 21:30:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753053AbdAJVaC (ORCPT ); Tue, 10 Jan 2017 16:30:02 -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 Received: from localhost.localdomain ([88.152.9.218]) by mail.gmx.com (mrgmx102 [212.227.17.168]) with ESMTPSA (Nemesis) id 0MPqtK-1cNC6G3Jr8-004xLh; Tue, 10 Jan 2017 22:29:18 +0100 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 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-fbdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-fbdev@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP 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");