From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752067AbdFNJLZ (ORCPT ); Wed, 14 Jun 2017 05:11:25 -0400 Received: from mail-pg0-f68.google.com ([74.125.83.68]:33781 "EHLO mail-pg0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750737AbdFNJLW (ORCPT ); Wed, 14 Jun 2017 05:11:22 -0400 Date: Wed, 14 Jun 2017 18:11:28 +0900 From: Sergey Senozhatsky To: Petr Mladek Cc: Sergey Senozhatsky , Steven Rostedt , Andrew Morton , Peter Zijlstra , Aleksey Makarov , Sabrina Dubroca , Sudeep Holla , linux-kernel@vger.kernel.org, Sergey Senozhatsky Subject: Re: [PATCH 3/3] printk/console: Always have a preferred console Message-ID: <20170614091128.GC3011@jagdpanzerIV.localdomain> References: <1497358444-30736-1-git-send-email-pmladek@suse.com> <1497358444-30736-4-git-send-email-pmladek@suse.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1497358444-30736-4-git-send-email-pmladek@suse.com> User-Agent: Mutt/1.8.3 (2017-05-23) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On (06/13/17 14:54), Petr Mladek wrote: > More consoles can be registered but one might be special. It is the one > with CON_CONSDEV flag set. It must be the first in the console_drivers > list. It is also sometimes called as a preferred one. > > It is the console that is associated with /dev/console. It is shown > by "showconsole" binary. But if none of the consoles have CON_CONSDEV > flag set, the state is unclear and "showconsole" is unable to find it: > > showconsole: real console unknown: Success > > Documentation/admin-guide/serial-console.rst says that the preferred > console is the last one on the command line. But there already exists > some fallbacks. > > First, there is a fallback code that tries to enable any boot > console and one real console if no consoles are configured. > This code always sets CON_CONSDEV if console setup succeeded. > > Second, console_unregister() sets the flag CON_CONSDEV for the next > console in the list when a console with this flag is being removed. > > Now, the flag is not set if some consoles are configured and > the preferred one is never registered from some reason. haha, nice. that's exactly what I was talking about a moment ago. > This patch modifies the code that enables the configured consoles. > It sets the CON_CONSDEV flag also when we register the first > console. It causes that one of the registered consoles will > always have CON_CONSDEV flag set. hm.... my impression was that we shouldn't set CON_CONSDEV if the console has no ->device. but then, once again, unregister_console() does not care and register_console() cares only in one place. so I'm a bit in doubt. > It might have side effects. The first registered console will be > marked as preferred and kept first in the console_drivers list > until the really preferred one is registered. This might change > the order of consoles in console_drivers list. As a consequence, > another console might be selected when the really preferred one > is unregistered. But this should require some manual intervention. > The order was never guarantied. Therefore it does not look > worth the effort to keep the original order. need to think more. -ss > Signed-off-by: Petr Mladek > --- > kernel/printk/printk.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c > index 6e651f68bffd..76b1159f2004 100644 > --- a/kernel/printk/printk.c > +++ b/kernel/printk/printk.c > @@ -2483,7 +2483,7 @@ void register_console(struct console *newcon) > } > > newcon->flags |= CON_ENABLED; > - if (i == preferred_console) > + if (i == preferred_console || !console_drivers) > newcon->flags |= CON_CONSDEV; > break; > }