From patchwork Mon Mar 17 07:00:16 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 874692 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4F6D821A45C; Mon, 17 Mar 2025 07:00:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194851; cv=none; b=feJdVTaCnsGODRn0omBN+QC1VWVd9BHsmhROzcyH7b8gNQMqH5azFGZlAOJ8nZYMw5ekz3HUb3C4jlBijUuBXa+tVLb7Yemq6DYczqpSQNsjcC/bIWGHE/XEEL2TqvLtZm+9DDsufID8ZJjNqoEXQMPiKcSJwKewTO6nVr6xDIg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194851; c=relaxed/simple; bh=O0OSapv4EsD9+5CXeUGANegKYUuFAz0yv6FzuICkoZw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ujMH5PG+9QoQdHDtNp/JlvWvV2oQ9JZwkovCF2yy5QfS4EQnPYU7j3q4ZukZoADFDktC3HrNdV98wIm61hMBeYniD9mUUz82Xz2Ckjgm75WD/ayKd4LZmZmHYZ6KUUhVBVTQtjxtPudhKi014abDwqFtxHZfJ01csH5JFuLIRm0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=XUFRC0OY; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="XUFRC0OY" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0AF84C4CEEC; Mon, 17 Mar 2025 07:00:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742194851; bh=O0OSapv4EsD9+5CXeUGANegKYUuFAz0yv6FzuICkoZw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XUFRC0OYunpSrZGiGaoz9Ho7NcXtTFX2AZxFiZkdgt0TYEn96RtT6/r7hwCxoXH+r YnDI8ZW37LmjRYkfaSnI9iLFC4L3eiqzbfba4FvVDFWwmkQBotpr2DmANJO4gmED/s hRenKmEOSp0b3qufeyTYHyohUuANmwbDp29y/DiQpu1jp7t3HvLDGoq2iq3KqsbnoU vpklUmtPrDmQoyFasWM84CE0chuaui8ZBhly3zWo0OpudN8c8UJjF+k83j9Ff9z5yr yaJbjbJR/psC13f3cZfo4EHDa+yXorCLwklTz/9oHxSgKrlN21w/o6khAlWuel66Gt 159J2Ls1pi6Aw== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH v2 01/31] tty: convert "TTY Struct Flags" to an enum Date: Mon, 17 Mar 2025 08:00:16 +0100 Message-ID: <20250317070046.24386-2-jirislaby@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250317070046.24386-1-jirislaby@kernel.org> References: <20250317070046.24386-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Convert TTY_* macros (flags) to an enum. This allows for easier kernel-doc (the comment needed fine tuning), grouping of these nicely, and proper checking. Note that these are bit positions. So they are used such as test_bit(TTY_THROTTLED, ...). Given these are not the user API (only in-kernel API/ABI), the bit positions are NOT preserved in this patch. All are renumbered naturally using the enum-auto-numbering. Signed-off-by: Jiri Slaby (SUSE) --- Documentation/driver-api/tty/tty_struct.rst | 2 +- include/linux/tty.h | 52 +++++++++++---------- 2 files changed, 28 insertions(+), 26 deletions(-) diff --git a/Documentation/driver-api/tty/tty_struct.rst b/Documentation/driver-api/tty/tty_struct.rst index c72f5a4293b2..29caf1c1ca5f 100644 --- a/Documentation/driver-api/tty/tty_struct.rst +++ b/Documentation/driver-api/tty/tty_struct.rst @@ -72,7 +72,7 @@ TTY Struct Flags ================ .. kernel-doc:: include/linux/tty.h - :doc: TTY Struct Flags + :identifiers: tty_struct_flags TTY Struct Reference ==================== diff --git a/include/linux/tty.h b/include/linux/tty.h index 2372f9357240..6bb4fb3845f0 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h @@ -251,7 +251,7 @@ struct tty_file_private { }; /** - * DOC: TTY Struct Flags + * enum tty_struct_flags - TTY Struct Flags * * These bits are used in the :c:member:`tty_struct.flags` field. * @@ -260,62 +260,64 @@ struct tty_file_private { * tty->write. Thus, you must use the inline functions set_bit() and * clear_bit() to make things atomic. * - * TTY_THROTTLED + * @TTY_THROTTLED: * Driver input is throttled. The ldisc should call * :c:member:`tty_driver.unthrottle()` in order to resume reception when * it is ready to process more data (at threshold min). * - * TTY_IO_ERROR + * @TTY_IO_ERROR: * If set, causes all subsequent userspace read/write calls on the tty to * fail, returning -%EIO. (May be no ldisc too.) * - * TTY_OTHER_CLOSED + * @TTY_OTHER_CLOSED: * Device is a pty and the other side has closed. * - * TTY_EXCLUSIVE + * @TTY_EXCLUSIVE: * Exclusive open mode (a single opener). * - * TTY_DO_WRITE_WAKEUP + * @TTY_DO_WRITE_WAKEUP: * If set, causes the driver to call the * :c:member:`tty_ldisc_ops.write_wakeup()` method in order to resume * transmission when it can accept more data to transmit. * - * TTY_LDISC_OPEN + * @TTY_LDISC_OPEN: * Indicates that a line discipline is open. For debugging purposes only. * - * TTY_PTY_LOCK + * @TTY_PTY_LOCK: * A flag private to pty code to implement %TIOCSPTLCK/%TIOCGPTLCK logic. * - * TTY_NO_WRITE_SPLIT + * @TTY_NO_WRITE_SPLIT: * Prevent driver from splitting up writes into smaller chunks (preserve * write boundaries to driver). * - * TTY_HUPPED + * @TTY_HUPPED: * The TTY was hung up. This is set post :c:member:`tty_driver.hangup()`. * - * TTY_HUPPING + * @TTY_HUPPING: * The TTY is in the process of hanging up to abort potential readers. * - * TTY_LDISC_CHANGING + * @TTY_LDISC_CHANGING: * Line discipline for this TTY is being changed. I/O should not block * when this is set. Use tty_io_nonblock() to check. * - * TTY_LDISC_HALTED + * @TTY_LDISC_HALTED: * Line discipline for this TTY was stopped. No work should be queued to * this ldisc. */ -#define TTY_THROTTLED 0 -#define TTY_IO_ERROR 1 -#define TTY_OTHER_CLOSED 2 -#define TTY_EXCLUSIVE 3 -#define TTY_DO_WRITE_WAKEUP 5 -#define TTY_LDISC_OPEN 11 -#define TTY_PTY_LOCK 16 -#define TTY_NO_WRITE_SPLIT 17 -#define TTY_HUPPED 18 -#define TTY_HUPPING 19 -#define TTY_LDISC_CHANGING 20 -#define TTY_LDISC_HALTED 22 +enum tty_struct_flags { + TTY_THROTTLED, + TTY_IO_ERROR, + TTY_OTHER_CLOSED, + TTY_EXCLUSIVE, + TTY_DO_WRITE_WAKEUP, + TTY_LDISC_OPEN, + TTY_PTY_LOCK, + TTY_NO_WRITE_SPLIT, + TTY_HUPPED, + TTY_HUPPING, + TTY_LDISC_CHANGING, + TTY_LDISC_HALTED, +}; static inline bool tty_io_nonblock(struct tty_struct *tty, struct file *file) { From patchwork Mon Mar 17 07:00:17 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 874333 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BCCD521ABC1; Mon, 17 Mar 2025 07:00:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194852; cv=none; b=iiJt0e1IbQwgAzA8Z/oBqapY5BZjtPAhH21dicysKweJnkEaWiUROOCzEGROH5o+4vC8fnhmbrJpbpcqETrm+e+2DP1SR0KHfm6Siow/AFhidDWWeTSboqF0evWDIJv3pFQz/wuWK8PF0n/ErcpzdIjeIMQE+0JfGLbyzhb8e8c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194852; c=relaxed/simple; bh=H65w1BJPAbZCNhtchN+PJYXQMlXLUApLJleN6WyRzh4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Mdwr8PPCdtSIvZgVRxpFvQfeeRCgcQHfm1A7kF15ZUn4dtOwm20lNB3g8AIQMNQlGcYYamO8a3zbTrR/G6TG6DSImyoJZ4bdYX64hb/z+T3RNCtvFT+87nupc3YisJTkY3BJjNN4H6hwVEQH2zcjFIM48qxvRxDGoi+P4v1v1lQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=GSac9s7H; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="GSac9s7H" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 87B16C4CEE3; Mon, 17 Mar 2025 07:00:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742194852; bh=H65w1BJPAbZCNhtchN+PJYXQMlXLUApLJleN6WyRzh4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GSac9s7H+bVOm6e1kRMaRjnkfFcJfg4yyp8fSJstl8LZaEK2ScpcSX5r5/0LWJ3DV HJlf/0brSNLeoAiWwypGQhg4PhX6eZAhPwYH7JLDBhW3eUm8efkEOFbsiO1mzSQDdN L8wJNvYpnOl8C6EDMLAwBhUrtDXFPrOsP5tz8AsdtKo6Av+gvUwvIdftqs+e4nz2ux H3QPe5+ddU7rBa7ZiKhzQkDB8wJeNmX+ffti8xmpcGzweIN9Xw2+2lEbGlyaNv45Nj iqV9GlY2fVcvDtuLt4bdHQKa7CGqLZ7YxrA6iCPuAbliR50K4Xjxpj2Qth6Y1k1ybi tbCDEF7Dj006g== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH v2 02/31] tty: audit: do not use N_TTY_BUF_SIZE Date: Mon, 17 Mar 2025 08:00:17 +0100 Message-ID: <20250317070046.24386-3-jirislaby@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250317070046.24386-1-jirislaby@kernel.org> References: <20250317070046.24386-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 N_TTY_BUF_SIZE -- as the name suggests -- is the N_TTY's buffer size. There is no reason to couple that to audit's buffer size, so define an own TTY_AUDIT_BUF_SIZE macro (with the same size). N_TTY_BUF_SIZE is private and will be moved to n_tty.c later. Signed-off-by: Jiri Slaby (SUSE) --- drivers/tty/tty_audit.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/tty/tty_audit.c b/drivers/tty/tty_audit.c index 1d81eeefb068..75542333c54a 100644 --- a/drivers/tty/tty_audit.c +++ b/drivers/tty/tty_audit.c @@ -12,12 +12,14 @@ #include #include "tty.h" +#define TTY_AUDIT_BUF_SIZE 4096 + struct tty_audit_buf { struct mutex mutex; /* Protects all data below */ dev_t dev; /* The TTY which the data is from */ bool icanon; size_t valid; - u8 *data; /* Allocated size N_TTY_BUF_SIZE */ + u8 *data; /* Allocated size TTY_AUDIT_BUF_SIZE */ }; static struct tty_audit_buf *tty_audit_buf_ref(void) @@ -37,7 +39,7 @@ static struct tty_audit_buf *tty_audit_buf_alloc(void) if (!buf) goto err; - buf->data = kmalloc(N_TTY_BUF_SIZE, GFP_KERNEL); + buf->data = kmalloc(TTY_AUDIT_BUF_SIZE, GFP_KERNEL); if (!buf->data) goto err_buf; @@ -235,14 +237,14 @@ void tty_audit_add_data(const struct tty_struct *tty, const void *data, do { size_t run; - run = N_TTY_BUF_SIZE - buf->valid; + run = TTY_AUDIT_BUF_SIZE - buf->valid; if (run > size) run = size; memcpy(buf->data + buf->valid, data, run); buf->valid += run; data += run; size -= run; - if (buf->valid == N_TTY_BUF_SIZE) + if (buf->valid == TTY_AUDIT_BUF_SIZE) tty_audit_buf_push(buf); } while (size != 0); mutex_unlock(&buf->mutex); From patchwork Mon Mar 17 07:00:18 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 874691 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5455121ADB5; Mon, 17 Mar 2025 07:00:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194855; cv=none; b=VoK+Ka5UMhDXnBoSYmOjOqFlG/Ywgf3cN4Eq68QS1MJDBows/9/voVjSHYPkG8YoULt1EXXwdVPj2OBwq8TWz6qId2UwLBgUYso30DpHC4YLCaARWnobxfDLMdGirVwodvBlsm51kU76JAGOtqeGc+TpYEHZjTZxqoYCFDLz7T8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194855; c=relaxed/simple; bh=yigraz6gtl0qy6j2K57A2C+zse8kZCtw33CRv7cnvHU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=HmGqHUODL4T40+4MzpylUgTsAD96KjPz/ak0ZXSkJzylDekcAWP09y6uBkMDYk8+jnq3349hzWZ4YA2akNVS6PvVHWdS7BMVdJzN6dvFhuGiV4juN7KjP6xEyITcmR/dKjJ6Grz/BkxgRgSVKJmzhXxkyWu6NLzCreejynDAZu8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=fEELfaAE; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="fEELfaAE" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 106CAC4CEEF; Mon, 17 Mar 2025 07:00:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742194855; bh=yigraz6gtl0qy6j2K57A2C+zse8kZCtw33CRv7cnvHU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fEELfaAEZyx4zAeonEc7yuW8832rUeOgP7L8ySAY96F4wYOA6tG+O+8lRBun4T4cN lMcndyT5Y7pXW7mbi93x2x5wBhK68r21gwTdwpuJXAUGR0ujbLZFGJFORJiZXdWeoI vSbon5VkhcJYMqBMUScT3Lblhuz8oefXVWEmAKs7OZycgSzHZ6NNGAU47p8Pd7kUrs dtuwJ3AG/9K0z3V+LEfBqLY1s21BaxQNRqEz2JIBR2IpG0kXEJ6ROP5FwgxTU+twsi qfg6U1QqmrI5cbqI080Jm1rZTGI64oSQ8UtvBXUyTxwaojFwGNGBrY9ZmzFQKaCoRt 0WsMLRvDNOgLw== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" , Jakub Kicinski , Andrew Lunn , "David S. Miller" , Eric Dumazet , Paolo Abeni , netdev@vger.kernel.org Subject: [PATCH v2 03/31] tty: caif: do not use N_TTY_BUF_SIZE Date: Mon, 17 Mar 2025 08:00:18 +0100 Message-ID: <20250317070046.24386-4-jirislaby@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250317070046.24386-1-jirislaby@kernel.org> References: <20250317070046.24386-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 N_TTY_BUF_SIZE -- as the name suggests -- is the N_TTY's buffer size. There is no reason to couple that to caif's tty->receive_room. Use 4096 directly -- even though, it should be some sort of "SKB_MAX_ALLOC" or alike. But definitely not N_TTY_BUF_SIZE. N_TTY_BUF_SIZE is private and will be moved to n_tty.c later. Signed-off-by: Jiri Slaby (SUSE) Acked-by: Jakub Kicinski Cc: Andrew Lunn Cc: "David S. Miller" Cc: Eric Dumazet Cc: Paolo Abeni Cc: netdev@vger.kernel.org --- drivers/net/caif/caif_serial.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/caif/caif_serial.c b/drivers/net/caif/caif_serial.c index ed3a589def6b..e7d1b9301fde 100644 --- a/drivers/net/caif/caif_serial.c +++ b/drivers/net/caif/caif_serial.c @@ -344,7 +344,7 @@ static int ldisc_open(struct tty_struct *tty) ser->tty = tty_kref_get(tty); ser->dev = dev; debugfs_init(ser, tty); - tty->receive_room = N_TTY_BUF_SIZE; + tty->receive_room = 4096; tty->disc_data = ser; set_bit(TTY_DO_WRITE_WAKEUP, &tty->flags); rtnl_lock(); From patchwork Mon Mar 17 07:00:19 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 874332 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4629821B195; Mon, 17 Mar 2025 07:00:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194857; cv=none; b=lLyMrpNh5heSxY+KuXecfKkCW2EOVLJYll+zYb0HCG6iNGkk1bwqkOVqV01aHOVYuMNL9hEGKXRqZzqJ7P9k74ih2ECHagYg/xene83enFQtBS0bjMaJPwzfLoqNPqEt0zBxwBMrt3rME5xmwu8jzpBHorSrGLGkUYqhBeoGIkI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194857; c=relaxed/simple; bh=ExrbFzyWjpREuCHAXalh4ZjQecemvlF9HftqJVK5gFI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WpgMok6wqsY/oSH87cT5XHBzqtR40lups/0SES5rooEHGXbT3Df3ciaTld5UTUI2Dw3PGWVrJHRgFw8Kr2DoHTppL5ZyNKUEAUv+qsqK3AtQ7Cr5vWqnzhqGkGcAVHXNUv0p9gdru114FTonvrBEIVA/ZboKKTdSBRSOwZvstW0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=rhqEEzlL; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="rhqEEzlL" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A71F0C4CEE3; Mon, 17 Mar 2025 07:00:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742194856; bh=ExrbFzyWjpREuCHAXalh4ZjQecemvlF9HftqJVK5gFI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rhqEEzlLWdYzZqLxMXvpceAu8PysyUY8dmQShzWJOiSJOV0uI8oDr/hspLqF5u3Bo NwLuuplOjZlbvUshUeMT+Jcng8MhHdc/fFfwi/RHDjF2ZVXOdT03Pv2RdRIsH+Q7l1 Gmh/NlBJ9nO63274U5psivykXDZH3ST4UxjM3DXtvDSkdbiJmEsoL6qMNdQptv+6/x YDdJjTJcc9BRktl9DDNmuSp1n331NCFbcKpYFch8CkXXUcfbNz7yBvnOk0K0BAQpX8 ApAsAFlnCI4myabJZs3m2UeuZ1fdK+0u+Ufs6Klm4j3V/AImn9iVrpLZ+9qpEiZFmy cO8gVqNpgOSQQ== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH v2 04/31] tty: move N_TTY_BUF_SIZE to n_tty Date: Mon, 17 Mar 2025 08:00:19 +0100 Message-ID: <20250317070046.24386-5-jirislaby@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250317070046.24386-1-jirislaby@kernel.org> References: <20250317070046.24386-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 "N_TTY_BUF_SIZE" is private to n_tty and shall not be exposed to the world. Definitely not in tty.h somewhere in the middle of "struct tty_struct". This is a remnant of moving "read_flags" to "struct n_tty_data" in commit 3fe780b379fa ("TTY: move ldisc data from tty_struct: bitmaps"). But some cleanup was needed first (in previous patches). Signed-off-by: Jiri Slaby (SUSE) --- drivers/tty/n_tty.c | 2 ++ include/linux/tty.h | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c index 5e9ca4376d68..2c5995019dd1 100644 --- a/drivers/tty/n_tty.c +++ b/drivers/tty/n_tty.c @@ -56,6 +56,8 @@ */ #define WAKEUP_CHARS 256 +#define N_TTY_BUF_SIZE 4096 + /* * This defines the low- and high-watermarks for throttling and * unthrottling the TTY driver. These watermarks are used for diff --git a/include/linux/tty.h b/include/linux/tty.h index 6bb4fb3845f0..0a46e4054dec 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h @@ -239,7 +239,6 @@ struct tty_struct { struct list_head tty_files; -#define N_TTY_BUF_SIZE 4096 struct work_struct SAK_work; } __randomize_layout; From patchwork Mon Mar 17 07:00:20 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 874690 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BD6B321A458; Mon, 17 Mar 2025 07:00:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194858; cv=none; b=G3ZnOMH9O5I7eGHpUqb5XzXunFb5xvnoYSb3aOrXl/hUJti+H5nK8rrAf8Cm131UcPfQvwz4jsNlMBQmClZBCF640++YHYsUNPLK9nDSMFiNiLKhikF6HYWcmZji3dGMMbJfsaGEUj33kSsa87foDcCL5wELmof5Au+zEGkRjWs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194858; c=relaxed/simple; bh=heoyOrgbbFmz7nxxRN+z8nbd3qdiXGzHhNH5YXrgRyY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=IXnb9Mx+fR0LtjqOhC4lbGM3u1JC6wKGUcrUTrxw35h2W6sUIll0KeguGgYD904Wy4jsOfmsqNEQZI+8SFhUKVmChBTWKTrVp0x+dzXmsS1j1ry6CwJmjLbcEml0ITMCoiud+Ov3IhmmXUqi28cHkMU8K2+0flhS2TLciNYujYc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=eE0thvIf; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="eE0thvIf" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 30676C4CEF2; Mon, 17 Mar 2025 07:00:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742194858; bh=heoyOrgbbFmz7nxxRN+z8nbd3qdiXGzHhNH5YXrgRyY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=eE0thvIfMROO0DH0N+yXkOIQeRWPWSXmtYGC4Iio3VcN3nAQ2lPw9EcsLN8l4fGDX 8ZiGstGFHG+Hfpc4CqN5RSc0s0an5OrahZo2z2Pw5kh1r9N4MheIISG0TCZBguOlvI 0vti60ezltCh8d1luu5vdlLcGZ1bvBUku0hMS+ojmAXHyySxLPLiHjvQ9Z5UzQXA5T AmitiXTmK1shk3jAX7FRh/vrbPycLhjIbXKaqC5fcw/Cf+Mb3jBXKmD3+OWfSauozt ruvt1HOZ3Al4Wv6cAdFgojSHxxbijeUR96LlDJto9WtZBcow7fg0jJEDAE99Cbshvo 6nM6d6u+GvyDw== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH v2 05/31] tty: n_tty: use uint for space returned by tty_write_room() Date: Mon, 17 Mar 2025 08:00:20 +0100 Message-ID: <20250317070046.24386-6-jirislaby@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250317070046.24386-1-jirislaby@kernel.org> References: <20250317070046.24386-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 tty_write_room() returns an "unsigned int". So in case some insane driver (like my tty test driver) returns (legitimate) UINT_MAX from its tty_operations::write_room(), n_tty is confused on several places. For example, in process_output_block(), the result of tty_write_room() is stored into (signed) "int". So this UINT_MAX suddenly becomes -1. And that is extended to ssize_t and returned from process_output_block(). This causes a write() to such a node to receive -EPERM (which is -1). Fix that by using proper "unsigned int" and proper "== 0" test. And return 0 constant directly in that "if", so that it is immediately clear what is returned ("space" equals to 0 at that point). Similarly for process_output() and __process_echoes(). Note this does not fix any in-tree driver as of now. If you want "Fixes: something", it would be commit 03b3b1a2405c ("tty: make tty_operations::write_room return uint"). I intentionally do not mark this patch by a real tag below. Signed-off-by: Jiri Slaby (SUSE) --- drivers/tty/n_tty.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c index 2c5995019dd1..765d24268d75 100644 --- a/drivers/tty/n_tty.c +++ b/drivers/tty/n_tty.c @@ -488,7 +488,8 @@ static int do_output_char(u8 c, struct tty_struct *tty, int space) static int process_output(u8 c, struct tty_struct *tty) { struct n_tty_data *ldata = tty->disc_data; - int space, retval; + unsigned int space; + int retval; mutex_lock(&ldata->output_lock); @@ -524,16 +525,16 @@ static ssize_t process_output_block(struct tty_struct *tty, const u8 *buf, unsigned int nr) { struct n_tty_data *ldata = tty->disc_data; - int space; - int i; + unsigned int space; + int i; const u8 *cp; mutex_lock(&ldata->output_lock); space = tty_write_room(tty); - if (space <= 0) { + if (space == 0) { mutex_unlock(&ldata->output_lock); - return space; + return 0; } if (nr > space) nr = space; @@ -698,7 +699,7 @@ static int n_tty_process_echo_ops(struct tty_struct *tty, size_t *tail, static size_t __process_echoes(struct tty_struct *tty) { struct n_tty_data *ldata = tty->disc_data; - int space, old_space; + unsigned int space, old_space; size_t tail; u8 c; From patchwork Mon Mar 17 07:00:21 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 874331 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DCCE921B8F2; Mon, 17 Mar 2025 07:00:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194860; cv=none; b=RNHagxMT/S+anhiQq1f2YCzhRJrVhPxG5OzV+CKwb2Ef/cAtYwwEQvufaWT1vRsriKuraLkT6O6gS2FrObzX84I7NrZ8FT85t14e0RSEq9zI/mg9u6Mq3kfo1FJ6YMh0rThAENurUQdMUtMC0r3oj77Iwyzy7MDugJeDbMJK5G0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194860; c=relaxed/simple; bh=oMwXwvcyJF3+0cugA5/hh39oVHV+CqhbfuVfEziwmAo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WuEl7Zbw2D/yJugfbDwh5G8UJELTKZXVN8RHe1+CtxHDtIZfWEbRHAr5ZoTECEzcZTvcSgWtnIQlqyhDFIOErn5+2iygPk4HtwBoCvOfpR9Tv6h5+4vPW0ldV6egAivDDdp/zVO1vIyvNxh9xfgld1XWwGQaegL3g9cFf6PdTT4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=NL/n5AUP; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="NL/n5AUP" Received: by smtp.kernel.org (Postfix) with ESMTPSA id AE70FC4CEEC; Mon, 17 Mar 2025 07:00:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742194859; bh=oMwXwvcyJF3+0cugA5/hh39oVHV+CqhbfuVfEziwmAo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=NL/n5AUPun4QKbI0/Tj1AcGrkbxcxx8Ea/Sb8YkPgKeHvMZSjQ5bAT+E6nLUCXcqG krBysS0Dv/r7kDSq8lPs5QzNl/bUJO/IkRN4vpe/lkM22zqq8mGIUWn/eScymj6hp3 1iixw69qZi8lfkI2DwyPFvTqPQJGBQlkwwVT3GTi5KM6IxJgvN2HM910MwRV2NdBma XuMqcFqtno2h2ojtCZX+pZu1NgD4yIk/57MmIgn6h31AKrIwMmc77fZ8A5hqofNG+p ygc53VlKT7TWCQwbi1OLpQoo+l1SPjInixxvXph/iIGtPY7fT8L87w10g8cIoAiRaM tbA6OPQOE8EyA== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH v2 06/31] tty: n_tty: simplify process_output() Date: Mon, 17 Mar 2025 08:00:21 +0100 Message-ID: <20250317070046.24386-7-jirislaby@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250317070046.24386-1-jirislaby@kernel.org> References: <20250317070046.24386-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Using guard(mutex), the function can be written in a much more efficient way. Signed-off-by: Jiri Slaby (SUSE) --- drivers/tty/n_tty.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c index 765d24268d75..df52aae5f71a 100644 --- a/drivers/tty/n_tty.c +++ b/drivers/tty/n_tty.c @@ -488,19 +488,13 @@ static int do_output_char(u8 c, struct tty_struct *tty, int space) static int process_output(u8 c, struct tty_struct *tty) { struct n_tty_data *ldata = tty->disc_data; - unsigned int space; - int retval; - mutex_lock(&ldata->output_lock); + guard(mutex)(&ldata->output_lock); - space = tty_write_room(tty); - retval = do_output_char(c, tty, space); - - mutex_unlock(&ldata->output_lock); - if (retval < 0) + if (do_output_char(c, tty, tty_write_room(tty)) < 0) return -1; - else - return 0; + + return 0; } /** From patchwork Mon Mar 17 07:00:22 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 874689 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7D37521C16E; Mon, 17 Mar 2025 07:01:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194861; cv=none; b=Q40AGFU+gmKvT3ru3i2Ry5TOr2xcuaoAoqBNOwFM8Vd8RTXBtpJfY9v44mBQxbzFDyQYkrPdixzSVZH8u698w0YAAiX8eH3XtcSQ61G0a76Yn8CLmR7xt8D0bBniULUMEa7/wliAZKyLX1nJlGKgxlQZ5xlq3PT647HWDpq8p8s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194861; c=relaxed/simple; bh=plurQo8sBiuqrUN+GnUsQOZRDBrXhR0tlCQG5LFRAKc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mzuBARsWUr6AIVkXTLi3gFnGjzzPts0MkRbhHJb6ooH1oFsJjreezQ3mgN7n8OtjwPr903g4ztnB4rSiciMro8yOgZqlwOBbmcyifdxIA2JVIkfO0rJIiS19XujLMTBsynplC4TvN9a8zjbIccu1R5lgnltN6CEG/MBkQPY1YBk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=SRoKbbPn; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="SRoKbbPn" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 38704C4CEE3; Mon, 17 Mar 2025 07:01:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742194861; bh=plurQo8sBiuqrUN+GnUsQOZRDBrXhR0tlCQG5LFRAKc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SRoKbbPnALW504MG+5RnseH4/paOqI1lY//iK62PklHZzWqqqAxnVtl0+Jsl26D5y cWv7MkfEcIbZ0IrRfOVVaHDsIeDRZH7jWQ//oRciU41/P2azZRhHC1qyt3P9swm0nM RqwOE/MzIopMWBIlLXuvyrjjspvvCOAlsz3pT5j6TgTM+VcbTR/SYUWdsK9PE4Jy90 K1Cp9CfeL+Tb2c23uWYthbJijn9HHhRoNaUpe4UqwcvtgLSmVv8rIh4roKxxtFwAKG nFaaSX5K51yahXchwMK7ka+3d6itkslVCvJtqxKzDkY9Jzh02Ya2v8YCvVCsPkTmo2 I6QQTVYTmzYRw== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH v2 07/31] tty: n_tty: clean up process_output_block() Date: Mon, 17 Mar 2025 08:00:22 +0100 Message-ID: <20250317070046.24386-8-jirislaby@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250317070046.24386-1-jirislaby@kernel.org> References: <20250317070046.24386-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 * Use guard(mutex), which results in: - the function can return directly when "space == 0". - "i" can now be "unsigned" as it is no longer abused to hold a retval from tty->ops->write(). Note the compared-to "nr" is already "unsigned". * The end label is now dubbed "do_write" as that is what happens there. Unlike the uncertain "break_out" name. Signed-off-by: Jiri Slaby (SUSE) --- drivers/tty/n_tty.c | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c index df52aae5f71a..5d172edbb03c 100644 --- a/drivers/tty/n_tty.c +++ b/drivers/tty/n_tty.c @@ -519,17 +519,15 @@ static ssize_t process_output_block(struct tty_struct *tty, const u8 *buf, unsigned int nr) { struct n_tty_data *ldata = tty->disc_data; - unsigned int space; - int i; + unsigned int space, i; const u8 *cp; - mutex_lock(&ldata->output_lock); + guard(mutex)(&ldata->output_lock); space = tty_write_room(tty); - if (space == 0) { - mutex_unlock(&ldata->output_lock); + if (space == 0) return 0; - } + if (nr > space) nr = space; @@ -541,18 +539,18 @@ static ssize_t process_output_block(struct tty_struct *tty, if (O_ONLRET(tty)) ldata->column = 0; if (O_ONLCR(tty)) - goto break_out; + goto do_write; ldata->canon_column = ldata->column; break; case '\r': if (O_ONOCR(tty) && ldata->column == 0) - goto break_out; + goto do_write; if (O_OCRNL(tty)) - goto break_out; + goto do_write; ldata->canon_column = ldata->column = 0; break; case '\t': - goto break_out; + goto do_write; case '\b': if (ldata->column > 0) ldata->column--; @@ -560,18 +558,15 @@ static ssize_t process_output_block(struct tty_struct *tty, default: if (!iscntrl(c)) { if (O_OLCUC(tty)) - goto break_out; + goto do_write; if (!is_continuation(c, tty)) ldata->column++; } break; } } -break_out: - i = tty->ops->write(tty, buf, i); - - mutex_unlock(&ldata->output_lock); - return i; +do_write: + return tty->ops->write(tty, buf, i); } static int n_tty_process_echo_ops(struct tty_struct *tty, size_t *tail, From patchwork Mon Mar 17 07:00:23 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 874330 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 21AF221B8F2; Mon, 17 Mar 2025 07:01:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194863; cv=none; b=mnhAu+lBDYqS4mcJ/uhcVl59lCCsZl1A9C+zeR/i7zouom1za2pEecFMCLxM/sKXTuYlXtxJWNnFVJwCc5QAsY4m6OTzW9Ksucv7iDQnJShvlfIwtW6VyuQBh3JQ570tf2Eo8jepC5rNSkTXVmPp59FcnjpGkp8Y72bc7hH6MS0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194863; c=relaxed/simple; bh=xo2wzApT4f3g3LzK5ghtUL4J3vTwfxNmaE8vc3xfEFI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NHdasw9tWxF5ftQlPi+NgdPjoAUbPuAPpOhtQjlWAXpK8QcVZvtwUbJf2B3d+QHB40IBsrJej2t8LHQyVK1z2DJGaBb9mgk7KeKJvoOLzVdUp24+IYkorCeCkmvvaqgxwTe85qXaL0TYUaIPmxaA0ZPDWlBENJDHh0670aTepsI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=hqTl+ami; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="hqTl+ami" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B8E91C4CEEE; Mon, 17 Mar 2025 07:01:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742194862; bh=xo2wzApT4f3g3LzK5ghtUL4J3vTwfxNmaE8vc3xfEFI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=hqTl+amiZOiGgcodN2pDz+OcgY6Ao+U2tHSEonSbjdL0h4H8LKjxj9rzeRLdeNaL9 zPj/GPqwaWVnp41HCS4jiMr2t/ql7PQfc0Mu+U1g0PcuXmx7BehoRO8JmyoAzU0nsW d7Be27+uS4vmGNnt3FtqxhSDq0sdVkfxpt80t9/U5EaxfEEPIXcICxA+f2gd2MP+kU c5L4NbYHdBccLGX0gjK3pmUDSZ+vdsNrAlcap59A9XKog0vRaeeqtHQBVmaD/9+GmQ 6fiZfs3dynxVJn9b+vKxt/Uiz6Q9Y0V5ahCej54etfFdDMcub4g1tWoXQci9nY68xF 4fqsAC47Tu27g== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH v2 08/31] tty: n_tty: drop n_tty_trace() Date: Mon, 17 Mar 2025 08:00:23 +0100 Message-ID: <20250317070046.24386-9-jirislaby@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250317070046.24386-1-jirislaby@kernel.org> References: <20250317070046.24386-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 This n_tty_trace() is an always disabled debugging macro. It comes from commit 32f13521ca68 ("n_tty: Line copy to user buffer in canonical mode"). Drop it as it is dead for over a decade. Signed-off-by: Jiri Slaby (SUSE) --- drivers/tty/n_tty.c | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c index 5d172edbb03c..43ba740792d9 100644 --- a/drivers/tty/n_tty.c +++ b/drivers/tty/n_tty.c @@ -81,14 +81,6 @@ #define ECHO_BLOCK 256 #define ECHO_DISCARD_WATERMARK N_TTY_BUF_SIZE - (ECHO_BLOCK + 32) - -#undef N_TTY_TRACE -#ifdef N_TTY_TRACE -# define n_tty_trace(f, args...) trace_printk(f, ##args) -#else -# define n_tty_trace(f, args...) no_printk(f, ##args) -#endif - struct n_tty_data { /* producer-published */ size_t read_head; @@ -2026,9 +2018,6 @@ static bool canon_copy_from_read_buf(const struct tty_struct *tty, u8 **kbp, tail = MASK(ldata->read_tail); size = min_t(size_t, tail + n, N_TTY_BUF_SIZE); - n_tty_trace("%s: nr:%zu tail:%zu n:%zu size:%zu\n", - __func__, *nr, tail, n, size); - eol = find_next_bit(ldata->read_flags, size, tail); more = n - (size - tail); if (eol == N_TTY_BUF_SIZE && more) { @@ -2046,9 +2035,6 @@ static bool canon_copy_from_read_buf(const struct tty_struct *tty, u8 **kbp, if (!found || read_buf(ldata, eol) != __DISABLED_CHAR) n = c; - n_tty_trace("%s: eol:%zu found:%d n:%zu c:%zu tail:%zu more:%zu\n", - __func__, eol, found, n, c, tail, more); - tty_copy(tty, *kbp, tail, n); *kbp += n; *nr -= n; From patchwork Mon Mar 17 07:00:24 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 874688 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D69DB21C9F3; Mon, 17 Mar 2025 07:01:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194864; cv=none; b=ZX1fLgQH2FZTHmmegm4zsEZWhx4ujPgnrIvBFXCfr54RAd17b7VQeXC+UXy+4B5QSaBi/HY2Rx02Jy+UUChmLnHQXN+LV2w6RX4H3MUu33m9WV53qPa51TVs6Ayh0pwqcwd5jkDIJGYH3qeMxWyNcixBgVHL6y+rZNu0ZmmJK5g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194864; c=relaxed/simple; bh=q78Y+Vzll7F5ggoZ4T8kmkLDhTPdIC9TLxncg6aCgSI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PMAmFp3ENn080vi5vVHVXn6MtchpQHDbuHL/fE4faTNokq+hQSFQ568h1bcxMw0wchHV8xM61oCJARGybZGvirphjoUixaDgo4M8cupGwUDx0Tu/M3RiCA5gLyMlqObHVYNz/AHPZOwOnC/y0yq5w0v/ZivIu+3LZxZNlYxmBXE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=e0mJwRJ6; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="e0mJwRJ6" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 41D13C4CEE3; Mon, 17 Mar 2025 07:01:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742194864; bh=q78Y+Vzll7F5ggoZ4T8kmkLDhTPdIC9TLxncg6aCgSI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=e0mJwRJ6tvV6RJDF7vozw2nFkv+JzyoXPbUnC0f3BiDVmhg570pXEXEHNC5ujvWqC 1h1v8nxYv9MAF7Ctjf4GrPBe9OC4WE2WAw2Ch2PnoIDWhx2d2wNPgXo7wiXeDJo8km BlLkbZ1BYv5TDjVQI8LA5TQN1w9F2O8EibUrLVhDNQg8UzxQCLrPC/4UA9LDcHl7ZA SokTVss6NVvo/DlyPb5hqx2dMThjClbkIpsOU3u/SAF+cxsf8eoThT5wJH2LBKD7+h cCHggq8WWEtWZzDXx+JpxeualZkIi8H7vJRwf9wYX/xBUUAYySm/TItyiBF0CulPGd WskuAtSysLWVw== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH v2 09/31] tty: n_tty: extract n_tty_continue_cookie() from n_tty_read() Date: Mon, 17 Mar 2025 08:00:24 +0100 Message-ID: <20250317070046.24386-10-jirislaby@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250317070046.24386-1-jirislaby@kernel.org> References: <20250317070046.24386-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 n_tty_read() is a very long function doing too much of different stuff. Extract the "cookie" (continuation read) handling to a separate function: n_tty_continue_cookie(). Signed-off-by: Jiri Slaby (SUSE) --- drivers/tty/n_tty.c | 66 ++++++++++++++++++++++++--------------------- 1 file changed, 36 insertions(+), 30 deletions(-) diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c index 43ba740792d9..88aa5f9cbe5e 100644 --- a/drivers/tty/n_tty.c +++ b/drivers/tty/n_tty.c @@ -2111,6 +2111,39 @@ static int job_control(struct tty_struct *tty, struct file *file) return __tty_check_change(tty, SIGTTIN); } +/* + * We still hold the atomic_read_lock and the termios_rwsem, and can just + * continue to copy data. + */ +static ssize_t n_tty_continue_cookie(struct tty_struct *tty, u8 *kbuf, + size_t nr, void **cookie) +{ + struct n_tty_data *ldata = tty->disc_data; + u8 *kb = kbuf; + + if (ldata->icanon && !L_EXTPROC(tty)) { + /* + * If we have filled the user buffer, see if we should skip an + * EOF character before releasing the lock and returning done. + */ + if (!nr) + canon_skip_eof(ldata); + else if (canon_copy_from_read_buf(tty, &kb, &nr)) + return kb - kbuf; + } else { + if (copy_from_read_buf(tty, &kb, &nr)) + return kb - kbuf; + } + + /* No more data - release locks and stop retries */ + n_tty_kick_worker(tty); + n_tty_check_unthrottle(tty); + up_read(&tty->termios_rwsem); + mutex_unlock(&ldata->atomic_read_lock); + *cookie = NULL; + + return kb - kbuf; +} /** * n_tty_read - read function for tty @@ -2144,36 +2177,9 @@ static ssize_t n_tty_read(struct tty_struct *tty, struct file *file, u8 *kbuf, bool packet; size_t old_tail; - /* - * Is this a continuation of a read started earler? - * - * If so, we still hold the atomic_read_lock and the - * termios_rwsem, and can just continue to copy data. - */ - if (*cookie) { - if (ldata->icanon && !L_EXTPROC(tty)) { - /* - * If we have filled the user buffer, see - * if we should skip an EOF character before - * releasing the lock and returning done. - */ - if (!nr) - canon_skip_eof(ldata); - else if (canon_copy_from_read_buf(tty, &kb, &nr)) - return kb - kbuf; - } else { - if (copy_from_read_buf(tty, &kb, &nr)) - return kb - kbuf; - } - - /* No more data - release locks and stop retries */ - n_tty_kick_worker(tty); - n_tty_check_unthrottle(tty); - up_read(&tty->termios_rwsem); - mutex_unlock(&ldata->atomic_read_lock); - *cookie = NULL; - return kb - kbuf; - } + /* Is this a continuation of a read started earlier? */ + if (*cookie) + return n_tty_continue_cookie(tty, kbuf, nr, cookie); retval = job_control(tty, file); if (retval < 0) From patchwork Mon Mar 17 07:00:25 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 874329 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 00F6821CA13; Mon, 17 Mar 2025 07:01:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194866; cv=none; b=L5Eux1PrCFrB2DcYoRVM2QkFqbWT+dyS+667Ozq0T7rSOnWfzcQACCE0/oiIKlAPVErI518Ax9/NZejYSYYl2krpYj6tW9nyLJjSwwpSwQnMI3KIi//5WaToSTpdps/VO8NprM27zE6NSgTehbHrUT/EEQDKCNoOIqtXw6gWLJQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194866; c=relaxed/simple; bh=KtXCMXaczl+E79GCAttWES8YpJxjKFSJ1NhubZhJFVM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lQIzdwuEasWPyYfiQisvKvTPB+KyNaPsCsMWl42qby6hSSZPSPCzlmEGQPL0t+hgZf+9o4xG1UvEIbNqJzfXycshclXrcXZLhFSsOouNlefGxbDg3WM+RGK8HxB3cGmNvGf39x4uRvi3zrSgLcGsWdx5ui634cqiEEPgwmZLqt4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=mNIdubXG; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="mNIdubXG" Received: by smtp.kernel.org (Postfix) with ESMTPSA id BF0AAC4CEF0; Mon, 17 Mar 2025 07:01:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742194865; bh=KtXCMXaczl+E79GCAttWES8YpJxjKFSJ1NhubZhJFVM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=mNIdubXGnt2oPQVpmUU6XwMKsOKaPBLqU7f9asvtV1B1/Gq3MVzsQWSzRTdJ7+cTS OhXbyGh9gkMD2w2FcSwrIBdb4ukY9D0a3hr+xzdA/H7A6XZkboZhxSqfSuBNoYxAMp 8EJgMSz/dQbv8ScimjWgRGiWXQo1fPuBlg0b8/U06m5oTCFgcsiwPtofucMfeSS6tk oSL73g2ZWeUOfIGHjmAb62GKw5Ug2tLyHHoHFIvod1VSJP8y2I9VvtAq5rXdkagJwG i0MpgkZwGKGIAPH5xxijFfhYWcGCH0PDK60zQSmUdXHCiyJb47ltP5AtMe+1fvG2TA W1LH5AcWvvapA== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH v2 10/31] tty: n_tty: extract n_tty_wait_for_input() Date: Mon, 17 Mar 2025 08:00:25 +0100 Message-ID: <20250317070046.24386-11-jirislaby@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250317070046.24386-1-jirislaby@kernel.org> References: <20250317070046.24386-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 n_tty_read() is a very long function doing too much of different stuff. Extract the "wait for input" to a separate function: n_tty_wait_for_input(). It returns an error (< 0), no input (0), or has potential input (1). Signed-off-by: Jiri Slaby (SUSE) --- drivers/tty/n_tty.c | 57 ++++++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c index 88aa5f9cbe5e..0e3eb18490f0 100644 --- a/drivers/tty/n_tty.c +++ b/drivers/tty/n_tty.c @@ -2145,6 +2145,33 @@ static ssize_t n_tty_continue_cookie(struct tty_struct *tty, u8 *kbuf, return kb - kbuf; } +static int n_tty_wait_for_input(struct tty_struct *tty, struct file *file, + struct wait_queue_entry *wait, long *timeout) +{ + if (test_bit(TTY_OTHER_CLOSED, &tty->flags)) + return -EIO; + if (tty_hung_up_p(file)) + return 0; + /* + * Abort readers for ttys which never actually get hung up. + * See __tty_hangup(). + */ + if (test_bit(TTY_HUPPING, &tty->flags)) + return 0; + if (!*timeout) + return 0; + if (tty_io_nonblock(tty, file)) + return -EAGAIN; + if (signal_pending(current)) + return -ERESTARTSYS; + + up_read(&tty->termios_rwsem); + *timeout = wait_woken(wait, TASK_INTERRUPTIBLE, *timeout); + down_read(&tty->termios_rwsem); + + return 1; +} + /** * n_tty_read - read function for tty * @tty: tty device @@ -2234,34 +2261,12 @@ static ssize_t n_tty_read(struct tty_struct *tty, struct file *file, u8 *kbuf, tty_buffer_flush_work(tty->port); down_read(&tty->termios_rwsem); if (!input_available_p(tty, 0)) { - if (test_bit(TTY_OTHER_CLOSED, &tty->flags)) { - retval = -EIO; + int ret = n_tty_wait_for_input(tty, file, &wait, + &timeout); + if (ret <= 0) { + retval = ret; break; } - if (tty_hung_up_p(file)) - break; - /* - * Abort readers for ttys which never actually - * get hung up. See __tty_hangup(). - */ - if (test_bit(TTY_HUPPING, &tty->flags)) - break; - if (!timeout) - break; - if (tty_io_nonblock(tty, file)) { - retval = -EAGAIN; - break; - } - if (signal_pending(current)) { - retval = -ERESTARTSYS; - break; - } - up_read(&tty->termios_rwsem); - - timeout = wait_woken(&wait, TASK_INTERRUPTIBLE, - timeout); - - down_read(&tty->termios_rwsem); continue; } } From patchwork Mon Mar 17 07:00:26 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 874687 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E012A21ABB7; Mon, 17 Mar 2025 07:01:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194868; cv=none; b=BGA+WsHl/OrWQqdhQ0nnJ4nVs1obbDV7BzpG8BWJLJdt56Mv5SIx7cYc1f4kQkEzvHsgxiKJPtRnvfJe4nLALh2qIjjT5btFxkL5D84qI8s2bizhjbopcYozhNrW6qH7yg3ssqYCVV/JgFWFJKBPpnyoh0uMZgFKl08yP9OVII4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194868; c=relaxed/simple; bh=OCRjQPfORu1jFCTk4sWvvQt3O/fs8afQ659O4ETP8QA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Dih6Q8LNRvZ5reaIUCETwpWUMGv8GiAyTCivPWEGfm1k+2mHwShEmIUZxckRF0SmgcHYksSkzm5GxsRA7PAX9jear3Q9Di5wNDrJH1DyY6ecvN7JrCaWzUqBazOBc4fsjx2fDpVJCmiP9OD3yLoMLmqlGjcw+J30N2QfWyOUrnE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ujYvSyjZ; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ujYvSyjZ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 47A9CC4CEEC; Mon, 17 Mar 2025 07:01:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742194867; bh=OCRjQPfORu1jFCTk4sWvvQt3O/fs8afQ659O4ETP8QA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ujYvSyjZc4z8Ud75Rc6FZCsmekXHF3sAb72Xl0Aqd4dOW34HJ5pw75SBUPTXV7wIP y4z1tQlL30xtJXKbewqezaLzbPNYX42PMs1Do4s0U+jMKaMH0FSZ6A0NzjyXYHc6jk A211+0shszF3KRWolV9KATAJOix8vdrPpIadXmMa0de6w9JxjXLpK+Knx4kkKwI/51 RQy6x2iCl/HEXvoS9BBT+UV82dbWc5xDdySonpQKcyDRplGu99BOqihpAhukp1XRfY UXbINEoem27TCxDfnHYa08umDKowmDtucE/heghNcDdolbjV2gA4JhmFHDQQ4ecD1U l6I2KGklfY7tw== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH v2 11/31] tty: n_tty: move more_to_be_read to the end of n_tty_read() Date: Mon, 17 Mar 2025 08:00:26 +0100 Message-ID: <20250317070046.24386-12-jirislaby@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250317070046.24386-1-jirislaby@kernel.org> References: <20250317070046.24386-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 n_tty_read() contains "we need more data" handling deep in that function. And there is also a label (more_to_be_read) as we handle this situation from two places. It makes more sense to have all "return"s accumulated at the end of functions. And "goto" from multiple places there. Therefore, do this with the "more_to_be_read" label in n_tty_read(). After this and the previous changes, n_tty_read() is now much more easier to follow. Signed-off-by: Jiri Slaby (SUSE) --- drivers/tty/n_tty.c | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c index 0e3eb18490f0..6af3f3a0b531 100644 --- a/drivers/tty/n_tty.c +++ b/drivers/tty/n_tty.c @@ -2281,21 +2281,8 @@ static ssize_t n_tty_read(struct tty_struct *tty, struct file *file, u8 *kbuf, nr--; } - /* - * Copy data, and if there is more to be had - * and we have nothing more to wait for, then - * let's mark us for retries. - * - * NOTE! We return here with both the termios_sem - * and atomic_read_lock still held, the retries - * will release them when done. - */ - if (copy_from_read_buf(tty, &kb, &nr) && kb - kbuf >= minimum) { -more_to_be_read: - remove_wait_queue(&tty->read_wait, &wait); - *cookie = cookie; - return kb - kbuf; - } + if (copy_from_read_buf(tty, &kb, &nr) && kb - kbuf >= minimum) + goto more_to_be_read; } n_tty_check_unthrottle(tty); @@ -2322,6 +2309,18 @@ static ssize_t n_tty_read(struct tty_struct *tty, struct file *file, u8 *kbuf, retval = kb - kbuf; return retval; +more_to_be_read: + /* + * There is more to be had and we have nothing more to wait for, so + * let's mark us for retries. + * + * NOTE! We return here with both the termios_sem and atomic_read_lock + * still held, the retries will release them when done. + */ + remove_wait_queue(&tty->read_wait, &wait); + *cookie = cookie; + + return kb - kbuf; } /** From patchwork Mon Mar 17 07:00:27 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 874328 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 01C5E21CFF4; Mon, 17 Mar 2025 07:01:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194869; cv=none; b=czveVGkNS65BPXgICS0N9UGjqj7Iv/cuisELCS0V4e8FYOa2U5ulj7z7x7HSKYEzhPYcqLmZdQ+B4XmYjMap8aYCs3rOo+2WvpVct+QSnUKLStlCNKOAo/hkKPVN1f7XXEh4NemEeEfloKQL1NSRpn0yrwmxSN1nwbHGGUjk/Fc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194869; c=relaxed/simple; bh=7JSAQ3nsKYIgU5nTBK/e2Ehx9X+4olrPSXl4FMJ5cFY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=oDurKYNN0Aae7sOKntrZwzBThvOHr/psefgctlql2Z6+PHAU19vtPjtmNSx4Q5uxbndVxvMAsIhs7KnAz9IZ5aO2foamLxCirx5VicmnR9k/UJBXcRDSrQFqd7pZpDbdLCLvQx9igcS7xzNAoYA35sCl9Fo4/dlNkfOTNgG/z9w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=exkKySGB; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="exkKySGB" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C4770C4CEEE; Mon, 17 Mar 2025 07:01:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742194868; bh=7JSAQ3nsKYIgU5nTBK/e2Ehx9X+4olrPSXl4FMJ5cFY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=exkKySGBeWqe1PgAOpfJd5ApF1Cf1WgUEkNC0IP/RWj5pneKSMR9nG8zpouv5oeKR kHSEQNLzRurlHEZRS06eUvWdgBewobdAoWByK/ojPqLObtnhIP/YM18ct0ZpQ2Il/E o4qhZ58/MpX8Mw13zHtkrpWjUbO7MUM7V2An5F5WAH8XFlQN3yBpn5GEftO3KPUppk zP7B0W1SDgPTfrVj678HzcVvzH8G2UwDBCJKHSg7Q0uCBQPXHa8XXAeHwgl7R+3syH QmsrNqrhMsB34zzq639c3L6KbbeuyuA6N4FQ2E7xTL8bfZB+huOT38OAbgf8ZguTxV zJR/OPn4FHcFw== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH v2 12/31] tty: tty_driver: move TTY macros to the top Date: Mon, 17 Mar 2025 08:00:27 +0100 Message-ID: <20250317070046.24386-13-jirislaby@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250317070046.24386-1-jirislaby@kernel.org> References: <20250317070046.24386-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 So that they can be referenced in structs once converted to enums (in the next patches). Signed-off-by: Jiri Slaby (SUSE) --- include/linux/tty_driver.h | 156 ++++++++++++++++++------------------- 1 file changed, 78 insertions(+), 78 deletions(-) diff --git a/include/linux/tty_driver.h b/include/linux/tty_driver.h index d4cdc089f6c3..f3be6d56e9e5 100644 --- a/include/linux/tty_driver.h +++ b/include/linux/tty_driver.h @@ -16,6 +16,84 @@ struct tty_driver; struct serial_icounter_struct; struct serial_struct; +/** + * DOC: TTY Driver Flags + * + * TTY_DRIVER_RESET_TERMIOS + * Requests the tty layer to reset the termios setting when the last + * process has closed the device. Used for PTYs, in particular. + * + * TTY_DRIVER_REAL_RAW + * Indicates that the driver will guarantee not to set any special + * character handling flags if this is set for the tty: + * + * ``(IGNBRK || (!BRKINT && !PARMRK)) && (IGNPAR || !INPCK)`` + * + * That is, if there is no reason for the driver to + * send notifications of parity and break characters up to the line + * driver, it won't do so. This allows the line driver to optimize for + * this case if this flag is set. (Note that there is also a promise, if + * the above case is true, not to signal overruns, either.) + * + * TTY_DRIVER_DYNAMIC_DEV + * The individual tty devices need to be registered with a call to + * tty_register_device() when the device is found in the system and + * unregistered with a call to tty_unregister_device() so the devices will + * be show up properly in sysfs. If not set, all &tty_driver.num entries + * will be created by the tty core in sysfs when tty_register_driver() is + * called. This is to be used by drivers that have tty devices that can + * appear and disappear while the main tty driver is registered with the + * tty core. + * + * TTY_DRIVER_DEVPTS_MEM + * Don't use the standard arrays (&tty_driver.ttys and + * &tty_driver.termios), instead use dynamic memory keyed through the + * devpts filesystem. This is only applicable to the PTY driver. + * + * TTY_DRIVER_HARDWARE_BREAK + * Hardware handles break signals. Pass the requested timeout to the + * &tty_operations.break_ctl instead of using a simple on/off interface. + * + * TTY_DRIVER_DYNAMIC_ALLOC + * Do not allocate structures which are needed per line for this driver + * (&tty_driver.ports) as it would waste memory. The driver will take + * care. This is only applicable to the PTY driver. + * + * TTY_DRIVER_UNNUMBERED_NODE + * Do not create numbered ``/dev`` nodes. For example, create + * ``/dev/ttyprintk`` and not ``/dev/ttyprintk0``. Applicable only when a + * driver for a single tty device is being allocated. + */ +#define TTY_DRIVER_INSTALLED 0x0001 +#define TTY_DRIVER_RESET_TERMIOS 0x0002 +#define TTY_DRIVER_REAL_RAW 0x0004 +#define TTY_DRIVER_DYNAMIC_DEV 0x0008 +#define TTY_DRIVER_DEVPTS_MEM 0x0010 +#define TTY_DRIVER_HARDWARE_BREAK 0x0020 +#define TTY_DRIVER_DYNAMIC_ALLOC 0x0040 +#define TTY_DRIVER_UNNUMBERED_NODE 0x0080 + +/* tty driver types */ +#define TTY_DRIVER_TYPE_SYSTEM 0x0001 +#define TTY_DRIVER_TYPE_CONSOLE 0x0002 +#define TTY_DRIVER_TYPE_SERIAL 0x0003 +#define TTY_DRIVER_TYPE_PTY 0x0004 +#define TTY_DRIVER_TYPE_SCC 0x0005 /* scc driver */ +#define TTY_DRIVER_TYPE_SYSCONS 0x0006 + +/* system subtypes (magic, used by tty_io.c) */ +#define SYSTEM_TYPE_TTY 0x0001 +#define SYSTEM_TYPE_CONSOLE 0x0002 +#define SYSTEM_TYPE_SYSCONS 0x0003 +#define SYSTEM_TYPE_SYSPTMX 0x0004 + +/* pty subtypes (magic, used by tty_io.c) */ +#define PTY_TYPE_MASTER 0x0001 +#define PTY_TYPE_SLAVE 0x0002 + +/* serial subtype definitions */ +#define SERIAL_TYPE_NORMAL 1 + /** * struct tty_operations -- interface between driver and tty * @@ -494,84 +572,6 @@ static inline void tty_set_operations(struct tty_driver *driver, driver->ops = op; } -/** - * DOC: TTY Driver Flags - * - * TTY_DRIVER_RESET_TERMIOS - * Requests the tty layer to reset the termios setting when the last - * process has closed the device. Used for PTYs, in particular. - * - * TTY_DRIVER_REAL_RAW - * Indicates that the driver will guarantee not to set any special - * character handling flags if this is set for the tty: - * - * ``(IGNBRK || (!BRKINT && !PARMRK)) && (IGNPAR || !INPCK)`` - * - * That is, if there is no reason for the driver to - * send notifications of parity and break characters up to the line - * driver, it won't do so. This allows the line driver to optimize for - * this case if this flag is set. (Note that there is also a promise, if - * the above case is true, not to signal overruns, either.) - * - * TTY_DRIVER_DYNAMIC_DEV - * The individual tty devices need to be registered with a call to - * tty_register_device() when the device is found in the system and - * unregistered with a call to tty_unregister_device() so the devices will - * be show up properly in sysfs. If not set, all &tty_driver.num entries - * will be created by the tty core in sysfs when tty_register_driver() is - * called. This is to be used by drivers that have tty devices that can - * appear and disappear while the main tty driver is registered with the - * tty core. - * - * TTY_DRIVER_DEVPTS_MEM - * Don't use the standard arrays (&tty_driver.ttys and - * &tty_driver.termios), instead use dynamic memory keyed through the - * devpts filesystem. This is only applicable to the PTY driver. - * - * TTY_DRIVER_HARDWARE_BREAK - * Hardware handles break signals. Pass the requested timeout to the - * &tty_operations.break_ctl instead of using a simple on/off interface. - * - * TTY_DRIVER_DYNAMIC_ALLOC - * Do not allocate structures which are needed per line for this driver - * (&tty_driver.ports) as it would waste memory. The driver will take - * care. This is only applicable to the PTY driver. - * - * TTY_DRIVER_UNNUMBERED_NODE - * Do not create numbered ``/dev`` nodes. For example, create - * ``/dev/ttyprintk`` and not ``/dev/ttyprintk0``. Applicable only when a - * driver for a single tty device is being allocated. - */ -#define TTY_DRIVER_INSTALLED 0x0001 -#define TTY_DRIVER_RESET_TERMIOS 0x0002 -#define TTY_DRIVER_REAL_RAW 0x0004 -#define TTY_DRIVER_DYNAMIC_DEV 0x0008 -#define TTY_DRIVER_DEVPTS_MEM 0x0010 -#define TTY_DRIVER_HARDWARE_BREAK 0x0020 -#define TTY_DRIVER_DYNAMIC_ALLOC 0x0040 -#define TTY_DRIVER_UNNUMBERED_NODE 0x0080 - -/* tty driver types */ -#define TTY_DRIVER_TYPE_SYSTEM 0x0001 -#define TTY_DRIVER_TYPE_CONSOLE 0x0002 -#define TTY_DRIVER_TYPE_SERIAL 0x0003 -#define TTY_DRIVER_TYPE_PTY 0x0004 -#define TTY_DRIVER_TYPE_SCC 0x0005 /* scc driver */ -#define TTY_DRIVER_TYPE_SYSCONS 0x0006 - -/* system subtypes (magic, used by tty_io.c) */ -#define SYSTEM_TYPE_TTY 0x0001 -#define SYSTEM_TYPE_CONSOLE 0x0002 -#define SYSTEM_TYPE_SYSCONS 0x0003 -#define SYSTEM_TYPE_SYSPTMX 0x0004 - -/* pty subtypes (magic, used by tty_io.c) */ -#define PTY_TYPE_MASTER 0x0001 -#define PTY_TYPE_SLAVE 0x0002 - -/* serial subtype definitions */ -#define SERIAL_TYPE_NORMAL 1 - int tty_register_driver(struct tty_driver *driver); void tty_unregister_driver(struct tty_driver *driver); struct device *tty_register_device(struct tty_driver *driver, unsigned index, From patchwork Mon Mar 17 07:00:28 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 874686 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7B85D21ABC0; Mon, 17 Mar 2025 07:01:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194870; cv=none; b=mbT9wP2PI0RpAy/nX8m+WrIDWXRhhsk8E96juk8TwBIUqmZeOjV8Y6ZHH2yL+m9d9s5Kd8N9KnPjS3meu6chdWulVUo8G5TW4epHtogQulCvAOhvZxsLy/BY6jT82St6StA4nupt19FK6PtBy05NelHVmJh0QEXzf7AuZvNqOQs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194870; c=relaxed/simple; bh=EBjqzOq3n1z3GifvOiI5e4JuRJnKD7yT2pW4+DHsZHw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kLyNO2bFe8+oHFpeyxJGbEMPaARX53bdgavYX1Q5iKvr3bZT+c3z1ZEQdjIW8ypOOR0iW6N1DXFM5xhG1StgyYNGNZdhXDsJZ7NJePp7iYymrDZZMXlopuLWPtYRuMp10djFUeFcK6Fxzvu6GD29++28ag5xu4sD9PXn9zd6bA0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Qg/rzaOL; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Qg/rzaOL" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4D522C4CEE3; Mon, 17 Mar 2025 07:01:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742194870; bh=EBjqzOq3n1z3GifvOiI5e4JuRJnKD7yT2pW4+DHsZHw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Qg/rzaOLWPFmPV1hUBeHJkPn8oVqdl3r8IDA3RpIwBk+qRbB1vjkZDVGMgIzSw+Zg LzsfspGg5UT/u00KzKYO3eVl0pK3czu7sWlN+FFt6FRhtck5C0A7dG7M9pLdjB0CuZ vZKtvWolDV9ZWEh4fbR6BZ6nm7aVdLO55TW8zHN1nUKLAjqrnGml0LHQt3hG6rYBTl /o4HIQMmeLb0WxxNU8AkFbfjPSC4OExZANFtTXOQZhOJyKmulvGXOrd8xk7fKqzymS Me7uuF1Ujag+jbIdSUo3LWlkbE5UB+geBrOWpx3bUe09LF1km/5ljepmqbHNQ42tK8 8B5y5nfAOepNQ== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH v2 13/31] tty: tty_driver: convert "TTY Driver Flags" to an enum Date: Mon, 17 Mar 2025 08:00:28 +0100 Message-ID: <20250317070046.24386-14-jirislaby@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250317070046.24386-1-jirislaby@kernel.org> References: <20250317070046.24386-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Convert TTY_DRIVER_* macros (flags) to an enum. This allows for easier kernel-doc (the comment needed fine tuning), grouping of these nicely, and proper checking. Given these are flags, define them using modern BIT() instead of hex constants. It turns out (thanks, kernel-doc checker) that internal TTY_DRIVER_INSTALLED was undocumented. Fix that too. Signed-off-by: Jiri Slaby (SUSE) --- Documentation/driver-api/tty/tty_driver.rst | 2 +- include/linux/tty_driver.h | 40 ++++++++++++--------- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/Documentation/driver-api/tty/tty_driver.rst b/Documentation/driver-api/tty/tty_driver.rst index cc529f863406..f6cbffdb6e01 100644 --- a/Documentation/driver-api/tty/tty_driver.rst +++ b/Documentation/driver-api/tty/tty_driver.rst @@ -35,7 +35,7 @@ Here comes the documentation of flags accepted by tty_alloc_driver() (or __tty_alloc_driver()): .. kernel-doc:: include/linux/tty_driver.h - :doc: TTY Driver Flags + :identifiers: tty_driver_flag ---- diff --git a/include/linux/tty_driver.h b/include/linux/tty_driver.h index f3be6d56e9e5..d0d940236580 100644 --- a/include/linux/tty_driver.h +++ b/include/linux/tty_driver.h @@ -17,13 +17,19 @@ struct serial_icounter_struct; struct serial_struct; /** - * DOC: TTY Driver Flags + * enum tty_driver_flag -- TTY Driver Flags * - * TTY_DRIVER_RESET_TERMIOS + * These are flags passed to tty_alloc_driver(). + * + * @TTY_DRIVER_INSTALLED: + * Whether this driver was succesfully installed. This is a tty internal + * flag. Do not touch. + * + * @TTY_DRIVER_RESET_TERMIOS: * Requests the tty layer to reset the termios setting when the last * process has closed the device. Used for PTYs, in particular. * - * TTY_DRIVER_REAL_RAW + * @TTY_DRIVER_REAL_RAW: * Indicates that the driver will guarantee not to set any special * character handling flags if this is set for the tty: * @@ -35,7 +41,7 @@ struct serial_struct; * this case if this flag is set. (Note that there is also a promise, if * the above case is true, not to signal overruns, either.) * - * TTY_DRIVER_DYNAMIC_DEV + * @TTY_DRIVER_DYNAMIC_DEV: * The individual tty devices need to be registered with a call to * tty_register_device() when the device is found in the system and * unregistered with a call to tty_unregister_device() so the devices will @@ -45,33 +51,35 @@ struct serial_struct; * appear and disappear while the main tty driver is registered with the * tty core. * - * TTY_DRIVER_DEVPTS_MEM + * @TTY_DRIVER_DEVPTS_MEM: * Don't use the standard arrays (&tty_driver.ttys and * &tty_driver.termios), instead use dynamic memory keyed through the * devpts filesystem. This is only applicable to the PTY driver. * - * TTY_DRIVER_HARDWARE_BREAK + * @TTY_DRIVER_HARDWARE_BREAK: * Hardware handles break signals. Pass the requested timeout to the * &tty_operations.break_ctl instead of using a simple on/off interface. * - * TTY_DRIVER_DYNAMIC_ALLOC + * @TTY_DRIVER_DYNAMIC_ALLOC: * Do not allocate structures which are needed per line for this driver * (&tty_driver.ports) as it would waste memory. The driver will take * care. This is only applicable to the PTY driver. * - * TTY_DRIVER_UNNUMBERED_NODE + * @TTY_DRIVER_UNNUMBERED_NODE: * Do not create numbered ``/dev`` nodes. For example, create * ``/dev/ttyprintk`` and not ``/dev/ttyprintk0``. Applicable only when a * driver for a single tty device is being allocated. */ -#define TTY_DRIVER_INSTALLED 0x0001 -#define TTY_DRIVER_RESET_TERMIOS 0x0002 -#define TTY_DRIVER_REAL_RAW 0x0004 -#define TTY_DRIVER_DYNAMIC_DEV 0x0008 -#define TTY_DRIVER_DEVPTS_MEM 0x0010 -#define TTY_DRIVER_HARDWARE_BREAK 0x0020 -#define TTY_DRIVER_DYNAMIC_ALLOC 0x0040 -#define TTY_DRIVER_UNNUMBERED_NODE 0x0080 +enum tty_driver_flag { + TTY_DRIVER_INSTALLED = BIT(0), + TTY_DRIVER_RESET_TERMIOS = BIT(1), + TTY_DRIVER_REAL_RAW = BIT(2), + TTY_DRIVER_DYNAMIC_DEV = BIT(3), + TTY_DRIVER_DEVPTS_MEM = BIT(4), + TTY_DRIVER_HARDWARE_BREAK = BIT(5), + TTY_DRIVER_DYNAMIC_ALLOC = BIT(6), + TTY_DRIVER_UNNUMBERED_NODE = BIT(7), +}; /* tty driver types */ #define TTY_DRIVER_TYPE_SYSTEM 0x0001 From patchwork Mon Mar 17 07:00:29 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 874327 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5FCB321D590; Mon, 17 Mar 2025 07:01:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194872; cv=none; b=QPrcaJsNTblWvV59R/Q1n5V4vIxUg7TIJuuDYHrZdqu5t9qAoKr4WA76+4mjORwazYnsC+UxctHS1ivGhcLA2ECN4T2hvYxWbb2HLvd/Zmor9qfK5UHnUSwCXCm4ntpWEJpakGqGAH9tmYjV2KjaLaL5xkcV62HHrV3Y12/zpDE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194872; c=relaxed/simple; bh=2OUdKeoS1PZwCLWjaedD25YBR9wFEyiGne6/TIX6YJ8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fPh/uK7HrWBI4m843CjSz9cQrkmSd7js44Myu/lIsnLRKBqznLq5mfYNwx2U/ehigAgKujAXIShUDjhOi/Uuv7XJb5U/82O5CCQyCet3v74qKmMgFPmBNHTnEOWW3KcZ7MdURm+vEzKAlvZpo/ng17Fns4hAkI5JYAcTfHQ5YdM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=dnZ8MXuE; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="dnZ8MXuE" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CA8B0C4CEE3; Mon, 17 Mar 2025 07:01:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742194871; bh=2OUdKeoS1PZwCLWjaedD25YBR9wFEyiGne6/TIX6YJ8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dnZ8MXuElHzhTKquQN5wHu05FQfzoR05W5IAGCJcugoniXS1bN0xhb1uAzK7YovAf h3fQ5Dn+ou7chZP0gB3IxZBexchcRvSxmuhHAsAE20ZWsanqqPVfJ1O8yhbD/o/imh 9mkass7GKoKs8XCvWwfkyxrHSXOZU9O7CX0moQlw9qD58EpsiZ/3+/+mwb65OpbpFJ 3bCv/+Dh7UnXN5CZZF7sFs2COcb55rdG16W2PqtqL3D127Ge+h04UVtNXOcEisImWQ i3SK0O5EleFTYDlsioJBB/w7Zzfbqs/3CFhOTr93oTIFgD62q2gN4T7tjqVqhV29WW C0heEiDGfzS7Q== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH v2 14/31] tty: tty_driver: document both {,__}tty_alloc_driver() properly Date: Mon, 17 Mar 2025 08:00:29 +0100 Message-ID: <20250317070046.24386-15-jirislaby@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250317070046.24386-1-jirislaby@kernel.org> References: <20250317070046.24386-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 __tty_alloc_driver()'s kernel-doc needed some care: describe the return value using the standard "Returns:", and use the new enum tty_driver_flag for @flags. Then, the tty_alloc_driver() macro was undocumented, but referenced many times in the docs. Copy the docs from the above (except the @owner parameter, obviously). Signed-off-by: Jiri Slaby (SUSE) --- Documentation/driver-api/tty/tty_driver.rst | 2 ++ drivers/tty/tty_io.c | 8 +++++--- include/linux/tty_driver.h | 8 +++++++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/Documentation/driver-api/tty/tty_driver.rst b/Documentation/driver-api/tty/tty_driver.rst index f6cbffdb6e01..7138222a70f2 100644 --- a/Documentation/driver-api/tty/tty_driver.rst +++ b/Documentation/driver-api/tty/tty_driver.rst @@ -25,6 +25,8 @@ freed. For reference, both allocation and deallocation functions are explained here in detail: +.. kernel-doc:: include/linux/tty_driver.h + :identifiers: tty_alloc_driver .. kernel-doc:: drivers/tty/tty_io.c :identifiers: __tty_alloc_driver tty_driver_kref_put diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c index 449dbd216460..ca9b7d7bad2b 100644 --- a/drivers/tty/tty_io.c +++ b/drivers/tty/tty_io.c @@ -3329,10 +3329,12 @@ EXPORT_SYMBOL(tty_unregister_device); * __tty_alloc_driver - allocate tty driver * @lines: count of lines this driver can handle at most * @owner: module which is responsible for this driver - * @flags: some of %TTY_DRIVER_ flags, will be set in driver->flags + * @flags: some of enum tty_driver_flag, will be set in driver->flags * - * This should not be called directly, some of the provided macros should be - * used instead. Use IS_ERR() and friends on @retval. + * This should not be called directly, tty_alloc_driver() should be used + * instead. + * + * Returns: struct tty_driver or a PTR-encoded error (use IS_ERR() and friends). */ struct tty_driver *__tty_alloc_driver(unsigned int lines, struct module *owner, unsigned long flags) diff --git a/include/linux/tty_driver.h b/include/linux/tty_driver.h index d0d940236580..0fe38befa1b8 100644 --- a/include/linux/tty_driver.h +++ b/include/linux/tty_driver.h @@ -564,7 +564,13 @@ struct tty_driver *tty_find_polling_driver(char *name, int *line); void tty_driver_kref_put(struct tty_driver *driver); -/* Use TTY_DRIVER_* flags below */ +/** + * tty_alloc_driver - allocate tty driver + * @lines: count of lines this driver can handle at most + * @flags: some of enum tty_driver_flag, will be set in driver->flags + * + * Returns: struct tty_driver or a PTR-encoded error (use IS_ERR() and friends). + */ #define tty_alloc_driver(lines, flags) \ __tty_alloc_driver(lines, THIS_MODULE, flags) From patchwork Mon Mar 17 07:00:30 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 874685 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DC0AB220680; Mon, 17 Mar 2025 07:01:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194873; cv=none; b=kcVGWvwuw2PfFGHqkdZaf1tXjyyJJhOjrEHGmYZXHkCYCz1Wv09paHMnVWu3ZWI5KdI8cxXRSHLC2WNOJxA6UUNh9H84ZQTHTAr1OSjhGfo18HeGCezsg4OizSEK06aWbMj5QZ+PclYHNNv/Js6X9ts9JLeyMSJVmd4JIsTsWhQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194873; c=relaxed/simple; bh=BwMqY4GhVZC/Tg+ai7GbA+iNWvaoAB6mjbKe0KEA5tc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LCfUxMJ8fvVq6skZJViphQTG5higcC0Ddv3zomCjybTR3Lp3yYo1EbXH/8usE+zUTqfzMcAhKgKqDN7qss0rTFifkm6lEY/y2dP8VDDsS51f8SGPh96WJ9GA41cT9gHpqSm+oh+sIwD/6fgoZD4OGNwpXq05WdbvRaBjD+kOomE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=BJgJ2aij; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="BJgJ2aij" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5385FC4CEEE; Mon, 17 Mar 2025 07:01:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742194873; bh=BwMqY4GhVZC/Tg+ai7GbA+iNWvaoAB6mjbKe0KEA5tc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BJgJ2aijIZ4aRlCL/pSg/mGKtfqIjjl7LbUNEi1CHDW3JqKUMxXy1TgOvSs1bn1qS d3IYMs1+Q7M2Hvg1C+gDEL8hirAOetlk1RhbHjXBmfdeyhNZTL+rby/uFdZjQ66UHv Dldi1W6qEfVWjmgolI5Ip8CmrJ+CIoUUFdTy78N9GoBugU0TU9C4Od/5zKcsv8bcQs mxMkRE7X7XsKtXkwnXadwxdAsAGi6c/8hwkJKoPyKKNSGU/xZRsqy+iKaddLB+fBUK OSecr4XZ1nhuQz+y6D16FUt6sITU3u4R+fcihjueMqpWBtpjBN0B4s5idngccTaWBV EkJqCw0h1EWrA== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH v2 15/31] tty: tty_driver: introduce TTY driver sub/types enums Date: Mon, 17 Mar 2025 08:00:30 +0100 Message-ID: <20250317070046.24386-16-jirislaby@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250317070046.24386-1-jirislaby@kernel.org> References: <20250317070046.24386-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Convert TTY_DRIVER_TYPE_*, and subtype macros to two enums: tty_driver_type and tty_driver_subtype. This allows for easier kernel-doc (later), grouping of these nicely, and proper checking. The tty_driver's ::type and ::subtype now use these enums instead of bare "short". Signed-off-by: Jiri Slaby (SUSE) --- include/linux/tty_driver.h | 42 +++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/include/linux/tty_driver.h b/include/linux/tty_driver.h index 0fe38befa1b8..188ee9b768eb 100644 --- a/include/linux/tty_driver.h +++ b/include/linux/tty_driver.h @@ -81,26 +81,26 @@ enum tty_driver_flag { TTY_DRIVER_UNNUMBERED_NODE = BIT(7), }; -/* tty driver types */ -#define TTY_DRIVER_TYPE_SYSTEM 0x0001 -#define TTY_DRIVER_TYPE_CONSOLE 0x0002 -#define TTY_DRIVER_TYPE_SERIAL 0x0003 -#define TTY_DRIVER_TYPE_PTY 0x0004 -#define TTY_DRIVER_TYPE_SCC 0x0005 /* scc driver */ -#define TTY_DRIVER_TYPE_SYSCONS 0x0006 +enum tty_driver_type { + TTY_DRIVER_TYPE_SYSTEM, + TTY_DRIVER_TYPE_CONSOLE, + TTY_DRIVER_TYPE_SERIAL, + TTY_DRIVER_TYPE_PTY, + TTY_DRIVER_TYPE_SCC, + TTY_DRIVER_TYPE_SYSCONS, +}; -/* system subtypes (magic, used by tty_io.c) */ -#define SYSTEM_TYPE_TTY 0x0001 -#define SYSTEM_TYPE_CONSOLE 0x0002 -#define SYSTEM_TYPE_SYSCONS 0x0003 -#define SYSTEM_TYPE_SYSPTMX 0x0004 +enum tty_driver_subtype { + SYSTEM_TYPE_TTY = 1, + SYSTEM_TYPE_CONSOLE, + SYSTEM_TYPE_SYSCONS, + SYSTEM_TYPE_SYSPTMX, -/* pty subtypes (magic, used by tty_io.c) */ -#define PTY_TYPE_MASTER 0x0001 -#define PTY_TYPE_SLAVE 0x0002 + PTY_TYPE_MASTER = 1, + PTY_TYPE_SLAVE, -/* serial subtype definitions */ -#define SERIAL_TYPE_NORMAL 1 + SERIAL_TYPE_NORMAL = 1, +}; /** * struct tty_operations -- interface between driver and tty @@ -500,8 +500,8 @@ struct tty_operations { * @major: major /dev device number (zero for autoassignment) * @minor_start: the first minor /dev device number * @num: number of devices allocated - * @type: type of tty driver (%TTY_DRIVER_TYPE_) - * @subtype: subtype of tty driver (%SYSTEM_TYPE_, %PTY_TYPE_, %SERIAL_TYPE_) + * @type: type of tty driver (enum tty_driver_type) + * @subtype: subtype of tty driver (enum tty_driver_subtype) * @init_termios: termios to set to each tty initially (e.g. %tty_std_termios) * @flags: tty driver flags (%TTY_DRIVER_) * @proc_entry: proc fs entry, used internally @@ -533,8 +533,8 @@ struct tty_driver { int major; int minor_start; unsigned int num; - short type; - short subtype; + enum tty_driver_type type; + enum tty_driver_subtype subtype; struct ktermios init_termios; unsigned long flags; struct proc_dir_entry *proc_entry; From patchwork Mon Mar 17 07:00:31 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 874326 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3421B21ABCD; Mon, 17 Mar 2025 07:01:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194875; cv=none; b=HGxL9bAYBKUWjyp8B2jaW8af5ZcLVMB514JGXSi4vep1Sbz/J+c4uQMQ4/nFTrQMqz+xJvEMBBRLUlYAFksNZ5NneJZUiYPj9DUMF7HrWh7gGgNid+6W+o7bRPbDLFsNF5sQ6M08UMTl02U3OqdkZ8jiE2SqV2JYakUNOvOtrcM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194875; c=relaxed/simple; bh=oqmCinDwG4nsNPhnUAmEMB1q3PmaAl9+aZ6ithpsXHE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JH03l5rnNWIIiSJ3vnVnZj8e8hSRPLZ8ngDNOTfVZxaCjoDXoKRnKoemXv1AqL7ftRD9eOD1zTazT2g1tYYBY8HA+yhDMHJQrh69/U46LhaVjSiJVEfhLD8finCR63P7WYGokXknrcnkBE6DuRUoXdFA/U3bCsIQruV6e0FmWTU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=l/E1JZv7; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="l/E1JZv7" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D0B52C4CEE3; Mon, 17 Mar 2025 07:01:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742194875; bh=oqmCinDwG4nsNPhnUAmEMB1q3PmaAl9+aZ6ithpsXHE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=l/E1JZv753Gtwfph/GTpuXqNcGAyAO/j8q5grjPxMR4RcY/7v4ONU/Cg37COHzbU2 lMKLKHiRvcAlLa1Q/3RaNeVSWqY1bigLtopKrluR/c+2akbPvpU0VicSD0hDkolmPR iOrMcx/TMVBaVIf2krNbIeYe+NqCHZShGDdBNL0SQHmcSSQOZTzbp4LotD6AA6ZHq5 DlI6Ym4acO/lunJXdKMJWx12gptji++KtlfBNFzFPYgshxOvDfSHHVA7tBaU0XC3sZ wC77lC3gq2S86l0jm0iwd8+Ho7vavYJ4CTqXUJuLThJjxq2c46uz4oTSR3e1G/wLFV csa2jubrwNyMQ== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" , Rob Herring Subject: [PATCH v2 16/31] tty: serdev: drop serdev_controller_ops::write_room() Date: Mon, 17 Mar 2025 08:00:31 +0100 Message-ID: <20250317070046.24386-17-jirislaby@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250317070046.24386-1-jirislaby@kernel.org> References: <20250317070046.24386-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 In particular, serdev_device_write_room() is not called, so the whole serdev's write_room() can go. Signed-off-by: Jiri Slaby (SUSE) Cc: Rob Herring --- drivers/tty/serdev/core.c | 11 ----------- drivers/tty/serdev/serdev-ttyport.c | 9 --------- include/linux/serdev.h | 6 ------ 3 files changed, 26 deletions(-) diff --git a/drivers/tty/serdev/core.c b/drivers/tty/serdev/core.c index ebf0bbc2cff2..eb2a2e58fe78 100644 --- a/drivers/tty/serdev/core.c +++ b/drivers/tty/serdev/core.c @@ -316,17 +316,6 @@ void serdev_device_write_flush(struct serdev_device *serdev) } EXPORT_SYMBOL_GPL(serdev_device_write_flush); -int serdev_device_write_room(struct serdev_device *serdev) -{ - struct serdev_controller *ctrl = serdev->ctrl; - - if (!ctrl || !ctrl->ops->write_room) - return 0; - - return serdev->ctrl->ops->write_room(ctrl); -} -EXPORT_SYMBOL_GPL(serdev_device_write_room); - unsigned int serdev_device_set_baudrate(struct serdev_device *serdev, unsigned int speed) { struct serdev_controller *ctrl = serdev->ctrl; diff --git a/drivers/tty/serdev/serdev-ttyport.c b/drivers/tty/serdev/serdev-ttyport.c index 3d7ae7fa5018..bab1b143b8a6 100644 --- a/drivers/tty/serdev/serdev-ttyport.c +++ b/drivers/tty/serdev/serdev-ttyport.c @@ -92,14 +92,6 @@ static void ttyport_write_flush(struct serdev_controller *ctrl) tty_driver_flush_buffer(tty); } -static int ttyport_write_room(struct serdev_controller *ctrl) -{ - struct serport *serport = serdev_controller_get_drvdata(ctrl); - struct tty_struct *tty = serport->tty; - - return tty_write_room(tty); -} - static int ttyport_open(struct serdev_controller *ctrl) { struct serport *serport = serdev_controller_get_drvdata(ctrl); @@ -259,7 +251,6 @@ static int ttyport_break_ctl(struct serdev_controller *ctrl, unsigned int break_ static const struct serdev_controller_ops ctrl_ops = { .write_buf = ttyport_write_buf, .write_flush = ttyport_write_flush, - .write_room = ttyport_write_room, .open = ttyport_open, .close = ttyport_close, .set_flow_control = ttyport_set_flow_control, diff --git a/include/linux/serdev.h b/include/linux/serdev.h index ff78efc1f60d..34562eb99931 100644 --- a/include/linux/serdev.h +++ b/include/linux/serdev.h @@ -84,7 +84,6 @@ enum serdev_parity { struct serdev_controller_ops { ssize_t (*write_buf)(struct serdev_controller *, const u8 *, size_t); void (*write_flush)(struct serdev_controller *); - int (*write_room)(struct serdev_controller *); int (*open)(struct serdev_controller *); void (*close)(struct serdev_controller *); void (*set_flow_control)(struct serdev_controller *, bool); @@ -212,7 +211,6 @@ int serdev_device_break_ctl(struct serdev_device *serdev, int break_state); void serdev_device_write_wakeup(struct serdev_device *); ssize_t serdev_device_write(struct serdev_device *, const u8 *, size_t, long); void serdev_device_write_flush(struct serdev_device *); -int serdev_device_write_room(struct serdev_device *); /* * serdev device driver functions @@ -273,10 +271,6 @@ static inline ssize_t serdev_device_write(struct serdev_device *sdev, return -ENODEV; } static inline void serdev_device_write_flush(struct serdev_device *sdev) {} -static inline int serdev_device_write_room(struct serdev_device *sdev) -{ - return 0; -} #define serdev_device_driver_register(x) #define serdev_device_driver_unregister(x) From patchwork Mon Mar 17 07:00:32 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 874684 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9C05E22173A; Mon, 17 Mar 2025 07:01:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194878; cv=none; b=o9BsKj4BjjiWgjvPGLAa5SCaeeB3xvHJJ3oATSP2rZMBQd0WVewff/sILonwtN1Bv01O8fXuWu3d+iTyzpPuKyN96ttp91v8d19WOElT7EL/NbYREuEPW4OjUUxweJO4yJacj7Ohq/MgoaGAsiAfxLKK9VHZooYJ3tf3Cq4kxbo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194878; c=relaxed/simple; bh=pcONCGbc5rkoc1oArPFKfyGj44xsblbpWiNKHU45ZOY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=j0YTNbt732R16cGAOzcSh37Fvn157pxTQWRYAIz+2XnphIASJNfYSox2Gan1LSKbn84iXqfIZCd3i4O8bwQcIFechwN1t7tn3p/V8bZ0S/ji1ZZTwj6oaaupBLHIjaP7r4haiYu1NGt2AqOtEzKKJtQYrOCnJF1kDzYmKoBEcQo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=oKURqg6K; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="oKURqg6K" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 86D4BC4CEEC; Mon, 17 Mar 2025 07:01:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742194877; bh=pcONCGbc5rkoc1oArPFKfyGj44xsblbpWiNKHU45ZOY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=oKURqg6KC2TeJLrTfYjlwqYp+BfzNJHYtTvLzjIyoq1pi5bsHqp13s4QIYaybiUVt cKMiKHjzqAH1x4dIY+cYTCHVcmz9yQktgtSrm2Nc5uWBihc0PNQgc8CPu+XGSYXiDu QgPdvIP4MIa10TRbmK5++RD1ep3IWZ+BFkpgOLS8zm1dEsQe2RenbiHWsrZPclxw8P h9EpDFWqf0s51RIuo7ZgkY9o4Kb2pcAMdctZvYrrOAFMq7P+nxGShz012NT87pHQVd bIGQr+RbZHG/XQV5IFM0kWe0D6Iq/fWemdDBjaFvrFNdsnCHf1Xf9nM+e71yBvowt0 5l81OrO34t/kA== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" , Ulf Hansson , linux-mmc@vger.kernel.org Subject: [PATCH v2 17/31] tty: mmc: sdio: use bool for cts and remove parentheses Date: Mon, 17 Mar 2025 08:00:32 +0100 Message-ID: <20250317070046.24386-18-jirislaby@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250317070046.24386-1-jirislaby@kernel.org> References: <20250317070046.24386-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 'cts' in sdio_uart_check_modem_status() is considered a 'bool', but typed as signed 'int'. Make it 'bool' so it is clear the code does not care about the masked value, but true/false. Signed-off-by: Jiri Slaby (SUSE) Cc: Ulf Hansson Cc: linux-mmc@vger.kernel.org --- drivers/mmc/core/sdio_uart.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/mmc/core/sdio_uart.c b/drivers/mmc/core/sdio_uart.c index 6b7471dba3bf..7423a601e1e5 100644 --- a/drivers/mmc/core/sdio_uart.c +++ b/drivers/mmc/core/sdio_uart.c @@ -471,7 +471,7 @@ static void sdio_uart_check_modem_status(struct sdio_uart_port *port) port->icount.cts++; tty = tty_port_tty_get(&port->port); if (tty && C_CRTSCTS(tty)) { - int cts = (status & UART_MSR_CTS); + bool cts = status & UART_MSR_CTS; if (tty->hw_stopped) { if (cts) { tty->hw_stopped = false; From patchwork Mon Mar 17 07:00:33 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 874325 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9EAD3221DB1; Mon, 17 Mar 2025 07:01:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194878; cv=none; b=DZNZaDS3Bnag1Odop96hWRQevvJvcZFmUq3IHg9rBN5tlYc8nXU0Legwf0cF6f/jf1kZKgaEFc55sI+O0J9TjXuRgdVwoVAZXOqnkmnrYC266T6hTNuiBZOcADgL6SXqJ/ZXXbnklGbOvjKtnxEBdphm+6A2xL4iDX8NVPcrnMc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194878; c=relaxed/simple; bh=mDzvyTMQJLkOu1LY+PUR5ramtgI2tETWjY3grzntzH0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JLos4i4bBEHnzR+yIL38zfOkhD3yL2qQgSqxDmNojbL0zoXDDkyYJ020aHn+VRuco2xDAZnfXUhBnWKYyThWswG1wyCyIYlP9OeYVBDSB44XT+v0QaJz9OFQj663KrwKM9nV35wooIopM9R8O2U1hBOSorlyT5ssEpnRnmtjeAs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=gubqrvhu; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="gubqrvhu" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6A8C8C4CEE3; Mon, 17 Mar 2025 07:01:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742194878; bh=mDzvyTMQJLkOu1LY+PUR5ramtgI2tETWjY3grzntzH0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=gubqrvhuHzedp/HG6z//o6qcsxH8DYVSEFElNo2GwGS1k/PthCY+eQCYkOfwD7WS6 bB75WgN/5uipWlFp3d84H5eXK90WwusveHMeHweokF8vl8jg3n5vyXUFUhO4bn5Qhn Qnk31KfS3tEhxytoFlNXXfGA4ywnaAGL92kPyZAcOcNxQRlNiXw0udT69VPZTdWLL4 GmxItSvjC0WAmereI15Q+aHgZGK9F3qDmfMBVDRArOKTwIDE9Agn309YfZ0tOjWk/w x/uSC0vYRRL4VhsnLR8yK0P/hdFv7PodcRoA0jE6xsz48TxHdlMjGgux6HJ7R/kbOJ yqawVcMAqX/Sg== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH v2 18/31] tty: moxa: drop version dump to logs Date: Mon, 17 Mar 2025 08:00:33 +0100 Message-ID: <20250317070046.24386-19-jirislaby@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250317070046.24386-1-jirislaby@kernel.org> References: <20250317070046.24386-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The arbitrary MOXA_VERSION is dumped to the logs when the driver is loaded. Avoid this as a driver should be silent unless something breaks. Signed-off-by: Jiri Slaby (SUSE) --- drivers/tty/moxa.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/drivers/tty/moxa.c b/drivers/tty/moxa.c index ebaada8db929..2b75ca12cbc9 100644 --- a/drivers/tty/moxa.c +++ b/drivers/tty/moxa.c @@ -347,8 +347,6 @@ #define MX_PARMARK 0xA0 #define MX_PARSPACE 0x20 -#define MOXA_VERSION "6.0k" - #define MOXA_FW_HDRLEN 32 #define MOXAMAJOR 172 @@ -1327,9 +1325,6 @@ static int __init moxa_init(void) struct moxa_board_conf *brd = moxa_boards; unsigned int i; - printk(KERN_INFO "MOXA Intellio family driver version %s\n", - MOXA_VERSION); - tty_port_init(&moxa_service_port); moxaDriver = tty_alloc_driver(MAX_PORTS + 1, From patchwork Mon Mar 17 07:00:34 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 874683 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 21F6B21ABD6; Mon, 17 Mar 2025 07:01:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194880; cv=none; b=GTh6EXs+Ufbdkk+wUcJElfeCZ2yR5wLRIa8lamWFYIcECbv8eG9RZNoYVKF4ncrwMSQWo3lvwsYnH3Zbg2XzH3KRk9hqj0dFNghkSaboMjsO3o6uNXlLYcwzSRA/ihvNqjnYRflw0+y1KnARNfAWK7YXX2qAKyTvJ7GzRzdAZbQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194880; c=relaxed/simple; bh=EwWownPK13neyE4WZdGUG3DsFNRwckPSUyx1cbKZcNU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=R8A2VcYEipJyPidES5u8kS2UIJ+yNEfgkDXoLKlcGecZf7j75gdJmfM4OVFKNC5HkII9hSbBS6Nye01wRDXukIjz8nFX5Nk9vSyKPcxKU2ssbjp6GaxukC6Zx/mzOeGA77lJK+Vf/AxCs7Q1vfaxA86zWnY2qCF/ubOfEhTkiow= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Iw7n3n+c; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Iw7n3n+c" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E7733C4CEE3; Mon, 17 Mar 2025 07:01:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742194880; bh=EwWownPK13neyE4WZdGUG3DsFNRwckPSUyx1cbKZcNU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Iw7n3n+cCnLfOKyYoAmFsjPHr+fiVUJ4Sg28VVRE+umaV/MfDShNftA2cJMDfrqju J+XRUW8WIx6KbEZEp7q5R9bgARnFiXv0B+CixbULBHoHLPypvN+06SvBGoPURlXB4M F6hvimzMk8pWMBCaIx18XAqlTvcjjHu9Wxj/GHamo//e2jeEmdW/fQqQNbQQWx5f3Z +S6fBZnnOOPIQTwZbnU6cv8uHmPNmGoR9WOiof3FscIEEVVaOA/AzZY6dl85yp9hmD IqQzxspKvtDhZFJSJRREnzbQlUQtZmbMeweCxk+j+dq41Pn+p4ajhyVc5oigBu9R3N 2Nwp0wQe07AOA== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH v2 19/31] tty: moxa: drop ISA support Date: Mon, 17 Mar 2025 08:00:34 +0100 Message-ID: <20250317070046.24386-20-jirislaby@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250317070046.24386-1-jirislaby@kernel.org> References: <20250317070046.24386-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 I doubt anyone actually uses this driver (unlike mxser.c and serial moxa driven devices). Even less there is anyone with a moxa ISA card. The newer mxser dropped the support for ISA in 2021. Let this moxa follow now. Good diet. Signed-off-by: Jiri Slaby (SUSE) --- drivers/tty/Kconfig | 2 +- drivers/tty/moxa.c | 100 +++----------------------------------------- 2 files changed, 6 insertions(+), 96 deletions(-) diff --git a/drivers/tty/Kconfig b/drivers/tty/Kconfig index 63a494d36a1f..0f3f55372c11 100644 --- a/drivers/tty/Kconfig +++ b/drivers/tty/Kconfig @@ -210,7 +210,7 @@ config SERIAL_NONSTANDARD config MOXA_INTELLIO tristate "Moxa Intellio support" - depends on SERIAL_NONSTANDARD && (ISA || EISA || PCI) + depends on SERIAL_NONSTANDARD && PCI select FW_LOADER help Say Y here if you have a Moxa Intellio multiport serial card. diff --git a/drivers/tty/moxa.c b/drivers/tty/moxa.c index 2b75ca12cbc9..a753afcb53b5 100644 --- a/drivers/tty/moxa.c +++ b/drivers/tty/moxa.c @@ -355,33 +355,21 @@ #define MAX_PORTS_PER_BOARD 32 /* Don't change this value */ #define MAX_PORTS (MAX_BOARDS * MAX_PORTS_PER_BOARD) -#define MOXA_IS_320(brd) ((brd)->boardType == MOXA_BOARD_C320_ISA || \ - (brd)->boardType == MOXA_BOARD_C320_PCI) - -/* - * Define the Moxa PCI vendor and device IDs. - */ -#define MOXA_BUS_TYPE_ISA 0 -#define MOXA_BUS_TYPE_PCI 1 +#define MOXA_IS_320(brd) ((brd)->boardType == MOXA_BOARD_C320_PCI) enum { MOXA_BOARD_C218_PCI = 1, - MOXA_BOARD_C218_ISA, MOXA_BOARD_C320_PCI, - MOXA_BOARD_C320_ISA, MOXA_BOARD_CP204J, }; static char *moxa_brdname[] = { "C218 Turbo PCI series", - "C218 Turbo ISA series", "C320 Turbo PCI series", - "C320 Turbo ISA series", "CP-204J series", }; -#ifdef CONFIG_PCI static const struct pci_device_id moxa_pcibrds[] = { { PCI_DEVICE(PCI_VENDOR_ID_MOXA, PCI_DEVICE_ID_MOXA_C218), .driver_data = MOXA_BOARD_C218_PCI }, @@ -392,14 +380,12 @@ static const struct pci_device_id moxa_pcibrds[] = { { 0 } }; MODULE_DEVICE_TABLE(pci, moxa_pcibrds); -#endif /* CONFIG_PCI */ struct moxa_port; static struct moxa_board_conf { int boardType; int numPorts; - int busType; unsigned int ready; @@ -459,9 +445,6 @@ static unsigned int moxaLowWaterChk; static DEFINE_MUTEX(moxa_openlock); static DEFINE_SPINLOCK(moxa_lock); -static unsigned long baseaddr[MAX_BOARDS]; -static unsigned int type[MAX_BOARDS]; -static unsigned int numports[MAX_BOARDS]; static struct tty_port moxa_service_port; MODULE_AUTHOR("William Chen"); @@ -471,13 +454,6 @@ MODULE_FIRMWARE("c218tunx.cod"); MODULE_FIRMWARE("cp204unx.cod"); MODULE_FIRMWARE("c320tunx.cod"); -module_param_array(type, uint, NULL, 0); -MODULE_PARM_DESC(type, "card type: C218=2, C320=4"); -module_param_hw_array(baseaddr, ulong, ioport, NULL, 0); -MODULE_PARM_DESC(baseaddr, "base address"); -module_param_array(numports, uint, NULL, 0); -MODULE_PARM_DESC(numports, "numports (ignored for C218)"); - module_param(ttymajor, int, 0); /* @@ -723,7 +699,6 @@ static DEFINE_TIMER(moxaTimer, moxa_poll); static int moxa_check_fw_model(struct moxa_board_conf *brd, u8 model) { switch (brd->boardType) { - case MOXA_BOARD_C218_ISA: case MOXA_BOARD_C218_PCI: if (model != 1) goto err; @@ -767,7 +742,6 @@ static int moxa_load_bios(struct moxa_board_conf *brd, const u8 *buf, msleep(2000); switch (brd->boardType) { - case MOXA_BOARD_C218_ISA: case MOXA_BOARD_C218_PCI: tmp = readw(baseAddr + C218_key); if (tmp != C218_KeyCode) @@ -831,7 +805,6 @@ static int moxa_real_load_code(struct moxa_board_conf *brd, const void *ptr, switch (brd->boardType) { case MOXA_BOARD_CP204J: - case MOXA_BOARD_C218_ISA: case MOXA_BOARD_C218_PCI: key = C218_key; loadbuf = C218_LoadBuf; @@ -896,15 +869,9 @@ static int moxa_real_load_code(struct moxa_board_conf *brd, const void *ptr, return -EIO; if (MOXA_IS_320(brd)) { - if (brd->busType == MOXA_BUS_TYPE_PCI) { /* ASIC board */ - writew(0x3800, baseAddr + TMS320_PORT1); - writew(0x3900, baseAddr + TMS320_PORT2); - writew(28499, baseAddr + TMS320_CLOCK); - } else { - writew(0x3200, baseAddr + TMS320_PORT1); - writew(0x3400, baseAddr + TMS320_PORT2); - writew(19999, baseAddr + TMS320_CLOCK); - } + writew(0x3800, baseAddr + TMS320_PORT1); + writew(0x3900, baseAddr + TMS320_PORT2); + writew(28499, baseAddr + TMS320_CLOCK); } writew(1, baseAddr + Disable_IRQ); writew(0, baseAddr + Magic_no); @@ -955,7 +922,6 @@ static int moxa_load_code(struct moxa_board_conf *brd, const void *ptr, return retval; switch (brd->boardType) { - case MOXA_BOARD_C218_ISA: case MOXA_BOARD_C218_PCI: case MOXA_BOARD_CP204J: port = brd->ports; @@ -1139,7 +1105,6 @@ static int moxa_init_board(struct moxa_board_conf *brd, struct device *dev) } switch (brd->boardType) { - case MOXA_BOARD_C218_ISA: case MOXA_BOARD_C218_PCI: file = "c218tunx.cod"; break; @@ -1225,7 +1190,6 @@ static void moxa_board_deinit(struct moxa_board_conf *brd) kfree(brd->ports); } -#ifdef CONFIG_PCI static int moxa_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { @@ -1268,7 +1232,6 @@ static int moxa_pci_probe(struct pci_dev *pdev, board->boardType = board_type; switch (board_type) { - case MOXA_BOARD_C218_ISA: case MOXA_BOARD_C218_PCI: board->numPorts = 8; break; @@ -1280,7 +1243,6 @@ static int moxa_pci_probe(struct pci_dev *pdev, board->numPorts = 0; break; } - board->busType = MOXA_BUS_TYPE_PCI; retval = moxa_init_board(board, &pdev->dev); if (retval) @@ -1316,14 +1278,10 @@ static struct pci_driver moxa_pci_driver = { .probe = moxa_pci_probe, .remove = moxa_pci_remove }; -#endif /* CONFIG_PCI */ static int __init moxa_init(void) { - unsigned int isabrds = 0; int retval = 0; - struct moxa_board_conf *brd = moxa_boards; - unsigned int i; tty_port_init(&moxa_service_port); @@ -1352,64 +1310,16 @@ static int __init moxa_init(void) return -1; } - /* Find the boards defined from module args. */ - - for (i = 0; i < MAX_BOARDS; i++) { - if (!baseaddr[i]) - break; - if (type[i] == MOXA_BOARD_C218_ISA || - type[i] == MOXA_BOARD_C320_ISA) { - pr_debug("Moxa board %2d: %s board(baseAddr=%lx)\n", - isabrds + 1, moxa_brdname[type[i] - 1], - baseaddr[i]); - brd->boardType = type[i]; - brd->numPorts = type[i] == MOXA_BOARD_C218_ISA ? 8 : - numports[i]; - brd->busType = MOXA_BUS_TYPE_ISA; - brd->basemem = ioremap(baseaddr[i], 0x4000); - if (!brd->basemem) { - printk(KERN_ERR "MOXA: can't remap %lx\n", - baseaddr[i]); - continue; - } - if (moxa_init_board(brd, NULL)) { - iounmap(brd->basemem); - brd->basemem = NULL; - continue; - } - - printk(KERN_INFO "MOXA isa board found at 0x%.8lx and " - "ready (%u ports, firmware loaded)\n", - baseaddr[i], brd->numPorts); - - brd++; - isabrds++; - } - } - -#ifdef CONFIG_PCI retval = pci_register_driver(&moxa_pci_driver); - if (retval) { + if (retval) printk(KERN_ERR "Can't register MOXA pci driver!\n"); - if (isabrds) - retval = 0; - } -#endif return retval; } static void __exit moxa_exit(void) { - unsigned int i; - -#ifdef CONFIG_PCI pci_unregister_driver(&moxa_pci_driver); -#endif - - for (i = 0; i < MAX_BOARDS; i++) /* ISA boards */ - if (moxa_boards[i].ready) - moxa_board_deinit(&moxa_boards[i]); del_timer_sync(&moxaTimer); From patchwork Mon Mar 17 07:00:35 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 874682 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9D9B52248A0; Mon, 17 Mar 2025 07:01:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194881; cv=none; b=Pj9p8iaLlh4mL5VikkUfGeyZ+IVwH08GAUEMQ+oTk1f9y7WxvVrBxG+0/NMbtgy8dDcn5UzybXT1OJdbX21Fc1Q57O9IzK8b4Up64cb276IW6F5XZEhZCz08m7EgVvBIXtGrL9zBKu9Xlehfyi9HKAWaPUXgRRwK6LI3bIWs0VM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194881; c=relaxed/simple; bh=LrtIltG9OyvdNYtuyRSt6IH0nmJE553zBaf0RlU1f6U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=bxtEJGGO8eOpBH4KfiGl6JzpoBhYMB8xk3zKoabaZlo78NYSXt6lsX64eC9LCjOQRXfZg1EwLe8NBCLrn/8FE3RcjOft4izIieV5Dn0xdSq/p8fXDlTaGONsOWDhSn+wk2dgnTDC7W+Rlr4+NqAOhYgDfskjjVKfz/b7chRWZNY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=i1TokMAz; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="i1TokMAz" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 70F78C4CEF0; Mon, 17 Mar 2025 07:01:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742194881; bh=LrtIltG9OyvdNYtuyRSt6IH0nmJE553zBaf0RlU1f6U=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=i1TokMAzv7VRtAf3FTcyGQgHIHWgpsRbFn4lm9xLtE6bzfRBwiD7/nUsi17Kim9lN +7lrsUfZ7GqYhUkR75FRZSYrDyow7njwOqTw6cpJ8D6nV3HqUbDnQtND9SZvB7zEQF A32SSGyJ6q4A9A5zTTL8I3vETxO61S+6oNNhEzzSjsE7NjbrueyhbZY9Is7Kcr4aQH 6LsqFlOPlJLokbkQfu2WJrBeh1AzEZmRPwdsczPFQzTGEse4768QcC1q6Oi8e3V3UL R+/3a5pO+kGiv7pvs3Q5Y7dVBR1E0tCN2ZqN1ui9a93k2tajGwcyTcajkKYVi74XTn NX0ftYz7PAHyQ== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH v2 20/31] tty: moxa: carve out special ioctls and extra tty_port Date: Mon, 17 Mar 2025 08:00:35 +0100 Message-ID: <20250317070046.24386-21-jirislaby@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250317070046.24386-1-jirislaby@kernel.org> References: <20250317070046.24386-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 These ioctls are undocumented and not exposed -- they are defined locally. Given they need a special tty_port just for them, this is very ugly. So drop this whole functionality. It is barely used for something real. (And if it is, we'd need a common functionality to all drivers.) Signed-off-by: Jiri Slaby (SUSE) --- drivers/tty/moxa.c | 146 +-------------------------------------------- 1 file changed, 1 insertion(+), 145 deletions(-) diff --git a/drivers/tty/moxa.c b/drivers/tty/moxa.c index a753afcb53b5..1348e2214b81 100644 --- a/drivers/tty/moxa.c +++ b/drivers/tty/moxa.c @@ -43,15 +43,6 @@ #include #include -#include - -#define MOXA 0x400 -#define MOXA_GET_IQUEUE (MOXA + 1) /* get input buffered count */ -#define MOXA_GET_OQUEUE (MOXA + 2) /* get output buffered count */ -#define MOXA_GETDATACOUNT (MOXA + 23) -#define MOXA_GET_IOQUEUE (MOXA + 27) -#define MOXA_FLUSH_QUEUE (MOXA + 28) -#define MOXA_GETMSTATUS (MOXA + 65) /* * System Configuration @@ -397,19 +388,6 @@ static struct moxa_board_conf { void __iomem *intTable; } moxa_boards[MAX_BOARDS]; -struct mxser_mstatus { - tcflag_t cflag; - int cts; - int dsr; - int ri; - int dcd; -}; - -struct moxaq_str { - int inq; - int outq; -}; - struct moxa_port { struct tty_port port; struct moxa_board_conf *board; @@ -424,12 +402,6 @@ struct moxa_port { u8 lowChkFlag; }; -struct mon_str { - int tick; - int rxcnt[MAX_PORTS]; - int txcnt[MAX_PORTS]; -}; - /* statusflags */ #define TXSTOPPED 1 #define LOWWAIT 2 @@ -439,14 +411,11 @@ struct mon_str { #define WAKEUP_CHARS 256 static int ttymajor = MOXAMAJOR; -static struct mon_str moxaLog; static unsigned int moxaFuncTout = HZ / 2; static unsigned int moxaLowWaterChk; static DEFINE_MUTEX(moxa_openlock); static DEFINE_SPINLOCK(moxa_lock); -static struct tty_port moxa_service_port; - MODULE_AUTHOR("William Chen"); MODULE_DESCRIPTION("MOXA Intellio Family Multiport Board Device Driver"); MODULE_LICENSE("GPL"); @@ -557,104 +526,6 @@ static void moxa_low_water_check(void __iomem *ofsAddr) * TTY operations */ -static int moxa_ioctl(struct tty_struct *tty, - unsigned int cmd, unsigned long arg) -{ - struct moxa_port *ch = tty->driver_data; - void __user *argp = (void __user *)arg; - int status, ret = 0; - - if (tty->index == MAX_PORTS) { - if (cmd != MOXA_GETDATACOUNT && cmd != MOXA_GET_IOQUEUE && - cmd != MOXA_GETMSTATUS) - return -EINVAL; - } else if (!ch) - return -ENODEV; - - switch (cmd) { - case MOXA_GETDATACOUNT: - moxaLog.tick = jiffies; - if (copy_to_user(argp, &moxaLog, sizeof(moxaLog))) - ret = -EFAULT; - break; - case MOXA_FLUSH_QUEUE: - MoxaPortFlushData(ch, arg); - break; - case MOXA_GET_IOQUEUE: { - struct moxaq_str __user *argm = argp; - struct moxaq_str tmp; - struct moxa_port *p; - unsigned int i, j; - - for (i = 0; i < MAX_BOARDS; i++) { - p = moxa_boards[i].ports; - for (j = 0; j < MAX_PORTS_PER_BOARD; j++, p++, argm++) { - memset(&tmp, 0, sizeof(tmp)); - spin_lock_bh(&moxa_lock); - if (moxa_boards[i].ready) { - tmp.inq = MoxaPortRxQueue(p); - tmp.outq = MoxaPortTxQueue(p); - } - spin_unlock_bh(&moxa_lock); - if (copy_to_user(argm, &tmp, sizeof(tmp))) - return -EFAULT; - } - } - break; - } case MOXA_GET_OQUEUE: - status = MoxaPortTxQueue(ch); - ret = put_user(status, (unsigned long __user *)argp); - break; - case MOXA_GET_IQUEUE: - status = MoxaPortRxQueue(ch); - ret = put_user(status, (unsigned long __user *)argp); - break; - case MOXA_GETMSTATUS: { - struct mxser_mstatus __user *argm = argp; - struct mxser_mstatus tmp; - struct moxa_port *p; - unsigned int i, j; - - for (i = 0; i < MAX_BOARDS; i++) { - p = moxa_boards[i].ports; - for (j = 0; j < MAX_PORTS_PER_BOARD; j++, p++, argm++) { - struct tty_struct *ttyp; - memset(&tmp, 0, sizeof(tmp)); - spin_lock_bh(&moxa_lock); - if (!moxa_boards[i].ready) { - spin_unlock_bh(&moxa_lock); - goto copy; - } - - status = MoxaPortLineStatus(p); - spin_unlock_bh(&moxa_lock); - - if (status & 1) - tmp.cts = 1; - if (status & 2) - tmp.dsr = 1; - if (status & 4) - tmp.dcd = 1; - - ttyp = tty_port_tty_get(&p->port); - if (!ttyp) - tmp.cflag = p->cflag; - else - tmp.cflag = ttyp->termios.c_cflag; - tty_kref_put(ttyp); -copy: - if (copy_to_user(argm, &tmp, sizeof(tmp))) - return -EFAULT; - } - } - break; - } - default: - ret = -ENOIOCTLCMD; - } - return ret; -} - static int moxa_break_ctl(struct tty_struct *tty, int state) { struct moxa_port *port = tty->driver_data; @@ -671,7 +542,6 @@ static const struct tty_operations moxa_ops = { .write_room = moxa_write_room, .flush_buffer = moxa_flush_buffer, .chars_in_buffer = moxa_chars_in_buffer, - .ioctl = moxa_ioctl, .set_termios = moxa_set_termios, .stop = moxa_stop, .start = moxa_start, @@ -1283,9 +1153,7 @@ static int __init moxa_init(void) { int retval = 0; - tty_port_init(&moxa_service_port); - - moxaDriver = tty_alloc_driver(MAX_PORTS + 1, + moxaDriver = tty_alloc_driver(MAX_PORTS, TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV); if (IS_ERR(moxaDriver)) @@ -1301,8 +1169,6 @@ static int __init moxa_init(void) moxaDriver->init_termios.c_ispeed = 9600; moxaDriver->init_termios.c_ospeed = 9600; tty_set_operations(moxaDriver, &moxa_ops); - /* Having one more port only for ioctls is ugly */ - tty_port_link_device(&moxa_service_port, moxaDriver, MAX_PORTS); if (tty_register_driver(moxaDriver)) { printk(KERN_ERR "can't register MOXA Smartio tty driver!\n"); @@ -1362,9 +1228,6 @@ static int moxa_open(struct tty_struct *tty, struct file *filp) int port; port = tty->index; - if (port == MAX_PORTS) { - return capable(CAP_SYS_ADMIN) ? 0 : -EPERM; - } if (mutex_lock_interruptible(&moxa_openlock)) return -ERESTARTSYS; brd = &moxa_boards[port / MAX_PORTS_PER_BOARD]; @@ -2087,7 +1950,6 @@ static ssize_t MoxaPortWriteData(struct tty_struct *tty, const u8 *buffer, c = (head > tail) ? (head - tail - 1) : (head - tail + tx_mask); if (c > len) c = len; - moxaLog.txcnt[port->port.tty->index] += c; total = c; if (spage == epage) { bufhead = readw(ofsAddr + Ofs_txb); @@ -2129,7 +1991,6 @@ static ssize_t MoxaPortWriteData(struct tty_struct *tty, const u8 *buffer, static int MoxaPortReadData(struct moxa_port *port) { - struct tty_struct *tty = port->port.tty; void __iomem *baseAddr, *ofsAddr, *ofs; u8 *dst; unsigned int count, len, total; @@ -2148,7 +2009,6 @@ static int MoxaPortReadData(struct moxa_port *port) return 0; total = count; - moxaLog.rxcnt[tty->index] += total; if (spage == epage) { bufhead = readw(ofsAddr + Ofs_rxb); writew(spage, baseAddr + Control_reg); @@ -2236,8 +2096,6 @@ static int moxa_get_serial_info(struct tty_struct *tty, { struct moxa_port *info = tty->driver_data; - if (tty->index == MAX_PORTS) - return -EINVAL; if (!info) return -ENODEV; mutex_lock(&info->port.mutex); @@ -2257,8 +2115,6 @@ static int moxa_set_serial_info(struct tty_struct *tty, struct moxa_port *info = tty->driver_data; unsigned int close_delay; - if (tty->index == MAX_PORTS) - return -EINVAL; if (!info) return -ENODEV; From patchwork Mon Mar 17 07:00:36 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 874324 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D8DBA227EA0; Mon, 17 Mar 2025 07:01:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194883; cv=none; b=kPvT2h75HFugUQQjDUicJTyYXQNchAGuU6XdmB0zmBUv2nuIClGaXnwb5Nk3ZR6M8hYnu8qQyghf/1Prt8DfVlGZn9/DmtR8fSQfLm5v2V1U2VURcgv+dF0VqAgBNAIG8ghyGWtYZi1hAUsUNlgQwgaAENfXYUTqIz5ikkwZiys= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194883; c=relaxed/simple; bh=v8oZT0IKC5IPe84sRzSPnPuvDgwhp1nOfVg8uzoJ0I0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LycyfGatAuXQGK6nE3J5/pR9TEWmrEXjrSFKLePs4AxFYAJVagl+saqdzZXedVcCuHbEpyxZPV6yKC7L6cu8G40vhnEXiE1lBIoQo7O2GqYrI2WwsCkByytKZwCWuoFtUQbfN5fJVcm8H4iaFnfx8AnD4JrASHI4Wl9RgpGfE6Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=C7j8waX7; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="C7j8waX7" Received: by smtp.kernel.org (Postfix) with ESMTPSA id EE10FC4CEE3; Mon, 17 Mar 2025 07:01:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742194883; bh=v8oZT0IKC5IPe84sRzSPnPuvDgwhp1nOfVg8uzoJ0I0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=C7j8waX70V9pOoAhkeCEcFIc109MLth1Bmd/tPCedJN9AAFDyWnuXRAf605sDYYz+ iQ4CmsB7axXUKDBmHwfS3DeVFGVnRODw0z3I+IqmZkUyXBtde+i/oeC4yA+Osoo8Sk UF1i1TQi/PqybfOmBnOmx+l/FSNFxkWQp3eEnI9pCBLSfItGDomQR0Bceq+iIyhmWt KEnrdXO+aJBhVB59yioDykSxlPzimi6MJyny6utgzoUjCLtFZn6SaMzT7rSG3KYpq1 uRZdHfEMZAX8BBwWhopeANO5FiPkf7TlpI8DwmVI8divMNpNAk8paREZmWCw7pwZFf NlSamAYmCmrmA== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" , Magnus Lindholm , Richard Henderson , Matt Turner , linux-alpha@vger.kernel.org Subject: [PATCH v2 21/31] tty: srmcons: fix retval from srmcons_init() Date: Mon, 17 Mar 2025 08:00:36 +0100 Message-ID: <20250317070046.24386-22-jirislaby@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250317070046.24386-1-jirislaby@kernel.org> References: <20250317070046.24386-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The value returned from srmcons_init() was -ENODEV for over 2 decades. But it does not matter, given device_initcall() ignores retvals. But to be honest, return 0 in case the tty driver was registered properly. To do that, the condition is inverted and a short path taken in case of error. err_free_drv is introduced as it will be used from more places later. Signed-off-by: Jiri Slaby (SUSE) Tested-by: Magnus Lindholm Cc: Richard Henderson Cc: Matt Turner Cc: linux-alpha@vger.kernel.org --- arch/alpha/kernel/srmcons.c | 62 ++++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 29 deletions(-) diff --git a/arch/alpha/kernel/srmcons.c b/arch/alpha/kernel/srmcons.c index 3e61073f4b30..b9cd364e814e 100644 --- a/arch/alpha/kernel/srmcons.c +++ b/arch/alpha/kernel/srmcons.c @@ -196,40 +196,44 @@ static const struct tty_operations srmcons_ops = { static int __init srmcons_init(void) { + struct tty_driver *driver; + int err; + timer_setup(&srmcons_singleton.timer, srmcons_receive_chars, 0); - if (srm_is_registered_console) { - struct tty_driver *driver; - int err; - - driver = tty_alloc_driver(MAX_SRM_CONSOLE_DEVICES, 0); - if (IS_ERR(driver)) - return PTR_ERR(driver); - - tty_port_init(&srmcons_singleton.port); - - driver->driver_name = "srm"; - driver->name = "srm"; - driver->major = 0; /* dynamic */ - driver->minor_start = 0; - driver->type = TTY_DRIVER_TYPE_SYSTEM; - driver->subtype = SYSTEM_TYPE_SYSCONS; - driver->init_termios = tty_std_termios; - tty_set_operations(driver, &srmcons_ops); - tty_port_link_device(&srmcons_singleton.port, driver, 0); - err = tty_register_driver(driver); - if (err) { - tty_driver_kref_put(driver); - tty_port_destroy(&srmcons_singleton.port); - return err; - } - srmcons_driver = driver; - } - return -ENODEV; + if (!srm_is_registered_console) + return -ENODEV; + + driver = tty_alloc_driver(MAX_SRM_CONSOLE_DEVICES, 0); + if (IS_ERR(driver)) + return PTR_ERR(driver); + + tty_port_init(&srmcons_singleton.port); + + driver->driver_name = "srm"; + driver->name = "srm"; + driver->major = 0; /* dynamic */ + driver->minor_start = 0; + driver->type = TTY_DRIVER_TYPE_SYSTEM; + driver->subtype = SYSTEM_TYPE_SYSCONS; + driver->init_termios = tty_std_termios; + tty_set_operations(driver, &srmcons_ops); + tty_port_link_device(&srmcons_singleton.port, driver, 0); + err = tty_register_driver(driver); + if (err) + goto err_free_drv; + + srmcons_driver = driver; + + return 0; +err_free_drv: + tty_driver_kref_put(driver); + tty_port_destroy(&srmcons_singleton.port); + + return err; } device_initcall(srmcons_init); - /* * The console driver */ From patchwork Mon Mar 17 07:00:37 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 874681 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5006F22A4D3; Mon, 17 Mar 2025 07:01:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194886; cv=none; b=jDDyBhMbFKk5crS/TKNdijWzQDdaUSZ6I10hGou+1YIXrkSX5HIn2RgkDzf6DvHXVd0wjeLSq6grRNGmIG5k+FkwkcFqgjVEjK8pewm6rP/M5AFTSO+L8LSNOMKOc8ZEe7uNT+OVpst4Xa9A+mqfD1m2fr7+nmjPifbbCiINlZ8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194886; c=relaxed/simple; bh=S+XImMzdVUV9r9EFo8L+yAW5p+vSzmK/coEDq0u0j+I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=iAKCv/rhIFbn7ezJyWKEJ638+TvLvczIlS34DHkr83ru/mtU+RwwaOtuUWsD1RQdIPFSoWjntU3AgiYirhXW1L5OleP6GyDQB2T1x0u+yJ/rYAfi+0YQvudfj4QaxEXBxYl1vLPPEfdD7A0E90a+7fH/1IDTpTcO6NVKxRBsueQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=WsPPor6R; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="WsPPor6R" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 359CFC4CEEE; Mon, 17 Mar 2025 07:01:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742194886; bh=S+XImMzdVUV9r9EFo8L+yAW5p+vSzmK/coEDq0u0j+I=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=WsPPor6Rey9Jc3MQ+L5KkubgT27WjCCTSfPtPGQZ7mSAdQUew6s6pq3hgHi3/Xjqt Nx6ner8er3qNkgVduJu220dadEetCULjyXo4TDkxKcHCr0SCUBWq59rF98kri9vSYh C7EhvDmdIEQXVbye04sLXEtxQPOYhsNuQNebrBvSFO7PgzTk1tadOiJhMs5g3BnigM vu/91xVoWk+ZaJHgcUEqWFTKO8h5NnR2hDEgam2EI51FUZ2tdYypHi5QtePcH4xDc5 LvUN7PZvTwmjStxTW+NPQ3ly0uZaqw/DUk6lRl4bmZ0OeJPrCRtffR5JoJfNnXqeuT 0V7Po9cO7187A== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" , Johan Hovold , David Lin , Alex Elder , greybus-dev@lists.linaro.org, linux-staging@lists.linux.dev Subject: [PATCH v2 22/31] tty: staging/greybus: pass tty_driver flags to tty_alloc_driver() Date: Mon, 17 Mar 2025 08:00:37 +0100 Message-ID: <20250317070046.24386-23-jirislaby@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250317070046.24386-1-jirislaby@kernel.org> References: <20250317070046.24386-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 tty_alloc_driver() is supposed to receive tty driver flags. Signed-off-by: Jiri Slaby (SUSE) Acked-by: Johan Hovold Cc: David Lin Cc: Alex Elder Cc: greybus-dev@lists.linaro.org Cc: linux-staging@lists.linux.dev --- drivers/staging/greybus/uart.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/staging/greybus/uart.c b/drivers/staging/greybus/uart.c index 8eab94cb06fa..308ed1ca9947 100644 --- a/drivers/staging/greybus/uart.c +++ b/drivers/staging/greybus/uart.c @@ -948,7 +948,8 @@ static int gb_tty_init(void) { int retval = 0; - gb_tty_driver = tty_alloc_driver(GB_NUM_MINORS, 0); + gb_tty_driver = tty_alloc_driver(GB_NUM_MINORS, TTY_DRIVER_REAL_RAW | + TTY_DRIVER_DYNAMIC_DEV); if (IS_ERR(gb_tty_driver)) { pr_err("Can not allocate tty driver\n"); retval = -ENOMEM; @@ -961,7 +962,6 @@ static int gb_tty_init(void) gb_tty_driver->minor_start = 0; gb_tty_driver->type = TTY_DRIVER_TYPE_SERIAL; gb_tty_driver->subtype = SERIAL_TYPE_NORMAL; - gb_tty_driver->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV; gb_tty_driver->init_termios = tty_std_termios; gb_tty_driver->init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL; From patchwork Mon Mar 17 07:00:38 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 874323 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4442D22D782; Mon, 17 Mar 2025 07:01:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194888; cv=none; b=Ok+AICoEtmNfNgRi5ddSJVehTB1u1+BXfhf2BYmEHDiHJfeha/dLW259bI9mh4LokPKNkh5YLmtUtGZ9tJSuZ9LpjtqPoU4EEya3ZiCC6syKHF6Xgm4wLVTdj5oqfhkLShVsY6/UXih9NWUje9WLNWrueDbr8mbZ2OHrdqaU1Y4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194888; c=relaxed/simple; bh=733NLhDD59CXot9lPd/sYXDSsBaqnCe/CeI6q0bOp5k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=J29EVohWrf1bHLVvfMw+Ox3Asfv7hscfuogMESr+YOZB72xFq/cGCG3gwnDauOenq9P5JF8AvALVwWIW4HZzl8bYuiBwzb+nhNjXiMJXXOpSgPOyHNhYpwo0unbOUFYffcSw0tXFoZ/oMa4SXURvwwjPpxWU7noQZYGOa/iX8+0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=W7Dxpxwl; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="W7Dxpxwl" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9F697C4CEE3; Mon, 17 Mar 2025 07:01:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742194888; bh=733NLhDD59CXot9lPd/sYXDSsBaqnCe/CeI6q0bOp5k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=W7Dxpxwl3pLSBqBn91ycVlz0QxWqm7zsFKgUhZflfKJs7RyaSAF9c97NLlnfExxS7 icpIv86l3UK0Ep5srixvxOIqGjUhbCKwfuaauJhw5tHmJ5uzZ0d8jH54QHK5h8YiCA qvLbFLWxv/utwPPtkinzaLQKdfrzWhpSQvXkGccfa09ZBCpYJVmstOv0KeU7+xIjo+ qrmbu68IGxRxMQLhsoWxcYCdvEnE6ZJ+Mp+5X1I7iugRl1EWV08Ddku6r/LU/Jxd7d 47Iy7tFIwetROyV7iUvliLD9fk/lkfequYMpwzT/dOXiRopQVcjlCm/9LPxX9cBrXB SRjLHOJbGvyxQ== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" , "David S. Miller" , sparclinux@vger.kernel.org Subject: [PATCH v2 23/31] tty: sunsu: drop serial_{in,out}p() Date: Mon, 17 Mar 2025 08:00:38 +0100 Message-ID: <20250317070046.24386-24-jirislaby@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250317070046.24386-1-jirislaby@kernel.org> References: <20250317070046.24386-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 They are simple wrappers around serial_{in/out}() without actually pausing the execution. Since ever. So drop these useless wrappers. Signed-off-by: Jiri Slaby (SUSE) Cc: "David S. Miller" Cc: sparclinux@vger.kernel.org --- drivers/tty/serial/sunsu.c | 164 +++++++++++++++++-------------------- 1 file changed, 77 insertions(+), 87 deletions(-) diff --git a/drivers/tty/serial/sunsu.c b/drivers/tty/serial/sunsu.c index 7f0fef07e141..2dc68b3201a4 100644 --- a/drivers/tty/serial/sunsu.c +++ b/drivers/tty/serial/sunsu.c @@ -150,16 +150,6 @@ static void serial_out(struct uart_sunsu_port *up, int offset, int value) } } -/* - * We used to support using pause I/O for certain machines. We - * haven't supported this for a while, but just in case it's badly - * needed for certain old 386 machines, I've left these #define's - * in.... - */ -#define serial_inp(up, offset) serial_in(up, offset) -#define serial_outp(up, offset, value) serial_out(up, offset, value) - - /* * For the 16C950 */ @@ -193,12 +183,12 @@ static int __enable_rsa(struct uart_sunsu_port *up) unsigned char mode; int result; - mode = serial_inp(up, UART_RSA_MSR); + mode = serial_in(up, UART_RSA_MSR); result = mode & UART_RSA_MSR_FIFO; if (!result) { - serial_outp(up, UART_RSA_MSR, mode | UART_RSA_MSR_FIFO); - mode = serial_inp(up, UART_RSA_MSR); + serial_out(up, UART_RSA_MSR, mode | UART_RSA_MSR_FIFO); + mode = serial_in(up, UART_RSA_MSR); result = mode & UART_RSA_MSR_FIFO; } @@ -217,7 +207,7 @@ static void enable_rsa(struct uart_sunsu_port *up) uart_port_unlock_irq(&up->port); } if (up->port.uartclk == SERIAL_RSA_BAUD_BASE * 16) - serial_outp(up, UART_RSA_FRR, 0); + serial_out(up, UART_RSA_FRR, 0); } } @@ -236,12 +226,12 @@ static void disable_rsa(struct uart_sunsu_port *up) up->port.uartclk == SERIAL_RSA_BAUD_BASE * 16) { uart_port_lock_irq(&up->port); - mode = serial_inp(up, UART_RSA_MSR); + mode = serial_in(up, UART_RSA_MSR); result = !(mode & UART_RSA_MSR_FIFO); if (!result) { - serial_outp(up, UART_RSA_MSR, mode & ~UART_RSA_MSR_FIFO); - mode = serial_inp(up, UART_RSA_MSR); + serial_out(up, UART_RSA_MSR, mode & ~UART_RSA_MSR_FIFO); + mode = serial_in(up, UART_RSA_MSR); result = !(mode & UART_RSA_MSR_FIFO); } @@ -326,7 +316,7 @@ receive_chars(struct uart_sunsu_port *up, unsigned char *status) int saw_console_brk = 0; do { - ch = serial_inp(up, UART_RX); + ch = serial_in(up, UART_RX); flag = TTY_NORMAL; up->port.icount.rx++; @@ -387,7 +377,7 @@ receive_chars(struct uart_sunsu_port *up, unsigned char *status) */ tty_insert_flip_char(port, 0, TTY_OVERRUN); ignore_char: - *status = serial_inp(up, UART_LSR); + *status = serial_in(up, UART_LSR); } while ((*status & UART_LSR_DR) && (max_count-- > 0)); if (saw_console_brk) @@ -401,7 +391,7 @@ static void transmit_chars(struct uart_sunsu_port *up) int count; if (up->port.x_char) { - serial_outp(up, UART_TX, up->port.x_char); + serial_out(up, UART_TX, up->port.x_char); up->port.icount.tx++; up->port.x_char = 0; return; @@ -460,7 +450,7 @@ static irqreturn_t sunsu_serial_interrupt(int irq, void *dev_id) uart_port_lock_irqsave(&up->port, &flags); do { - status = serial_inp(up, UART_LSR); + status = serial_in(up, UART_LSR); if (status & UART_LSR_DR) receive_chars(up, &status); check_modem_status(up); @@ -498,7 +488,7 @@ static void sunsu_change_mouse_baud(struct uart_sunsu_port *up) static void receive_kbd_ms_chars(struct uart_sunsu_port *up, int is_break) { do { - unsigned char ch = serial_inp(up, UART_RX); + unsigned char ch = serial_in(up, UART_RX); /* Stop-A is handled by drivers/char/keyboard.c now. */ if (up->su_type == SU_PORT_KBD) { @@ -530,7 +520,7 @@ static irqreturn_t sunsu_kbd_ms_interrupt(int irq, void *dev_id) struct uart_sunsu_port *up = dev_id; if (!(serial_in(up, UART_IIR) & UART_IIR_NO_INT)) { - unsigned char status = serial_inp(up, UART_LSR); + unsigned char status = serial_in(up, UART_LSR); if ((status & UART_LSR_DR) || (status & UART_LSR_BI)) receive_kbd_ms_chars(up, (status & UART_LSR_BI) != 0); @@ -619,14 +609,14 @@ static int sunsu_startup(struct uart_port *port) if (up->port.type == PORT_16C950) { /* Wake up and initialize UART */ up->acr = 0; - serial_outp(up, UART_LCR, 0xBF); - serial_outp(up, UART_EFR, UART_EFR_ECB); - serial_outp(up, UART_IER, 0); - serial_outp(up, UART_LCR, 0); + serial_out(up, UART_LCR, 0xBF); + serial_out(up, UART_EFR, UART_EFR_ECB); + serial_out(up, UART_IER, 0); + serial_out(up, UART_LCR, 0); serial_icr_write(up, UART_CSR, 0); /* Reset the UART */ - serial_outp(up, UART_LCR, 0xBF); - serial_outp(up, UART_EFR, UART_EFR_ECB); - serial_outp(up, UART_LCR, 0); + serial_out(up, UART_LCR, 0xBF); + serial_out(up, UART_EFR, UART_EFR_ECB); + serial_out(up, UART_LCR, 0); } #ifdef CONFIG_SERIAL_8250_RSA @@ -642,19 +632,19 @@ static int sunsu_startup(struct uart_port *port) * (they will be reenabled in set_termios()) */ if (uart_config[up->port.type].flags & UART_CLEAR_FIFO) { - serial_outp(up, UART_FCR, UART_FCR_ENABLE_FIFO); - serial_outp(up, UART_FCR, UART_FCR_ENABLE_FIFO | + serial_out(up, UART_FCR, UART_FCR_ENABLE_FIFO); + serial_out(up, UART_FCR, UART_FCR_ENABLE_FIFO | UART_FCR_CLEAR_RCVR | UART_FCR_CLEAR_XMIT); - serial_outp(up, UART_FCR, 0); + serial_out(up, UART_FCR, 0); } /* * Clear the interrupt registers. */ - (void) serial_inp(up, UART_LSR); - (void) serial_inp(up, UART_RX); - (void) serial_inp(up, UART_IIR); - (void) serial_inp(up, UART_MSR); + (void) serial_in(up, UART_LSR); + (void) serial_in(up, UART_RX); + (void) serial_in(up, UART_IIR); + (void) serial_in(up, UART_MSR); /* * At this point, there's no way the LSR could still be 0xff; @@ -662,7 +652,7 @@ static int sunsu_startup(struct uart_port *port) * here. */ if (!(up->port.flags & UPF_BUGGY_UART) && - (serial_inp(up, UART_LSR) == 0xff)) { + (serial_in(up, UART_LSR) == 0xff)) { printk("ttyS%d: LSR safety check engaged!\n", up->port.line); return -ENODEV; } @@ -682,7 +672,7 @@ static int sunsu_startup(struct uart_port *port) /* * Now, initialize the UART */ - serial_outp(up, UART_LCR, UART_LCR_WLEN8); + serial_out(up, UART_LCR, UART_LCR_WLEN8); uart_port_lock_irqsave(&up->port, &flags); @@ -697,7 +687,7 @@ static int sunsu_startup(struct uart_port *port) * anyway, so we don't enable them here. */ up->ier = UART_IER_RLSI | UART_IER_RDI; - serial_outp(up, UART_IER, up->ier); + serial_out(up, UART_IER, up->ier); if (up->port.flags & UPF_FOURPORT) { unsigned int icp; @@ -712,10 +702,10 @@ static int sunsu_startup(struct uart_port *port) /* * And clear the interrupt registers again for luck. */ - (void) serial_inp(up, UART_LSR); - (void) serial_inp(up, UART_RX); - (void) serial_inp(up, UART_IIR); - (void) serial_inp(up, UART_MSR); + (void) serial_in(up, UART_LSR); + (void) serial_in(up, UART_RX); + (void) serial_in(up, UART_IIR); + (void) serial_in(up, UART_MSR); return 0; } @@ -730,7 +720,7 @@ static void sunsu_shutdown(struct uart_port *port) * Disable interrupts from this port */ up->ier = 0; - serial_outp(up, UART_IER, 0); + serial_out(up, UART_IER, 0); uart_port_lock_irqsave(&up->port, &flags); if (up->port.flags & UPF_FOURPORT) { @@ -746,11 +736,11 @@ static void sunsu_shutdown(struct uart_port *port) /* * Disable break condition and FIFOs */ - serial_out(up, UART_LCR, serial_inp(up, UART_LCR) & ~UART_LCR_SBC); - serial_outp(up, UART_FCR, UART_FCR_ENABLE_FIFO | + serial_out(up, UART_LCR, serial_in(up, UART_LCR) & ~UART_LCR_SBC); + serial_out(up, UART_FCR, UART_FCR_ENABLE_FIFO | UART_FCR_CLEAR_RCVR | UART_FCR_CLEAR_XMIT); - serial_outp(up, UART_FCR, 0); + serial_out(up, UART_FCR, 0); #ifdef CONFIG_SERIAL_8250_RSA /* @@ -872,22 +862,22 @@ sunsu_change_speed(struct uart_port *port, unsigned int cflag, serial_out(up, UART_IER, up->ier); if (uart_config[up->port.type].flags & UART_STARTECH) { - serial_outp(up, UART_LCR, 0xBF); - serial_outp(up, UART_EFR, cflag & CRTSCTS ? UART_EFR_CTS :0); + serial_out(up, UART_LCR, 0xBF); + serial_out(up, UART_EFR, cflag & CRTSCTS ? UART_EFR_CTS :0); } - serial_outp(up, UART_LCR, cval | UART_LCR_DLAB);/* set DLAB */ - serial_outp(up, UART_DLL, quot & 0xff); /* LS of divisor */ - serial_outp(up, UART_DLM, quot >> 8); /* MS of divisor */ + serial_out(up, UART_LCR, cval | UART_LCR_DLAB);/* set DLAB */ + serial_out(up, UART_DLL, quot & 0xff); /* LS of divisor */ + serial_out(up, UART_DLM, quot >> 8); /* MS of divisor */ if (up->port.type == PORT_16750) - serial_outp(up, UART_FCR, fcr); /* set fcr */ - serial_outp(up, UART_LCR, cval); /* reset DLAB */ + serial_out(up, UART_FCR, fcr); /* set fcr */ + serial_out(up, UART_LCR, cval); /* reset DLAB */ up->lcr = cval; /* Save LCR */ if (up->port.type != PORT_16750) { if (fcr & UART_FCR_ENABLE_FIFO) { /* emulated UARTs (Lucent Venus 167x) need two steps */ - serial_outp(up, UART_FCR, UART_FCR_ENABLE_FIFO); + serial_out(up, UART_FCR, UART_FCR_ENABLE_FIFO); } - serial_outp(up, UART_FCR, fcr); /* set fcr */ + serial_out(up, UART_FCR, fcr); /* set fcr */ } up->cflag = cflag; @@ -1051,18 +1041,18 @@ static void sunsu_autoconfig(struct uart_sunsu_port *up) * 0x80 is a non-existent port; which should be safe since * include/asm/io.h also makes this assumption. */ - scratch = serial_inp(up, UART_IER); - serial_outp(up, UART_IER, 0); + scratch = serial_in(up, UART_IER); + serial_out(up, UART_IER, 0); #ifdef __i386__ outb(0xff, 0x080); #endif - scratch2 = serial_inp(up, UART_IER); - serial_outp(up, UART_IER, 0x0f); + scratch2 = serial_in(up, UART_IER); + serial_out(up, UART_IER, 0x0f); #ifdef __i386__ outb(0, 0x080); #endif - scratch3 = serial_inp(up, UART_IER); - serial_outp(up, UART_IER, scratch); + scratch3 = serial_in(up, UART_IER); + serial_out(up, UART_IER, scratch); if (scratch2 != 0 || scratch3 != 0x0F) goto out; /* We failed; there's nothing here */ } @@ -1080,16 +1070,16 @@ static void sunsu_autoconfig(struct uart_sunsu_port *up) * that conflicts with COM 1-4 --- we hope! */ if (!(up->port.flags & UPF_SKIP_TEST)) { - serial_outp(up, UART_MCR, UART_MCR_LOOP | 0x0A); - status1 = serial_inp(up, UART_MSR) & 0xF0; - serial_outp(up, UART_MCR, save_mcr); + serial_out(up, UART_MCR, UART_MCR_LOOP | 0x0A); + status1 = serial_in(up, UART_MSR) & 0xF0; + serial_out(up, UART_MCR, save_mcr); if (status1 != 0x90) goto out; /* We failed loopback test */ } - serial_outp(up, UART_LCR, 0xBF); /* set up for StarTech test */ - serial_outp(up, UART_EFR, 0); /* EFR is the same as FCR */ - serial_outp(up, UART_LCR, 0); - serial_outp(up, UART_FCR, UART_FCR_ENABLE_FIFO); + serial_out(up, UART_LCR, 0xBF); /* set up for StarTech test */ + serial_out(up, UART_EFR, 0); /* EFR is the same as FCR */ + serial_out(up, UART_LCR, 0); + serial_out(up, UART_FCR, UART_FCR_ENABLE_FIFO); scratch = serial_in(up, UART_IIR) >> 6; switch (scratch) { case 0: @@ -1107,19 +1097,19 @@ static void sunsu_autoconfig(struct uart_sunsu_port *up) } if (up->port.type == PORT_16550A) { /* Check for Startech UART's */ - serial_outp(up, UART_LCR, UART_LCR_DLAB); + serial_out(up, UART_LCR, UART_LCR_DLAB); if (serial_in(up, UART_EFR) == 0) { up->port.type = PORT_16650; } else { - serial_outp(up, UART_LCR, 0xBF); + serial_out(up, UART_LCR, 0xBF); if (serial_in(up, UART_EFR) == 0) up->port.type = PORT_16650V2; } } if (up->port.type == PORT_16550A) { /* Check for TI 16750 */ - serial_outp(up, UART_LCR, save_lcr | UART_LCR_DLAB); - serial_outp(up, UART_FCR, + serial_out(up, UART_LCR, save_lcr | UART_LCR_DLAB); + serial_out(up, UART_FCR, UART_FCR_ENABLE_FIFO | UART_FCR7_64BYTE); scratch = serial_in(up, UART_IIR) >> 5; if (scratch == 7) { @@ -1129,24 +1119,24 @@ static void sunsu_autoconfig(struct uart_sunsu_port *up) * mode if the UART_FCR7_64BYTE bit was set * while UART_LCR_DLAB was latched. */ - serial_outp(up, UART_FCR, UART_FCR_ENABLE_FIFO); - serial_outp(up, UART_LCR, 0); - serial_outp(up, UART_FCR, + serial_out(up, UART_FCR, UART_FCR_ENABLE_FIFO); + serial_out(up, UART_LCR, 0); + serial_out(up, UART_FCR, UART_FCR_ENABLE_FIFO | UART_FCR7_64BYTE); scratch = serial_in(up, UART_IIR) >> 5; if (scratch == 6) up->port.type = PORT_16750; } - serial_outp(up, UART_FCR, UART_FCR_ENABLE_FIFO); + serial_out(up, UART_FCR, UART_FCR_ENABLE_FIFO); } - serial_outp(up, UART_LCR, save_lcr); + serial_out(up, UART_LCR, save_lcr); if (up->port.type == PORT_16450) { scratch = serial_in(up, UART_SCR); - serial_outp(up, UART_SCR, 0xa5); + serial_out(up, UART_SCR, 0xa5); status1 = serial_in(up, UART_SCR); - serial_outp(up, UART_SCR, 0x5a); + serial_out(up, UART_SCR, 0x5a); status2 = serial_in(up, UART_SCR); - serial_outp(up, UART_SCR, scratch); + serial_out(up, UART_SCR, scratch); if ((status1 != 0xa5) || (status2 != 0x5a)) up->port.type = PORT_8250; @@ -1163,15 +1153,15 @@ static void sunsu_autoconfig(struct uart_sunsu_port *up) */ #ifdef CONFIG_SERIAL_8250_RSA if (up->port.type == PORT_RSA) - serial_outp(up, UART_RSA_FRR, 0); + serial_out(up, UART_RSA_FRR, 0); #endif - serial_outp(up, UART_MCR, save_mcr); - serial_outp(up, UART_FCR, (UART_FCR_ENABLE_FIFO | + serial_out(up, UART_MCR, save_mcr); + serial_out(up, UART_FCR, (UART_FCR_ENABLE_FIFO | UART_FCR_CLEAR_RCVR | UART_FCR_CLEAR_XMIT)); - serial_outp(up, UART_FCR, 0); + serial_out(up, UART_FCR, 0); (void)serial_in(up, UART_RX); - serial_outp(up, UART_IER, 0); + serial_out(up, UART_IER, 0); out: uart_port_unlock_irqrestore(&up->port, flags); From patchwork Mon Mar 17 07:00:39 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 874680 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2C37322D4F6; Mon, 17 Mar 2025 07:01:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194890; cv=none; b=QvGU8X0oTqWM2sCeH3OKNancm2ASZYb61uFf5Zz/c16qHGiD0B9VwgLBvdIX9K/V5lQEL6LTAhvTwhDGUdwo6YYGAfly/HlY7iXiD7RJLtkoZai5rlWah8D9jB1pq8boBnCaZKysc3N/pC6vvaBXzaxqz7Vn2DHuILVf/8U68VA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194890; c=relaxed/simple; bh=HrxMMX96ZRTa4wo+i3IcrhvmJQTlSR2eUo1YODDfeN0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fn01DtvBatquCGcfwq1cRUmbZ4KJYYIy5VlFgWHdnIdvRUowhI62OXArxOs8d1hIWT/P6Z3z9OhgT1TaoxxOpiBrSJ/jsK40NNp3U1xIWc+9oHFicSV/VRxENqn9G4knTGyZ/26EcgnyeYtlipS+C/SVHHpVCoSw/xDBCMC7SK8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=LOSDBXFZ; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="LOSDBXFZ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 952E6C4CEF2; Mon, 17 Mar 2025 07:01:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742194890; bh=HrxMMX96ZRTa4wo+i3IcrhvmJQTlSR2eUo1YODDfeN0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=LOSDBXFZ76MVEVMrv7QouOG/Y7ClG8+4SNTregw5s694lmt8JvJQcy48GL69UtKeH DyGEImpxorygeTyKUpGdmLJLaA7ax4qqeXz0tlRuprTYX06v5+b7bnShnolbJIlL9g bvFWOokoNLshk4bC2nRAj7gWGRS45RNTZ26/9qVhk5IiAOcuMNBHmzUXCeXzJRrdep rii7qFz+RFMlOypYq+YkXN04VyzD+aOSUvRwH1IAstDflNKI87ZTjKYTvqjTrFuSWc edX3I+UL6oGmxm4OgVLFve25yqkS4vLaXDLiV9hpq0q0rdRyG1MZluOPv5BWWTQmqM 37x2BRvnRH5ag== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" , "David S. Miller" , sparclinux@vger.kernel.org Subject: [PATCH v2 24/31] tty: sunsu: remove unused serial_icr_read() Date: Mon, 17 Mar 2025 08:00:39 +0100 Message-ID: <20250317070046.24386-25-jirislaby@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250317070046.24386-1-jirislaby@kernel.org> References: <20250317070046.24386-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 It is commented and never used. Signed-off-by: Jiri Slaby (SUSE) Cc: "David S. Miller" Cc: sparclinux@vger.kernel.org --- drivers/tty/serial/sunsu.c | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/drivers/tty/serial/sunsu.c b/drivers/tty/serial/sunsu.c index 2dc68b3201a4..383141fe7ba0 100644 --- a/drivers/tty/serial/sunsu.c +++ b/drivers/tty/serial/sunsu.c @@ -159,20 +159,6 @@ static void serial_icr_write(struct uart_sunsu_port *up, int offset, int value) serial_out(up, UART_ICR, value); } -#if 0 /* Unused currently */ -static unsigned int serial_icr_read(struct uart_sunsu_port *up, int offset) -{ - unsigned int value; - - serial_icr_write(up, UART_ACR, up->acr | UART_ACR_ICRRD); - serial_out(up, UART_SCR, offset); - value = serial_in(up, UART_ICR); - serial_icr_write(up, UART_ACR, up->acr); - - return value; -} -#endif - #ifdef CONFIG_SERIAL_8250_RSA /* * Attempts to turn on the RSA FIFO. Returns zero on failure. From patchwork Mon Mar 17 07:00:40 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 874322 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BD80322F397; Mon, 17 Mar 2025 07:01:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194891; cv=none; b=cyYHMgztMnMA1pSdejDRdo8ysx97zEzBUYt7ijVxcspB0tSvhoTtL8Xv/VJx3a6kAUUE9yZ0GPZc+cvF9ZsZe02Nde23rA3X+6KCzmOQap226KUWaFphqu6JOftaLRL1s2/2YwDfsij06lDdMzX2/+Edgmxk9uwXdrBlKVtmwqM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194891; c=relaxed/simple; bh=1rdXQyJej8ITir/cAQWBTR5R0h/xen+2KFDCxqV7Gjw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BZn+yLbebuXYhj25o2PvZYt0PgZnnyuc8hwLeo+57y6vUO+F1xgJxgBUysN6BLGynMxF+5Kp51UMHkTYXuW15zGYnIwS9KCsdzYQXpRufjy51ANVdei2UncKofi5XSXoKQcNBqzRvByqgNZgdqvrEoMVg2H3MpiReT2Y1xEkoVI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=rln0cIwM; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="rln0cIwM" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7BDD0C4CEEC; Mon, 17 Mar 2025 07:01:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742194891; bh=1rdXQyJej8ITir/cAQWBTR5R0h/xen+2KFDCxqV7Gjw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rln0cIwMCYJI4ui2N9Hjz3l9cLCdyrVeu9tqVFfUG4dda5oSKIadm1f7xRzun6iA7 MegjKWhXW6UEyRbdX+hcCYhohUh5R7P39SnleRzcHTetTUjcY62KOEb1WrGHtCdEm6 3awqMzBoNIrx4VPeGzV8A5fLd6ne8b9CF+qbYO8PtYFIUIRquOE3w/sO6Xd4siCj1g G1JDd4NrBOMUJHc1ta9nUlqxEox0EB9maTeQYe2iTQxLLJngUt07U46Md3SqbN+sEu XmcNIS4jYCd0FtkQ9dYcvW1p4w0zkSQy+EtLdw3BUoV25LKigPYH3HbERtMU1FQ9Vw IyzsX4qs3idkw== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH v2 25/31] serial: remove redundant tty_port_link_device() Date: Mon, 17 Mar 2025 08:00:40 +0100 Message-ID: <20250317070046.24386-26-jirislaby@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250317070046.24386-1-jirislaby@kernel.org> References: <20250317070046.24386-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The linking is done implicitly by tty_port_register_device_attr_serdev() few lines below. So drop this explicit tty_port_link_device(). Signed-off-by: Jiri Slaby (SUSE) --- drivers/tty/serial/serial_core.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c index d46650e578e5..6fafb1bd6860 100644 --- a/drivers/tty/serial/serial_core.c +++ b/drivers/tty/serial/serial_core.c @@ -3156,7 +3156,6 @@ static int serial_core_add_one_port(struct uart_driver *drv, struct uart_port *u if (uport->cons && uport->dev) of_console_check(uport->dev->of_node, uport->cons->name, uport->line); - tty_port_link_device(port, drv->tty_driver, uport->line); uart_configure_port(drv, state, uport); port->console = uart_console(uport); From patchwork Mon Mar 17 07:00:41 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 874679 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3D041230BCC; Mon, 17 Mar 2025 07:01:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194893; cv=none; b=PZ4OHAeqH10Jox13UL3oUYLghJr3A7eFA02dPv8v4VYo4S/3QcV/Z0m4X31GUvMIG1ZFqtp2eAPajwz6kwLY54tcjFGFBUR+BLRmEJMT9PVrExHhyUB9319SDuuWmJuJYSOzf92p0zQBJGwE2uouOfE0PSGvvbVG5cpS5WpTazc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194893; c=relaxed/simple; bh=alsk6lQTdxl1hqqV3gqF9jWzzecxLAozrApyEDbGWoM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=HS+Y6tOC93cd6gpmtG5BW1n0lt3NiD/KVY5wIpIDY/kAVvPw5xIPV7aghG9yNVL+RiHcFNdsJAY1OhIGqFAyva+/HNRUtqultkhNi5PFkAX7CUVvHylP9yuZC7JCs6HnKp6xFQKj0uZoPCY5znUAdmYwJiv/YgzibanyMEQ+fmk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=EriGr61W; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="EriGr61W" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0D404C4CEEC; Mon, 17 Mar 2025 07:01:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742194893; bh=alsk6lQTdxl1hqqV3gqF9jWzzecxLAozrApyEDbGWoM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=EriGr61W9gNPOWf8ap7iY3tlUUrapDNF8FrrWuylhZbRDWEGfkHBYqqT9RZIwT/gL 2TRO+YyhKsutmDnXxocqgDJ8sPlii+ZEwSR2RpAsUjYEqMTqzqXl0LB9ZNDyhyREzu 1QsdmxcrDIDw0CGbma1cVOqz+yiZC2bWRpZph7753BBRhhDttgj2yJWV93DIGuX5kB 8sqGEFhmTGCPiGo47upSbc81YE7GkVXjURy75Ii0WGHiOmmeJCUtRNrFgPYLYeqLJH si2SAUTvv6HDR32vjAyAFSzZwuRfhbYsEFbujED2yKJ7dhwTkiwpMqU0/qKtRrIEdy hd3Om0jIPGbsA== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH v2 26/31] serial: pass struct uart_state to uart_line_info() Date: Mon, 17 Mar 2025 08:00:41 +0100 Message-ID: <20250317070046.24386-27-jirislaby@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250317070046.24386-1-jirislaby@kernel.org> References: <20250317070046.24386-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 uart_line_info() wants to work with struct uart_state. Do not pass a driver and an index. Pass the precomputed struct directly. Signed-off-by: Jiri Slaby (SUSE) --- drivers/tty/serial/serial_core.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c index 6fafb1bd6860..0dbf75b25ff6 100644 --- a/drivers/tty/serial/serial_core.c +++ b/drivers/tty/serial/serial_core.c @@ -2013,9 +2013,8 @@ static const char *uart_type(struct uart_port *port) #ifdef CONFIG_PROC_FS -static void uart_line_info(struct seq_file *m, struct uart_driver *drv, int i) +static void uart_line_info(struct seq_file *m, struct uart_state *state) { - struct uart_state *state = drv->state + i; struct tty_port *port = &state->port; enum uart_pm_state pm_state; struct uart_port *uport; @@ -2100,7 +2099,7 @@ static int uart_proc_show(struct seq_file *m, void *v) seq_printf(m, "serinfo:1.0 driver%s%s revision:%s\n", "", "", ""); for (i = 0; i < drv->nr; i++) - uart_line_info(m, drv, i); + uart_line_info(m, drv->state + i); return 0; } #endif From patchwork Mon Mar 17 07:00:42 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 874321 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 37A2D233128; Mon, 17 Mar 2025 07:01:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194895; cv=none; b=CaivoPzLCbR3vdtVppPnvk1vZcpvfjm+a7LlUTOuvGZP7itQMi2TdgKNfSXsgK64h1T79+L52iTz63oOE7joWES3NeKV8NfwX1vz57cmwU8EgbeRj5vdTYR3GKQext8OaVDlOHC961oZetz9CySOYTs8HWYz+3kXgFoNAoFHr9U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194895; c=relaxed/simple; bh=Rmc+5nPUH6BKMjZs2vwDRk8Yfd9ZMuQr6K56At2pRfI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=SD8Y5/3vnmsbx4I3lWgb2SxB6DcR2g0T0mFZFS7j0quYnqFjSyByt4XIyquTQMW6vYv1XTcpQEz8BGbNqJnp+uGn6/M/nPb2l9qk2p12f6Sl2yH1YPlvFc5/vNkal3PccBveRgWvBoznZTJARzH1d3T5e/1pE1c7RTmnU4frmL8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=WVjPKMyC; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="WVjPKMyC" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8A167C4CEEC; Mon, 17 Mar 2025 07:01:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742194895; bh=Rmc+5nPUH6BKMjZs2vwDRk8Yfd9ZMuQr6K56At2pRfI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=WVjPKMyCD09L+0K23Lk3T2iZKylANfwSMqOpOL1KthouxSvE1ZcAsmZNzPC8Oe8Np BCR4IcZnLjnDeoteDrSBkg5l0RJFL9Lg3Zj83TImfXoy5BSDK83s93LTZptdybRRfX BklP694g82p+RU4Wag2JA4m5MdB34TYDttSFvXJCSJh/MvIsx55dahcLt8pdi0bntJ GNn8Uzb5nkix5Ld98A2CnXx1DStq2tJhnH1dz6yKyD2NWq7BMbklmMRRMyZuhhm2aJ lu7LukKbGtpz95A4Owm2dSLUxNWx8TYV+qeMT8BrEFLItajweMWF8US1VDJfJFwx0k 8N4NQP6J930Ww== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Andy Shevchenko Subject: [PATCH v2 27/31] serial: 8250: use serial_port_in/out() helpers Date: Mon, 17 Mar 2025 08:00:42 +0100 Message-ID: <20250317070046.24386-28-jirislaby@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250317070046.24386-1-jirislaby@kernel.org> References: <20250317070046.24386-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 There are serial_port_in/out() helpers to be used instead of direct p->serial_in/out(). Use them in various 8250 drivers. Signed-off-by: Jiri Slaby (SUSE) Cc: "Ilpo Järvinen" Cc: Andy Shevchenko --- [v2] * Use serial_port_in/out() and not serial_in/out() [Andy] --- drivers/tty/serial/8250/8250_dw.c | 16 ++++++++-------- drivers/tty/serial/8250/8250_fsl.c | 8 ++++---- drivers/tty/serial/8250/8250_omap.c | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/drivers/tty/serial/8250/8250_dw.c b/drivers/tty/serial/8250/8250_dw.c index af24ec25d976..f068b8d7840a 100644 --- a/drivers/tty/serial/8250/8250_dw.c +++ b/drivers/tty/serial/8250/8250_dw.c @@ -120,12 +120,12 @@ static void dw8250_force_idle(struct uart_port *p) * enabled. */ if (up->fcr & UART_FCR_ENABLE_FIFO) { - lsr = p->serial_in(p, UART_LSR); + lsr = serial_port_in(p, UART_LSR); if (!(lsr & UART_LSR_DR)) return; } - (void)p->serial_in(p, UART_RX); + serial_port_in(p, UART_RX); } static void dw8250_check_lcr(struct uart_port *p, int offset, int value) @@ -139,7 +139,7 @@ static void dw8250_check_lcr(struct uart_port *p, int offset, int value) /* Make sure LCR write wasn't ignored */ while (tries--) { - unsigned int lcr = p->serial_in(p, offset); + unsigned int lcr = serial_port_in(p, offset); if ((value & ~UART_LCR_SPAR) == (lcr & ~UART_LCR_SPAR)) return; @@ -260,7 +260,7 @@ static int dw8250_handle_irq(struct uart_port *p) { struct uart_8250_port *up = up_to_u8250p(p); struct dw8250_data *d = to_dw8250_data(p->private_data); - unsigned int iir = p->serial_in(p, UART_IIR); + unsigned int iir = serial_port_in(p, UART_IIR); bool rx_timeout = (iir & 0x3f) == UART_IIR_RX_TIMEOUT; unsigned int quirks = d->pdata->quirks; unsigned int status; @@ -281,7 +281,7 @@ static int dw8250_handle_irq(struct uart_port *p) status = serial_lsr_in(up); if (!(status & (UART_LSR_DR | UART_LSR_BI))) - (void) p->serial_in(p, UART_RX); + serial_port_in(p, UART_RX); uart_port_unlock_irqrestore(p, flags); } @@ -303,7 +303,7 @@ static int dw8250_handle_irq(struct uart_port *p) if ((iir & UART_IIR_BUSY) == UART_IIR_BUSY) { /* Clear the USR */ - (void)p->serial_in(p, d->pdata->usr_reg); + serial_port_in(p, d->pdata->usr_reg); return 1; } @@ -390,7 +390,7 @@ static void dw8250_set_termios(struct uart_port *p, struct ktermios *termios, static void dw8250_set_ldisc(struct uart_port *p, struct ktermios *termios) { struct uart_8250_port *up = up_to_u8250p(p); - unsigned int mcr = p->serial_in(p, UART_MCR); + unsigned int mcr = serial_port_in(p, UART_MCR); if (up->capabilities & UART_CAP_IRDA) { if (termios->c_line == N_IRDA) @@ -398,7 +398,7 @@ static void dw8250_set_ldisc(struct uart_port *p, struct ktermios *termios) else mcr &= ~DW_UART_MCR_SIRE; - p->serial_out(p, UART_MCR, mcr); + serial_port_out(p, UART_MCR, mcr); } serial8250_do_set_ldisc(p, termios); } diff --git a/drivers/tty/serial/8250/8250_fsl.c b/drivers/tty/serial/8250/8250_fsl.c index 1b7bd55619c6..649ae5c8304d 100644 --- a/drivers/tty/serial/8250/8250_fsl.c +++ b/drivers/tty/serial/8250/8250_fsl.c @@ -32,7 +32,7 @@ int fsl8250_handle_irq(struct uart_port *port) uart_port_lock_irqsave(&up->port, &flags); - iir = port->serial_in(port, UART_IIR); + iir = serial_port_in(port, UART_IIR); if (iir & UART_IIR_NO_INT) { uart_port_unlock_irqrestore(&up->port, flags); return 0; @@ -54,12 +54,12 @@ int fsl8250_handle_irq(struct uart_port *port) if (unlikely((iir & UART_IIR_ID) == UART_IIR_RLSI && (up->lsr_saved_flags & UART_LSR_BI))) { up->lsr_saved_flags &= ~UART_LSR_BI; - port->serial_in(port, UART_RX); + serial_port_in(port, UART_RX); uart_port_unlock_irqrestore(&up->port, flags); return 1; } - lsr = orig_lsr = up->port.serial_in(&up->port, UART_LSR); + lsr = orig_lsr = serial_port_in(port, UART_LSR); /* Process incoming characters first */ if ((lsr & (UART_LSR_DR | UART_LSR_BI)) && @@ -71,7 +71,7 @@ int fsl8250_handle_irq(struct uart_port *port) if ((orig_lsr & UART_LSR_OE) && (up->overrun_backoff_time_ms > 0)) { unsigned long delay; - up->ier = port->serial_in(port, UART_IER); + up->ier = serial_port_in(port, UART_IER); if (up->ier & (UART_IER_RLSI | UART_IER_RDI)) { port->ops->stop_rx(port); } else { diff --git a/drivers/tty/serial/8250/8250_omap.c b/drivers/tty/serial/8250/8250_omap.c index c2b75e3f106d..2a0ce11f405d 100644 --- a/drivers/tty/serial/8250/8250_omap.c +++ b/drivers/tty/serial/8250/8250_omap.c @@ -692,7 +692,7 @@ static irqreturn_t omap8250_irq(int irq, void *dev_id) /* Synchronize UART_IER access against the console. */ uart_port_lock(port); - up->ier = port->serial_in(port, UART_IER); + up->ier = serial_port_in(port, UART_IER); if (up->ier & (UART_IER_RLSI | UART_IER_RDI)) { port->ops->stop_rx(port); } else { From patchwork Mon Mar 17 07:00:43 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 874678 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 07DE0233127; Mon, 17 Mar 2025 07:01:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194897; cv=none; b=Jjx1Fgc935ojaWH1LJU0UcRUdONdUcdPg5FOmupVF5T3jV0wJw6v4pHUf3ATmyuqKv51g1MOgWVAoBMzrHNCp9cxTV5xM98Gtk8ZIkj9TRuo8l4ZiXywUrpLqVyxIKz/P/zMTgPVC6Ov/JYMWQpivyLE/QWpYkTuJDr8jGfHzQY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194897; c=relaxed/simple; bh=UBPE6m0iLxPwUguqTzOfkL4imXr5/+UmuxJBQ9Pu8hE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WNMrMk7DDVpGlhfRcePh+uv65c/soM/zobmP93fNqj47SqiHdYskWT8sRAoiIZuyjw0MqNgisa7YpzJMYhNe68MernEyleRwBu9DRAsgd97M6NytrsvAHndPeSzzimZONnLLAl3pDDYBQYl30dJr+GR5LTUbwIkafE3i7Fy//go= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=RrrfHLpI; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="RrrfHLpI" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6B996C4CEEC; Mon, 17 Mar 2025 07:01:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742194896; bh=UBPE6m0iLxPwUguqTzOfkL4imXr5/+UmuxJBQ9Pu8hE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=RrrfHLpI4HpFsYtkQhkXW8KlMEdxfUK5tfnJUO5ZRzfECyb/DR6S1kAqpYq4YXKwQ Is44XMXzem823SVvfDA4CLZJrhqkGIhpNVe5TGGDYn78naNyVIGgDDRkHFpVNw4sze KC3m+cfZsycmKzCIJV+qKkj228GalEg59vzqRxNIqyiDJUugU6YLHOvYYzW7wcLCqZ /EDFqdngGA3ri5/1yrIFtapHBe1HWh+miTT5qjIKjjNQaJ5WG+X/lU3QYJM+czhGYG baadcimip0KSXJdcb7gFwN2xLvwvfTRzYpuIJ9swOojd8sRUWShnXGzT8B7v0PeRWT Mtmw3vO6GyQbA== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH v2 28/31] serial: 8250_rsa: simplify rsa8250_{request/release}_resource() Date: Mon, 17 Mar 2025 08:00:43 +0100 Message-ID: <20250317070046.24386-29-jirislaby@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250317070046.24386-1-jirislaby@kernel.org> References: <20250317070046.24386-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 * Use already defined 'port' for fetching start/offset, and size. * Return from the switch immediately -- so it is clear what is returned and when. Signed-off-by: Jiri Slaby (SUSE) --- drivers/tty/serial/8250/8250_rsa.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/drivers/tty/serial/8250/8250_rsa.c b/drivers/tty/serial/8250/8250_rsa.c index dfaa613e452d..82f2593b4c59 100644 --- a/drivers/tty/serial/8250/8250_rsa.c +++ b/drivers/tty/serial/8250/8250_rsa.c @@ -16,30 +16,27 @@ static unsigned int probe_rsa_count; static int rsa8250_request_resource(struct uart_8250_port *up) { - unsigned long start = UART_RSA_BASE << up->port.regshift; - unsigned int size = 8 << up->port.regshift; struct uart_port *port = &up->port; - int ret = -EINVAL; + unsigned long start = UART_RSA_BASE << port->regshift; + unsigned int size = 8 << port->regshift; switch (port->iotype) { case UPIO_HUB6: case UPIO_PORT: start += port->iobase; - if (request_region(start, size, "serial-rsa")) - ret = 0; - else - ret = -EBUSY; - break; + if (!request_region(start, size, "serial-rsa")) + return -EBUSY; + return 0; + default: + return -EINVAL; } - - return ret; } static void rsa8250_release_resource(struct uart_8250_port *up) { - unsigned long offset = UART_RSA_BASE << up->port.regshift; - unsigned int size = 8 << up->port.regshift; struct uart_port *port = &up->port; + unsigned long offset = UART_RSA_BASE << port->regshift; + unsigned int size = 8 << port->regshift; switch (port->iotype) { case UPIO_HUB6: From patchwork Mon Mar 17 07:00:44 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 874320 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 382132343AF; Mon, 17 Mar 2025 07:01:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194898; cv=none; b=EQnN26gOftsowXIlwmM6aJxwocPKxGN+oe1MzuNC6QK96o3paxVtrJztpG4HjYwWjrkzgu5P9bO2v2/d++jT1h4TpE9Qr8j7qKPTGiQelxeGJt1cAmNU0CZvNQoocyAuUFozbwoHViO+busy8R0Mr+f5EHjt2faEkEeeot0bMF8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194898; c=relaxed/simple; bh=HpOa6PM92cYj5X2CZarvKMvG/Q3+msQj808muX1qxpM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hEDp2lw3DttFi3n6colZNY5vsj5KMfxrTjSc5qq2S8tSO9frS9i73R/K2RZLUI+Vkm1AOsk7St12Z0GTVF18qPKuoHquWZDdSUBTgGoMEF+wS0sQktqqtHSBEhGP43HYDixcd48kKD0JEMPpJmbDqTaplvC7WkaPBhXdoyTvpSs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jwkHSH3U; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="jwkHSH3U" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E8095C4CEE3; Mon, 17 Mar 2025 07:01:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742194898; bh=HpOa6PM92cYj5X2CZarvKMvG/Q3+msQj808muX1qxpM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=jwkHSH3Ug9lo/CZnvdG937I09ucLZsHk34n3fWrVInHNUsCffBfvDGu8NGFRAxr7+ lJv/FoOCTtDs70+9xnRbnHgdRXtSnhJ4kY4fZbGXH4H0JQgqW8yW8JNGTwWq1/vEA1 llXLg+8XG1U+G2f9Y0vlGwWykkZ6Kj8Q+b2mc7bNy9kJ38RXP5PN2d4TCHzFp+5IEh NSi2EfcCtPoTcX7lDUoftFsdtuhv6OY7AhDW/huqLR0AwNJiXQtR7vfcRtxuQx2qJI WpHs9D6Xle6Iq5SAMbB6bvkkYFMzm7lEhV0bgiQ/WKG6TIRD8zMLgqepdFYsxwbn++ rhV/v8UkdY3gQ== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH v2 29/31] serial: 8250_port: do not use goto for UPQ_NO_TXEN_TEST code flow Date: Mon, 17 Mar 2025 08:00:44 +0100 Message-ID: <20250317070046.24386-30-jirislaby@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250317070046.24386-1-jirislaby@kernel.org> References: <20250317070046.24386-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 This is unnecessary here and makes the code harder to follow. Invert the condition and drop the goto+label. Signed-off-by: Jiri Slaby (SUSE) --- drivers/tty/serial/8250/8250_port.c | 34 ++++++++++++++--------------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c index 3f256e96c722..6466f60416a9 100644 --- a/drivers/tty/serial/8250/8250_port.c +++ b/drivers/tty/serial/8250/8250_port.c @@ -2406,28 +2406,26 @@ int serial8250_do_startup(struct uart_port *port) * test if we receive TX irq. This way, we'll never enable * UART_BUG_TXEN. */ - if (up->port.quirks & UPQ_NO_TXEN_TEST) - goto dont_test_tx_en; - - /* - * Do a quick test to see if we receive an interrupt when we enable - * the TX irq. - */ - serial_port_out(port, UART_IER, UART_IER_THRI); - lsr = serial_port_in(port, UART_LSR); - iir = serial_port_in(port, UART_IIR); - serial_port_out(port, UART_IER, 0); + if (!(up->port.quirks & UPQ_NO_TXEN_TEST)) { + /* + * Do a quick test to see if we receive an interrupt when we + * enable the TX irq. + */ + serial_port_out(port, UART_IER, UART_IER_THRI); + lsr = serial_port_in(port, UART_LSR); + iir = serial_port_in(port, UART_IIR); + serial_port_out(port, UART_IER, 0); - if (lsr & UART_LSR_TEMT && iir & UART_IIR_NO_INT) { - if (!(up->bugs & UART_BUG_TXEN)) { - up->bugs |= UART_BUG_TXEN; - dev_dbg(port->dev, "enabling bad tx status workarounds\n"); + if (lsr & UART_LSR_TEMT && iir & UART_IIR_NO_INT) { + if (!(up->bugs & UART_BUG_TXEN)) { + up->bugs |= UART_BUG_TXEN; + dev_dbg(port->dev, "enabling bad tx status workarounds\n"); + } + } else { + up->bugs &= ~UART_BUG_TXEN; } - } else { - up->bugs &= ~UART_BUG_TXEN; } -dont_test_tx_en: uart_port_unlock_irqrestore(port, flags); /* From patchwork Mon Mar 17 07:00:45 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 874677 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9D48E2356B4; Mon, 17 Mar 2025 07:01:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194899; cv=none; b=cf/DNcd3rUsJcjjqnyPIURhvd3qrJwJK2LcIuAkQ6RuDyXGQpOcFP77InMjmq9pHkT4Woo0L/1ISDM/xa4LuWdJ4Io6cRC62IVspWffF1zKrynzUPqau3+Dt6/al4HCrmL+V0cX/TaKo4MilRJLpujNOJGtVx3uKUhC4iiviWOk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194899; c=relaxed/simple; bh=cuQaYOtw2y+3qDg1BeXkGnsveeCxWpGEEUYWxY7aM9I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=j7HtG376cxJ7Da0uzTOmz8r5qLJOYipqwi+Pj04ANMRSdHbEsvXFQN4zpdbGoK21ZndrPRCvyzQiRC1LMLHPCrmg9hL4UpJoBr973H9+LG1nABk59+YnnsG6ca0JC0NlcJ8tAjftykgDrWDIAFHM7BvaSWp8Hqb6IXuZsVtcqqo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=KBt8sZDi; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="KBt8sZDi" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 71653C4CEEC; Mon, 17 Mar 2025 07:01:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742194899; bh=cuQaYOtw2y+3qDg1BeXkGnsveeCxWpGEEUYWxY7aM9I=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KBt8sZDiRv4f12v5K52JY/j4W3LNhiMhCv3uNSRYulvoWx1E6WPc5FINYo7oJj2fm hyZre930m5KwXRNKNwqpO/L1A24rXHj+9zmeCgdvs/GfAY0ZHKCZXp9gCyVzyliF0R KUECf/KDgBBhp0roE9Uajcc/NWVgSzQ78/XEm3cPfRz3GnBNIyoVv0eShSoL5pb8Uq MaRwui5mLYpfug6nDFSW/8gghsouHTL260l8PX1GxYforE2A7zLMvGBUeExZTTQYHT 134pTwQvRqVbHAZUHpr/924rNRol34jglbEb1ntHlJ46Oe9Loyslv2IukKLMqT0F2e viLZBD3cdmaGA== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH v2 30/31] serial: 8250_port: simplify serial8250_request_std_resource() Date: Mon, 17 Mar 2025 08:00:45 +0100 Message-ID: <20250317070046.24386-31-jirislaby@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250317070046.24386-1-jirislaby@kernel.org> References: <20250317070046.24386-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Return immediately from the error locations or switch-case ends. It is therefore easier to see the flow. Signed-off-by: Jiri Slaby (SUSE) --- drivers/tty/serial/8250/8250_port.c | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c index 6466f60416a9..8ac452cea36c 100644 --- a/drivers/tty/serial/8250/8250_port.c +++ b/drivers/tty/serial/8250/8250_port.c @@ -2966,7 +2966,6 @@ static int serial8250_request_std_resource(struct uart_8250_port *up) { unsigned int size = serial8250_port_size(up); struct uart_port *port = &up->port; - int ret = 0; switch (port->iotype) { case UPIO_AU: @@ -2975,32 +2974,28 @@ static int serial8250_request_std_resource(struct uart_8250_port *up) case UPIO_MEM32BE: case UPIO_MEM16: case UPIO_MEM: - if (!port->mapbase) { - ret = -EINVAL; - break; - } + if (!port->mapbase) + return -EINVAL; - if (!request_mem_region(port->mapbase, size, "serial")) { - ret = -EBUSY; - break; - } + if (!request_mem_region(port->mapbase, size, "serial")) + return -EBUSY; if (port->flags & UPF_IOREMAP) { port->membase = ioremap(port->mapbase, size); if (!port->membase) { release_mem_region(port->mapbase, size); - ret = -ENOMEM; + return -ENOMEM; } } - break; - + return 0; case UPIO_HUB6: case UPIO_PORT: if (!request_region(port->iobase, size, "serial")) - ret = -EBUSY; - break; + return -EBUSY; + return 0; } - return ret; + + return 0; } static void serial8250_release_std_resource(struct uart_8250_port *up) From patchwork Mon Mar 17 07:00:46 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 874319 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9344A2356DB; Mon, 17 Mar 2025 07:01:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194901; cv=none; b=S34O5RwZa0ZkmtD9SQCKqklq2WX1J1BbVvKekxgHApp5YIFnyOMJU9Av/1t2p1d0eLFHGRIALoJVQYH/5H6CGEnNetf0NGzvQ9mgEEwfSdoFN4cJfcI/BVQ6UL6jdQFY5eI7ZqXL3e/g7wLKpcdZx5os4pP1xBRJSkJ/scjfpNQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742194901; c=relaxed/simple; bh=DNNEffSPT7NpR4ueszPoeFAk+N1pzzZMTLBTDGxrgBQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cpoOgA8n4lOmMU3P8ysHrZLqQ3cI38vw23g2pViC9FpOIdULky5xIdjdve8u00NBIpR+flzSWQA9tPhF5RegKOofkg2CzZ1l/7WdsNRfOT2+OX+i8hO7q9SjUGyH7h5gbxGwdwO7FY7Lv76yifwCT0l6LNuJ3XXWhjzx/yJSPh4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=JnreIRbv; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="JnreIRbv" Received: by smtp.kernel.org (Postfix) with ESMTPSA id EF5AAC4CEEC; Mon, 17 Mar 2025 07:01:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742194901; bh=DNNEffSPT7NpR4ueszPoeFAk+N1pzzZMTLBTDGxrgBQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JnreIRbvZoMKSKrwHK8GiBm2XFbkvc3FER7xeY8AguLwfkF4KkXTwlUU7nl3xUuBD AIujIK1Mabgdp5lzg9OsvVj11w79+/msVNYw905cYKms9duLMuTDpjRgdTi2yJA7Om FCcWjT/3T2szQQzv8mFTD6H1/A1pNYAxX4fq5oHhHunU6uKxr7F1qoALuF3L7MfIpT kR3+ts0nWKtSGBzgpbLIg/0KYX90jnSXLWJTm/x3GMFJOf6diKsBoooT/YviBc1L/a CSF03w4F4c4+pzIksmUc0IQO8qRiQ2EDg2efnXWcdvN7tZM+DKPQdJoeiS+ZorgKds x8E5y9TxcNJCg== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH v2 31/31] serial: switch change_irq and change_port to bool in uart_set_info() Date: Mon, 17 Mar 2025 08:00:46 +0100 Message-ID: <20250317070046.24386-32-jirislaby@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250317070046.24386-1-jirislaby@kernel.org> References: <20250317070046.24386-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 change_irq and change_port are boolean variables. Mark them as such (instead of uint). Signed-off-by: Jiri Slaby (SUSE) --- [v2] this is a new patch --- drivers/tty/serial/serial_core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c index 0dbf75b25ff6..88669972d9a0 100644 --- a/drivers/tty/serial/serial_core.c +++ b/drivers/tty/serial/serial_core.c @@ -895,8 +895,8 @@ static int uart_set_info(struct tty_struct *tty, struct tty_port *port, { struct uart_port *uport = uart_port_check(state); unsigned long new_port; - unsigned int change_irq, change_port, closing_wait; - unsigned int old_custom_divisor, close_delay; + unsigned int old_custom_divisor, close_delay, closing_wait; + bool change_irq, change_port; upf_t old_flags, new_flags; int retval;