All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Dhruva Gole <d-gole@ti.com>
Cc: "Tony Lindgren" <tony@atomide.com>,
	"Jiri Slaby" <jirislaby@kernel.org>,
	"Jonathan Corbet" <corbet@lwn.net>,
	"Petr Mladek" <pmladek@suse.com>,
	"Steven Rostedt" <rostedt@goodmis.org>,
	"John Ogness" <john.ogness@linutronix.de>,
	"Sergey Senozhatsky" <senozhatsky@chromium.org>,
	"David S . Miller" <davem@davemloft.net>,
	"Andy Shevchenko" <andriy.shevchenko@linux.intel.com>,
	"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
	"Johan Hovold" <johan@kernel.org>,
	"Sebastian Andrzej Siewior" <bigeasy@linutronix.de>,
	"Vignesh Raghavendra" <vigneshr@ti.com>,
	linux-kernel@vger.kernel.org, linux-serial@vger.kernel.org,
	"Sebastian Reichel" <sre@kernel.org>,
	linux-doc@vger.kernel.org
Subject: Re: [PATCH v7 4/7] serial: core: Add support for DEVNAME:0.0 style naming for kernel console
Date: Thu, 28 Mar 2024 08:22:26 +0100	[thread overview]
Message-ID: <2024032859-subscript-marshy-7508@gregkh> (raw)
In-Reply-To: <20240328063152.bjkdtdsu42cqbgf3@dhruva>

