From patchwork Fri Jan 13 20:07:58 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: 9516355 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 14BA16077E for ; Fri, 13 Jan 2017 20:09:50 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 075FF2877D for ; Fri, 13 Jan 2017 20:09:50 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id F00F928781; Fri, 13 Jan 2017 20:09:49 +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.9 required=2.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_HI 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 4E9DC2877D for ; Fri, 13 Jan 2017 20:09:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751322AbdAMUJG (ORCPT ); Fri, 13 Jan 2017 15:09:06 -0500 Received: from mout.gmx.net ([212.227.15.18]:53112 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751333AbdAMUJE (ORCPT ); Fri, 13 Jan 2017 15:09:04 -0500 Received: from localhost.localdomain ([37.201.240.175]) by mail.gmx.com (mrgmx003 [212.227.17.190]) with ESMTPSA (Nemesis) id 0MUoiS-1bwGLW2Lc4-00YD7U; Fri, 13 Jan 2017 21:08:10 +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 v10 4/4] console: Make persistent scrollback a boot parameter Date: Fri, 13 Jan 2017 21:07:58 +0100 Message-Id: <20170113200758.9880-5-manuel.schoelling@gmx.de> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170113200758.9880-1-manuel.schoelling@gmx.de> References: <20170113200758.9880-1-manuel.schoelling@gmx.de> In-Reply-To: <201701112105.R6Zog6jw%fengguang.wu@intel.com> References: <201701112105.R6Zog6jw%fengguang.wu@intel.com> MIME-Version: 1.0 X-Provags-ID: V03:K0:qGsglvDZ0fA8uizsSgdMmK6WWFgoWGnCH6IO8bLQJ9Bbbnhq8Ck HhEQY+8f8RY2tt487uKSlzYRQIYWpjSrRXLkTdVZD3KRBqXw9XzJP4w9bvnewFgvKS1lNEm Dc/U2Tt16PGZzPnxo0DPrN0TjImog8yx5ywkUXO/dKQT8verS314GB0EcDX30MPeBo99JVz hAyNOYYeMbcyIn1XNfHew== X-UI-Out-Filterresults: notjunk:1; V01:K0:e5luLzIWEeg=:NJNZRRsup7pl97hR7W77RF 9mt4ZQ8DuPVpvO1FD+F549EAHWMGOlxCkV2387zO2tOQfwdXST8qfopwap/Vl70QB4mRVSxGk lv1Vc/J4glB9TAXi3CEBtKyTpgBTWbtpvt4IEPqKujlakda/4bjrIZFmxGK17tduM5SA+c3+z tB2tZ/UMp1bl/vahYwkXPjrCDGeZEgD1t3qLApnF5ZBGIsl2Y6BusdQEZdftEb2gOI4m805aJ KmdAQJyY8aDyvh/QXhJb8apk5YLvVVPew5At9BUho93kOz6WF5c1+PXG3cZe1EOUYGSwNiXBC FVyKQKW2Xro9lqF6E1Xtc416cYhn6ksB5G0XrhIPB/WFdROw9neOqr/ngAMR1bMunZp3+bJ8f lWi69VRTiOLM8vpYZT9FlfoMmCkKMuQEPvfV+B9tY1x+jKXAQlEd/pKl2GykjPkm1u5lQVSqB oWI3XUhaLbMqwOLlzjmoZK+Lb8jvw/4PSzVkAby0p8qYO3HjHXzBG9ipWnvTfdG1gULl05qac CL6jf1Ag7h0/tBXFkJEOovYrqdNMl9Db2UZtIB9vCDzIjHook+BbKK9eaP7VOxSkAx7/yKETS QxKPvsI6cI6KWukkXIXLR2ej1SGOvH7bR1/f2uju7vMUZ2AHwIaw3je7DapqbVO6jqDfeJoC/ Xi/xRrOj4oKm/GFOx1VIjaE06e0lzsOeQuXZiP9Gcov0cga+3TlxyGhikQUDMlUhjUv57+vfg r++o6ZbrtYcqNXqJTSKw5pujDncQ2laImeSVgU8DehJjPMH5Cp6raRzbd4sXkoO4pnBfzOSCo GV+kObz 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..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); + } } }