Received: by 2002:a05:6358:7058:b0:131:369:b2a3 with SMTP id 24csp7735314rwp; Tue, 18 Jul 2023 22:26:56 -0700 (PDT) X-Google-Smtp-Source: APBJJlFCQ00mmhx7dgJr6jFD4guIZHOx21zfQ93uJ+p6h9bLqF01t91qS2OmLwXfKTiHch7wrtvo X-Received: by 2002:a05:6358:7e0f:b0:134:d78f:67bc with SMTP id o15-20020a0563587e0f00b00134d78f67bcmr1563262rwm.14.1689744416310; Tue, 18 Jul 2023 22:26:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689744416; cv=none; d=google.com; s=arc-20160816; b=yacyKRFZmPI/jEJzQUHpBR5DKjlNWMv73PDzALi39Dr9gLRi+JtKwu01ik3CgeVVPU KVARNLeEYLfhC4WAv6/K+jI9bevaQj3xRaVIcgqsIvmOt1DKBWAbAS5aQCsMwwUXPx95 jylO64baEW44ncS8MLEixyDonv7uA6S5Sr9dzcuw1F66/8zKQ//pMo1suOQReLO2mdQA vphSGtNUNB92VikRTGVCK/seYRwM2tKqGCoJFlCH316boQEU4+yVmNKqDFGkNbElSNeL C6AJ7tH9t2HqyuPDj1wHh0Sp75qDaLXWUgwIVP9lPE1JU2BQgT7hkCe4GQ9+HMXgnz+W ebBg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=6JXUi3d5qmEgEORX7572YEtQSa4go8rzBELqi0IPA5c=; fh=hbHtIiydX37fSVKy1O1xs3IgAn++RRbMndzVd8WgtBU=; b=K8T/YByZkbW8kCrDWzez1RLVDbJOTZ4ZQm+29P0Ae6VwUDRmEU7AY4dd5enzHrTgMT hVpRSuE3XHC2Nf8g1o9UtULtsaq0ZP7SevTN1tj92lAi5jOoPD+cgfOK8JTI383WDamB +QB6gXvm69OTZ4ksJEA1GB+Z6o9zHPKlK0zUVDg2pGke0StAMLQ9+I6Fj3ssYJIsnHB/ PoUE+lxwwmhZrjU7yuzLves8Jq0gqVjgfWNIGP/eRZqQ4mTbzUyBJXQNw5f4Vtj5gQsa qR7eDi0Do33HXh2VTgoSO4pGRwdVWqoTilEB1iJw4h+3EZTdUWPRuxs3xCJ2xWhguuEU 0o8A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id v36-20020a634824000000b0053eeed3d26asi2725062pga.688.2023.07.18.22.26.44; Tue, 18 Jul 2023 22:26:56 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229739AbjGSFPg (ORCPT + 99 others); Wed, 19 Jul 2023 01:15:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50426 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229454AbjGSFPf (ORCPT ); Wed, 19 Jul 2023 01:15:35 -0400 Received: from muru.com (muru.com [72.249.23.125]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id EEDA01BF2; Tue, 18 Jul 2023 22:15:33 -0700 (PDT) Received: from hillo.muru.com (localhost [127.0.0.1]) by muru.com (Postfix) with ESMTP id 98A9280AA; Wed, 19 Jul 2023 05:15:31 +0000 (UTC) From: Tony Lindgren To: Greg Kroah-Hartman , Jiri Slaby Cc: Andy Shevchenko , Dhruva Gole , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , John Ogness , Johan Hovold , Sebastian Andrzej Siewior , Vignesh Raghavendra , linux-omap@vger.kernel.org, linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] serial: core: Add support for dev_name:0.0 naming for kernel console Date: Wed, 19 Jul 2023 08:15:23 +0300 Message-ID: <20230719051525.46494-1-tony@atomide.com> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org With the serial core controller related changes we can now start addressing serial ports with dev_name:0.0 naming. The names are something like 00:04.0:0.0 on qemu, and 2800000.serial.0:0.0 on ARM for example. The dev_name is unique serial port hardware controller device name, also known as port->dev, and 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. Signed-off-by: Tony Lindgren --- Note that this depends on fix for serial core port ids patch "[PATCH] serial: core: Fix serial core port id to not use port->line" --- drivers/tty/serial/serial_core.c | 47 ++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c --- a/drivers/tty/serial/serial_core.c +++ b/drivers/tty/serial/serial_core.c @@ -3322,6 +3322,49 @@ static int serial_core_port_device_add(struct serial_ctrl_device *ctrl_dev, return 0; } +/* + * Add preferred console if configured on kernel command line with naming + * "console=dev_name:0.0". + */ +static int serial_core_add_preferred_console(struct uart_driver *drv, + struct uart_port *port) +{ + char *port_match, *opt, *name; + int len, ret = 0; + + port_match = kasprintf(GFP_KERNEL, "console=%s:%i.%i", + dev_name(port->dev), port->ctrl_id, + port->port_id); + if (!port_match) + return -ENOMEM; + + opt = strstr(saved_command_line, port_match); + if (!opt) + goto free_port_match; + + len = strlen(port_match); + + if (strlen(opt) > len + 1 && opt[len] == ',') + opt += len + 1; + else + opt = NULL; + + name = kstrdup(drv->dev_name, GFP_KERNEL); + if (!name) { + ret = -ENOMEM; + goto free_port_match; + } + + add_preferred_console(name, port->line, opt); + + kfree(name); + +free_port_match: + kfree(port_match); + + return ret; +} + /* * Initialize a serial core port device, and a controller device if needed. */ @@ -3358,6 +3401,10 @@ int serial_core_register_port(struct uart_driver *drv, struct uart_port *port) if (ret) goto err_unregister_ctrl_dev; + ret = serial_core_add_preferred_console(drv, port); + if (ret) + goto err_unregister_port_dev; + ret = serial_core_add_one_port(drv, port); if (ret) goto err_unregister_port_dev; -- 2.41.0