On Thu, Mar 28, 2024 at 12:01:52PM +0530, Dhruva Gole wrote:
> Hi,
> 
> On Mar 27, 2024 at 12:59:38 +0200, Tony Lindgren wrote:
> > We can now add hardware based addressing for serial ports. Starting with
> > commit 84a9582fd203 ("serial: core: Start managing serial controllers to
> > enable runtime PM"), and all the related fixes to this commit, the serial
> > core now knows to which serial port controller the ports are connected.
> > 
> > The serial ports can be addressed with DEVNAME:0.0 style naming. The names
> > are something like 00:04:0.0 for a serial port on qemu, and something like
> > 2800000.serial:0.0 on platform device using systems like ARM64 for example.
> > 
> > The DEVNAME is the unique serial port hardware controller device name, AKA
> > the name for port->dev. The 0.0 are the serial core controller id and port
> > id.
> > 
> > Typically 0.0 are used for each controller and port instance unless the
> > serial port hardware controller has multiple controllers or ports.
> > 
> > Using DEVNAME:0.0 style naming actually solves two long term issues for
> > addressing the serial ports:
> > 
> > 1. According to Andy Shevchenko, using DEVNAME:0.0 style naming fixes an
> >    issue where depending on the BIOS settings, the kernel serial port ttyS
> >    instance number may change if HSUART is enabled
> > 
> > 2. Device tree using architectures no longer necessarily need to specify
> >    aliases to find a specific serial port, and we can just allocate the
> 
> This is GOOD!
> 
> >    ttyS instance numbers dynamically in whatever probe order
> > 
> > To do this, let's match the hardware addressing style console name to
> > the character device name used, and add a preferred console using the
> > character device name.
> > 
> > Note that when using console=DEVNAME:0.0 style kernel command line, the
> > 8250 serial console gets enabled later compared to using console=ttyS
> > naming for ISA ports. This is because the serial port DEVNAME to character
> > device mapping is not known until the serial driver probe time. If used
> > together with earlycon, this issue is avoided.
> > 
> > Signed-off-by: Tony Lindgren <tony@atomide.com>
> > ---
> >  drivers/tty/serial/serial_base.h     | 16 +++++++
> >  drivers/tty/serial/serial_base_bus.c | 66 ++++++++++++++++++++++++++++
> >  drivers/tty/serial/serial_core.c     |  4 ++
> >  3 files changed, 86 insertions(+)
> > 
> > diff --git a/drivers/tty/serial/serial_base.h b/drivers/tty/serial/serial_base.h
> > --- a/drivers/tty/serial/serial_base.h
> > +++ b/drivers/tty/serial/serial_base.h
> > @@ -45,3 +45,19 @@ void serial_ctrl_unregister_port(struct uart_driver *drv, struct uart_port *port
> >  
> >  int serial_core_register_port(struct uart_driver *drv, struct uart_port *port);
> >  void serial_core_unregister_port(struct uart_driver *drv, struct uart_port *port);
> > +
> > +#ifdef CONFIG_SERIAL_CORE_CONSOLE
> > +
> > +int serial_base_add_preferred_console(struct uart_driver *drv,
> > +				      struct uart_port *port);
> > +
> > +#else
> > +
> > +static inline
> > +int serial_base_add_preferred_console(struct uart_driver *drv,
> > +				      struct uart_port *port)
> > +{
> > +	return 0;
> > +}
> > +
> > +#endif
> > diff --git a/drivers/tty/serial/serial_base_bus.c b/drivers/tty/serial/serial_base_bus.c
> > --- a/drivers/tty/serial/serial_base_bus.c
> > +++ b/drivers/tty/serial/serial_base_bus.c
> > @@ -8,6 +8,7 @@
> >   * The serial core bus manages the serial core controller instances.
> >   */
> >  
> > +#include <linux/cleanup.h>
> >  #include <linux/container_of.h>
> >  #include <linux/device.h>
> >  #include <linux/idr.h>
> > @@ -204,6 +205,71 @@ void serial_base_port_device_remove(struct serial_port_device *port_dev)
> >  	put_device(&port_dev->dev);
> >  }
> >  
> > +#ifdef CONFIG_SERIAL_CORE_CONSOLE
> > +
> > +static int serial_base_add_one_prefcon(const char *match, const char *dev_name,
> > +				       int port_id)
> > +{
> > +	int ret;
> > +
> > +	ret = add_preferred_console_match(match, dev_name, port_id);
> > +	if (ret == -ENOENT)
> > +		return 0;
> > +
> > +	return ret;
> 
> Can we do this instead?
> return (ret == -ENOENT ? 0 : ret);

No, please no.

Just spell it out, like was done here, dealing with ? : is a pain to
read and follow and the generated code should be identical.

Only use ? : in places where it's the only way to do it (i.e. as
function parameters or in printk-like lines.)

Write for people first, compilers second.

thanks,

greg k-h

  reply	other threads:[~2024-03-28  7:22 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-27 10:59 [PATCH v7 0/7] Add support for DEVNAME:0.0 style hardware based addressing Tony Lindgren
2024-03-27 10:59 ` [PATCH v7 1/7] printk: Save console options for add_preferred_console_match() Tony Lindgren
2024-03-27 13:36   ` Andy Shevchenko
2024-05-24 16:06   ` Petr Mladek
2024-05-27 11:13     ` Tony Lindgren
2024-05-27 13:45       ` Petr Mladek
2024-05-28  5:05         ` Tony Lindgren
2024-05-31  6:54     ` Tony Lindgren
2024-06-04 13:17       ` Tony Lindgren
2024-03-27 10:59 ` [PATCH v7 2/7] printk: Don't try to parse DEVNAME:0.0 console options Tony Lindgren
2024-03-27 10:59 ` [PATCH v7 3/7] printk: Flag register_console() if console is set on command line Tony Lindgren
2024-03-27 10:59 ` [PATCH v7 4/7] serial: core: Add support for DEVNAME:0.0 style naming for kernel console Tony Lindgren
2024-03-28  6:31   ` Dhruva Gole
2024-03-28  7:22     ` Greg Kroah-Hartman [this message]
2024-03-28 10:33       ` Dhruva Gole
2024-03-27 10:59 ` [PATCH v7 5/7] serial: core: Handle serial console options Tony Lindgren
2024-03-27 10:59 ` [PATCH v7 6/7] serial: 8250: Add preferred console in serial8250_isa_init_ports() Tony Lindgren
2024-03-27 10:59 ` [PATCH v7 7/7] Documentation: kernel-parameters: Add DEVNAME:0.0 format for serial ports Tony Lindgren
2024-03-28  6:05   ` Dhruva Gole

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2024032859-subscript-marshy-7508@gregkh \
    --to=gregkh@linuxfoundation.org \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=bigeasy@linutronix.de \
    --cc=corbet@lwn.net \
    --cc=d-gole@ti.com \
    --cc=davem@davemloft.net \
    --cc=ilpo.jarvinen@linux.intel.com \
    --cc=jirislaby@kernel.org \
    --cc=johan@kernel.org \
    --cc=john.ogness@linutronix.de \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=pmladek@suse.com \
    --cc=rostedt@goodmis.org \
    --cc=senozhatsky@chromium.org \
    --cc=sre@kernel.org \
    --cc=tony@atomide.com \
    --cc=vigneshr@ti.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.