* [PATCH] [v3] serial: 8250: remove obsolete and broken PORT_RSA support
@ 2026-10-19 8:56 Arnd Bergmann
2026-10-19 9:15 ` sashiko-bot
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: Arnd Bergmann @ 2026-10-19 8:56 UTC (permalink / raw)
To: Greg Kroah-Hartman, Jiri Slaby
Cc: Arnd Bergmann, Andy Shevchenko, Hugo Villeneuve,
Uwe Kleine-König (The Capable Hub), linux-kernel,
linux-serial
From: Arnd Bergmann <arnd@arndb.de>
For all I can tell, the RSA support in the 8250 driver is not functional
and has not been for a long time.
The RSA-DV II/S ISA card[1] was sold by IODATA in the 1990s as a faster
alternative to regular ISA serial ports, and it was discontinued in
2002. Linux support was added by Kiyokazu SUTO in 2000.
The driver defines an I/O port base address of -8 (negative eight),
which should always get refused by request_region on all architectures
for being outside of the valid resource range.
Further, it seems that a patch to setserial would be required in order
to set PORT_RSA when not using autoconfiguration.
This patch removes all code related to the RSA support, with the exception
of the user-visible PORT_RSA definition.
Link: http://translate.google.com/translate?hl=en&sl=ja&u=http://www.iodata.jp/products/network/rsadv2s.htm
Link: https://lore.kernel.org/all/1309211120-2803-6-git-send-email-arnd@arndb.de/
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
v2: rebased my own patch after 15 years
v3: fix up Makefile and sunsu.c file
---
drivers/tty/serial/8250/8250.h | 17 --
drivers/tty/serial/8250/8250_core.c | 6 -
drivers/tty/serial/8250/8250_platform.c | 4 -
drivers/tty/serial/8250/8250_port.c | 8 -
drivers/tty/serial/8250/8250_rsa.c | 209 ------------------------
drivers/tty/serial/8250/Kconfig | 11 --
drivers/tty/serial/8250/Makefile | 1 -
drivers/tty/serial/sunsu.c | 92 -----------
include/uapi/linux/serial_reg.h | 51 ------
9 files changed, 399 deletions(-)
delete mode 100644 drivers/tty/serial/8250/8250_rsa.c
diff --git a/drivers/tty/serial/8250/8250.h b/drivers/tty/serial/8250/8250.h
index 75afeb8c0cef..6225027ed7b4 100644
--- a/drivers/tty/serial/8250/8250.h
+++ b/drivers/tty/serial/8250/8250.h
@@ -126,9 +126,6 @@ void serial8250_isa_init_ports(void);
extern struct platform_device *serial8250_isa_devs;
-extern const struct uart_ops *univ8250_port_base_ops;
-extern struct uart_ops univ8250_port_ops;
-
static inline int serial_in(struct uart_8250_port *up, int offset)
{
return up->port.serial_in(&up->port, offset);
@@ -323,20 +320,6 @@ static inline int serial8250_pnp_init(void) { return 0; }
static inline void serial8250_pnp_exit(void) { }
#endif
-#ifdef CONFIG_SERIAL_8250_RSA
-void univ8250_rsa_support(struct uart_ops *ops, const struct uart_ops *core_ops);
-void rsa_enable(struct uart_8250_port *up);
-void rsa_disable(struct uart_8250_port *up);
-void rsa_autoconfig(struct uart_8250_port *up);
-void rsa_reset(struct uart_8250_port *up);
-#else
-static inline void univ8250_rsa_support(struct uart_ops *ops, const struct uart_ops *core_ops) { }
-static inline void rsa_enable(struct uart_8250_port *up) {}
-static inline void rsa_disable(struct uart_8250_port *up) {}
-static inline void rsa_autoconfig(struct uart_8250_port *up) {}
-static inline void rsa_reset(struct uart_8250_port *up) {}
-#endif
-
#ifdef CONFIG_SERIAL_8250_FINTEK
int fintek_8250_probe(struct uart_8250_port *uart);
#else
diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c
index 96c99f0ae683..b9ce22948389 100644
--- a/drivers/tty/serial/8250/8250_core.c
+++ b/drivers/tty/serial/8250/8250_core.c
@@ -307,9 +307,6 @@ static void univ8250_release_irq(struct uart_8250_port *up)
serial_unlink_irq_chain(up);
}
-const struct uart_ops *univ8250_port_base_ops;
-struct uart_ops univ8250_port_ops;
-
static const struct uart_8250_ops univ8250_driver_ops = {
.setup_irq = univ8250_setup_irq,
.release_irq = univ8250_release_irq,
@@ -352,9 +349,6 @@ struct uart_8250_port *serial8250_setup_port(int index)
up->port.port_id = index;
serial8250_init_port(up);
- if (!univ8250_port_base_ops)
- univ8250_port_base_ops = up->port.ops;
- up->port.ops = &univ8250_port_ops;
timer_setup(&up->timer, serial8250_timeout, 0);
diff --git a/drivers/tty/serial/8250/8250_platform.c b/drivers/tty/serial/8250/8250_platform.c
index 8aa769085bfa..1a41a4ac25f8 100644
--- a/drivers/tty/serial/8250/8250_platform.c
+++ b/drivers/tty/serial/8250/8250_platform.c
@@ -73,10 +73,6 @@ static void __init __serial8250_isa_init_ports(void)
for (i = 0; i < nr_uarts; i++)
serial8250_setup_port(i);
- /* chain base port ops to support Remote Supervisor Adapter */
- univ8250_port_ops = *univ8250_port_base_ops;
- univ8250_rsa_support(&univ8250_port_ops, univ8250_port_base_ops);
-
for (i = 0; i < ARRAY_SIZE(old_serial_port) && i < nr_uarts; i++) {
struct uart_8250_port *up = serial8250_get_port(i);
struct uart_port *port = &up->port;
diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c
index 3593e7209879..462441237a90 100644
--- a/drivers/tty/serial/8250/8250_port.c
+++ b/drivers/tty/serial/8250/8250_port.c
@@ -1186,8 +1186,6 @@ static void autoconfig(struct uart_8250_port *up)
break;
}
- rsa_autoconfig(up);
-
serial_out(up, UART_LCR, save_lcr);
port->fifosize = uart_config[up->port.type].fifo_size;
@@ -1199,7 +1197,6 @@ static void autoconfig(struct uart_8250_port *up)
/*
* Reset the UART.
*/
- rsa_reset(up);
serial8250_out_MCR(up, save_mcr);
serial8250_clear_fifos(up);
serial_in(up, UART_RX);
@@ -2156,9 +2153,6 @@ static void serial8250_startup_special(struct uart_port *port)
UART_DA830_PWREMU_MGMT_URRST |
UART_DA830_PWREMU_MGMT_FREE);
break;
- case PORT_RSA:
- rsa_enable(up);
- break;
}
}
@@ -2450,8 +2444,6 @@ void serial8250_do_shutdown(struct uart_port *port)
serial8250_clear_fifos(up);
- rsa_disable(up);
-
/*
* Read data port to reset things, and then unlink from
* the IRQ chain.
diff --git a/drivers/tty/serial/8250/8250_rsa.c b/drivers/tty/serial/8250/8250_rsa.c
deleted file mode 100644
index da971437e89c..000000000000
--- a/drivers/tty/serial/8250/8250_rsa.c
+++ /dev/null
@@ -1,209 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-
-#include <linux/errno.h>
-#include <linux/ioport.h>
-#include <linux/module.h>
-#include <linux/moduleparam.h>
-
-#include <linux/serial.h>
-#include <linux/serial_8250.h>
-
-#include "8250.h"
-
-#define PORT_RSA_MAX 4
-static unsigned long probe_rsa[PORT_RSA_MAX];
-static unsigned int probe_rsa_count;
-
-static const struct uart_ops *core_port_base_ops;
-
-static int rsa8250_request_resource(struct uart_8250_port *up)
-{
- struct uart_port *port = &up->port;
- unsigned long start;
- unsigned int size;
-
- if (!uart_iotype_io(port->iotype))
- return -EINVAL;
-
- start = UART_RSA_BASE << port->regshift;
- start += port->iobase;
- size = 8 << port->regshift;
-
- if (!request_region(start, size, "serial-rsa"))
- return -EBUSY;
- return 0;
-}
-
-static void rsa8250_release_resource(struct uart_8250_port *up)
-{
- struct uart_port *port = &up->port;
- unsigned long offset;
- unsigned int size;
-
- if (!uart_iotype_io(port->iotype))
- return;
-
- offset = UART_RSA_BASE << port->regshift;
- size = 8 << port->regshift;
- release_region(port->iobase + offset, size);
-}
-
-static void univ8250_config_port(struct uart_port *port, int flags)
-{
- struct uart_8250_port *up = up_to_u8250p(port);
- unsigned int i;
-
- up->probe &= ~UART_PROBE_RSA;
- if (port->type == PORT_RSA) {
- if (rsa8250_request_resource(up) == 0)
- up->probe |= UART_PROBE_RSA;
- } else if (flags & UART_CONFIG_TYPE) {
- for (i = 0; i < probe_rsa_count; i++) {
- if (probe_rsa[i] == up->port.iobase) {
- if (rsa8250_request_resource(up) == 0)
- up->probe |= UART_PROBE_RSA;
- break;
- }
- }
- }
-
- core_port_base_ops->config_port(port, flags);
-
- if (port->type != PORT_RSA && up->probe & UART_PROBE_RSA)
- rsa8250_release_resource(up);
-}
-
-static int univ8250_request_port(struct uart_port *port)
-{
- struct uart_8250_port *up = up_to_u8250p(port);
- int ret;
-
- ret = core_port_base_ops->request_port(port);
- if (ret == 0 && port->type == PORT_RSA) {
- ret = rsa8250_request_resource(up);
- if (ret < 0)
- core_port_base_ops->release_port(port);
- }
-
- return ret;
-}
-
-static void univ8250_release_port(struct uart_port *port)
-{
- struct uart_8250_port *up = up_to_u8250p(port);
-
- if (port->type == PORT_RSA)
- rsa8250_release_resource(up);
- core_port_base_ops->release_port(port);
-}
-
-/*
- * It is not allowed to directly reference any symbols from 8250.ko here as
- * that would result in a dependency loop between the 8250.ko and
- * 8250_base.ko modules. This function is called from 8250.ko and is used to
- * break the symbolic dependency cycle. Anything that is needed from 8250.ko
- * has to be passed as pointers to this function which then can adjust those
- * variables on 8250.ko side or store them locally as needed.
- */
-void univ8250_rsa_support(struct uart_ops *ops, const struct uart_ops *core_ops)
-{
- core_port_base_ops = core_ops;
- ops->config_port = univ8250_config_port;
- ops->request_port = univ8250_request_port;
- ops->release_port = univ8250_release_port;
-}
-EXPORT_SYMBOL_FOR_MODULES(univ8250_rsa_support, "8250");
-
-module_param_hw_array(probe_rsa, ulong, ioport, &probe_rsa_count, 0444);
-MODULE_PARM_DESC(probe_rsa, "Probe I/O ports for RSA");
-
-/*
- * Attempts to turn on the RSA FIFO. Returns zero on failure.
- * We set the port uart clock rate if we succeed.
- */
-static int __rsa_enable(struct uart_8250_port *up)
-{
- unsigned char mode;
- int result;
-
- mode = serial_in(up, UART_RSA_MSR);
- result = mode & UART_RSA_MSR_FIFO;
-
- if (!result) {
- serial_out(up, UART_RSA_MSR, mode | UART_RSA_MSR_FIFO);
- mode = serial_in(up, UART_RSA_MSR);
- result = mode & UART_RSA_MSR_FIFO;
- }
-
- if (result)
- up->port.uartclk = SERIAL_RSA_BAUD_BASE * 16;
-
- return result;
-}
-
-/*
- * If this is an RSA port, see if we can kick it up to the higher speed clock.
- */
-void rsa_enable(struct uart_8250_port *up)
-{
- if (up->port.type != PORT_RSA)
- return;
-
- if (up->port.uartclk != SERIAL_RSA_BAUD_BASE * 16) {
- guard(uart_port_lock_irq)(&up->port);
- __rsa_enable(up);
- }
- if (up->port.uartclk == SERIAL_RSA_BAUD_BASE * 16)
- serial_out(up, UART_RSA_FRR, 0);
-}
-
-/*
- * Attempts to turn off the RSA FIFO and resets the RSA board back to 115kbps compat mode. It is
- * unknown why interrupts were disabled in here. However, the caller is expected to preserve this
- * behaviour by grabbing the spinlock before calling this function.
- */
-void rsa_disable(struct uart_8250_port *up)
-{
- unsigned char mode;
- int result;
-
- if (up->port.type != PORT_RSA)
- return;
-
- if (up->port.uartclk != SERIAL_RSA_BAUD_BASE * 16)
- return;
-
- guard(uart_port_lock_irq)(&up->port);
-
- mode = serial_in(up, UART_RSA_MSR);
- result = !(mode & UART_RSA_MSR_FIFO);
-
- if (!result) {
- serial_out(up, UART_RSA_MSR, mode & ~UART_RSA_MSR_FIFO);
- mode = serial_in(up, UART_RSA_MSR);
- result = !(mode & UART_RSA_MSR_FIFO);
- }
-
- if (result)
- up->port.uartclk = SERIAL_RSA_BAUD_BASE_LO * 16;
-}
-
-void rsa_autoconfig(struct uart_8250_port *up)
-{
- /* Only probe for RSA ports if we got the region. */
- if (up->port.type != PORT_16550A)
- return;
- if (!(up->probe & UART_PROBE_RSA))
- return;
-
- if (__rsa_enable(up))
- up->port.type = PORT_RSA;
-}
-
-void rsa_reset(struct uart_8250_port *up)
-{
- if (up->port.type != PORT_RSA)
- return;
-
- serial_out(up, UART_RSA_FRR, 0);
-}
diff --git a/drivers/tty/serial/8250/Kconfig b/drivers/tty/serial/8250/Kconfig
index 9917b7e1bb26..908fc86852b6 100644
--- a/drivers/tty/serial/8250/Kconfig
+++ b/drivers/tty/serial/8250/Kconfig
@@ -236,17 +236,6 @@ config SERIAL_8250_DETECT_IRQ
If unsure, say N.
-config SERIAL_8250_RSA
- bool "Support RSA serial ports"
- depends on SERIAL_8250_EXTENDED
- help
- Say Y here if you have a IODATA RSA-DV II/S ISA card and
- would like to use its >115kbps speeds.
- You will need to provide module parameter "probe_rsa", or boot-time
- parameter 8250.probe_rsa with I/O addresses of this card then.
-
- If you don't have such card, or if unsure, say N.
-
config SERIAL_8250_MANY_PORTS
bool "Support more than 4 legacy serial ports"
depends on SERIAL_8250_EXTENDED
diff --git a/drivers/tty/serial/8250/Makefile b/drivers/tty/serial/8250/Makefile
index d241ce486953..a6ee25eee9fe 100644
--- a/drivers/tty/serial/8250/Makefile
+++ b/drivers/tty/serial/8250/Makefile
@@ -14,7 +14,6 @@ obj-$(CONFIG_SERIAL_8250) += 8250_base.o
8250_base-$(CONFIG_SERIAL_8250_DWLIB) += 8250_dwlib.o
8250_base-$(CONFIG_SERIAL_8250_FINTEK) += 8250_fintek.o
8250_base-$(CONFIG_SERIAL_8250_PCILIB) += 8250_pcilib.o
-8250_base-$(CONFIG_SERIAL_8250_RSA) += 8250_rsa.o
obj-$(CONFIG_SERIAL_8250_CONSOLE) += 8250_early.o
diff --git a/drivers/tty/serial/sunsu.c b/drivers/tty/serial/sunsu.c
index f43b802add12..33e2b11f9d69 100644
--- a/drivers/tty/serial/sunsu.c
+++ b/drivers/tty/serial/sunsu.c
@@ -150,75 +150,6 @@ static void serial_icr_write(struct uart_sunsu_port *up, int offset, int value)
serial_out(up, UART_ICR, value);
}
-#ifdef CONFIG_SERIAL_8250_RSA
-/*
- * Attempts to turn on the RSA FIFO. Returns zero on failure.
- * We set the port uart clock rate if we succeed.
- */
-static int __enable_rsa(struct uart_sunsu_port *up)
-{
- unsigned char mode;
- int result;
-
- mode = serial_in(up, UART_RSA_MSR);
- result = mode & UART_RSA_MSR_FIFO;
-
- if (!result) {
- serial_out(up, UART_RSA_MSR, mode | UART_RSA_MSR_FIFO);
- mode = serial_in(up, UART_RSA_MSR);
- result = mode & UART_RSA_MSR_FIFO;
- }
-
- if (result)
- up->port.uartclk = SERIAL_RSA_BAUD_BASE * 16;
-
- return result;
-}
-
-static void enable_rsa(struct uart_sunsu_port *up)
-{
- if (up->port.type == PORT_RSA) {
- if (up->port.uartclk != SERIAL_RSA_BAUD_BASE * 16) {
- uart_port_lock_irq(&up->port);
- __enable_rsa(up);
- uart_port_unlock_irq(&up->port);
- }
- if (up->port.uartclk == SERIAL_RSA_BAUD_BASE * 16)
- serial_out(up, UART_RSA_FRR, 0);
- }
-}
-
-/*
- * Attempts to turn off the RSA FIFO. Returns zero on failure.
- * It is unknown why interrupts were disabled in here. However,
- * the caller is expected to preserve this behaviour by grabbing
- * the spinlock before calling this function.
- */
-static void disable_rsa(struct uart_sunsu_port *up)
-{
- unsigned char mode;
- int result;
-
- if (up->port.type == PORT_RSA &&
- up->port.uartclk == SERIAL_RSA_BAUD_BASE * 16) {
- uart_port_lock_irq(&up->port);
-
- mode = serial_in(up, UART_RSA_MSR);
- result = !(mode & UART_RSA_MSR_FIFO);
-
- if (!result) {
- serial_out(up, UART_RSA_MSR, mode & ~UART_RSA_MSR_FIFO);
- mode = serial_in(up, UART_RSA_MSR);
- result = !(mode & UART_RSA_MSR_FIFO);
- }
-
- if (result)
- up->port.uartclk = SERIAL_RSA_BAUD_BASE_LO * 16;
- uart_port_unlock_irq(&up->port);
- }
-}
-#endif /* CONFIG_SERIAL_8250_RSA */
-
static inline void __stop_tx(struct uart_sunsu_port *p)
{
if (p->ier & UART_IER_THRI) {
@@ -596,14 +527,6 @@ static int sunsu_startup(struct uart_port *port)
serial_out(up, UART_LCR, 0);
}
-#ifdef CONFIG_SERIAL_8250_RSA
- /*
- * If this is an RSA port, see if we can kick it up to the
- * higher speed clock.
- */
- enable_rsa(up);
-#endif
-
/*
* Clear the FIFO buffers and disable them.
* (they will be reenabled in set_termios())
@@ -719,13 +642,6 @@ static void sunsu_shutdown(struct uart_port *port)
UART_FCR_CLEAR_XMIT);
serial_out(up, UART_FCR, 0);
-#ifdef CONFIG_SERIAL_8250_RSA
- /*
- * Reset the RSA board back to 115kbps compat mode.
- */
- disable_rsa(up);
-#endif
-
/*
* Read data port to reset things.
*/
@@ -780,10 +696,6 @@ sunsu_change_speed(struct uart_port *port, unsigned int cflag,
if (uart_config[up->port.type].flags & UART_USE_FIFO) {
if ((up->port.uartclk / quot) < (2400 * 16))
fcr = UART_FCR_ENABLE_FIFO | UART_FCR_TRIGGER_1;
-#ifdef CONFIG_SERIAL_8250_RSA
- else if (up->port.type == PORT_RSA)
- fcr = UART_FCR_ENABLE_FIFO | UART_FCR_TRIGGER_14;
-#endif
else
fcr = UART_FCR_ENABLE_FIFO | UART_FCR_TRIGGER_8;
}
@@ -1128,10 +1040,6 @@ static void sunsu_autoconfig(struct uart_sunsu_port *up)
/*
* Reset the UART.
*/
-#ifdef CONFIG_SERIAL_8250_RSA
- if (up->port.type == PORT_RSA)
- serial_out(up, UART_RSA_FRR, 0);
-#endif
serial_out(up, UART_MCR, save_mcr);
serial_out(up, UART_FCR, (UART_FCR_ENABLE_FIFO |
UART_FCR_CLEAR_RCVR |
diff --git a/include/uapi/linux/serial_reg.h b/include/uapi/linux/serial_reg.h
index 9c987b04e2d0..e4f288b557ca 100644
--- a/include/uapi/linux/serial_reg.h
+++ b/include/uapi/linux/serial_reg.h
@@ -285,57 +285,6 @@
#define UART_ACR_ICRRD 0x40 /* ICR Read enable */
#define UART_ACR_ASREN 0x80 /* Additional status enable */
-
-
-/*
- * These definitions are for the RSA-DV II/S card, from
- *
- * Kiyokazu SUTO <suto@ks-and-ks.ne.jp>
- */
-
-#define UART_RSA_BASE (-8)
-
-#define UART_RSA_MSR ((UART_RSA_BASE) + 0) /* I/O: Mode Select Register */
-
-#define UART_RSA_MSR_SWAP (1 << 0) /* Swap low/high 8 bytes in I/O port addr */
-#define UART_RSA_MSR_FIFO (1 << 2) /* Enable the external FIFO */
-#define UART_RSA_MSR_FLOW (1 << 3) /* Enable the auto RTS/CTS flow control */
-#define UART_RSA_MSR_ITYP (1 << 4) /* Level (1) / Edge triger (0) */
-
-#define UART_RSA_IER ((UART_RSA_BASE) + 1) /* I/O: Interrupt Enable Register */
-
-#define UART_RSA_IER_Rx_FIFO_H (1 << 0) /* Enable Rx FIFO half full int. */
-#define UART_RSA_IER_Tx_FIFO_H (1 << 1) /* Enable Tx FIFO half full int. */
-#define UART_RSA_IER_Tx_FIFO_E (1 << 2) /* Enable Tx FIFO empty int. */
-#define UART_RSA_IER_Rx_TOUT (1 << 3) /* Enable char receive timeout int */
-#define UART_RSA_IER_TIMER (1 << 4) /* Enable timer interrupt */
-
-#define UART_RSA_SRR ((UART_RSA_BASE) + 2) /* IN: Status Read Register */
-
-#define UART_RSA_SRR_Tx_FIFO_NEMP (1 << 0) /* Tx FIFO is not empty (1) */
-#define UART_RSA_SRR_Tx_FIFO_NHFL (1 << 1) /* Tx FIFO is not half full (1) */
-#define UART_RSA_SRR_Tx_FIFO_NFUL (1 << 2) /* Tx FIFO is not full (1) */
-#define UART_RSA_SRR_Rx_FIFO_NEMP (1 << 3) /* Rx FIFO is not empty (1) */
-#define UART_RSA_SRR_Rx_FIFO_NHFL (1 << 4) /* Rx FIFO is not half full (1) */
-#define UART_RSA_SRR_Rx_FIFO_NFUL (1 << 5) /* Rx FIFO is not full (1) */
-#define UART_RSA_SRR_Rx_TOUT (1 << 6) /* Character reception timeout occurred (1) */
-#define UART_RSA_SRR_TIMER (1 << 7) /* Timer interrupt occurred */
-
-#define UART_RSA_FRR ((UART_RSA_BASE) + 2) /* OUT: FIFO Reset Register */
-
-#define UART_RSA_TIVSR ((UART_RSA_BASE) + 3) /* I/O: Timer Interval Value Set Register */
-
-#define UART_RSA_TCR ((UART_RSA_BASE) + 4) /* OUT: Timer Control Register */
-
-#define UART_RSA_TCR_SWITCH (1 << 0) /* Timer on */
-
-/*
- * The RSA DSV/II board has two fixed clock frequencies. One is the
- * standard rate, and the other is 8 times faster.
- */
-#define SERIAL_RSA_BAUD_BASE (921600)
-#define SERIAL_RSA_BAUD_BASE_LO (SERIAL_RSA_BAUD_BASE / 8)
-
/* Extra registers for TI DA8xx/66AK2x */
#define UART_DA830_PWREMU_MGMT 12
--
2.53.0
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH] [v3] serial: 8250: remove obsolete and broken PORT_RSA support
2026-10-19 8:56 [PATCH] [v3] serial: 8250: remove obsolete and broken PORT_RSA support Arnd Bergmann
@ 2026-10-19 9:15 ` sashiko-bot
2026-10-19 9:39 ` Greg Kroah-Hartman
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: sashiko-bot @ 2026-10-19 9:15 UTC (permalink / raw)
To: Arnd Bergmann; +Cc: linux-serial
> From: Arnd Bergmann <arnd@arndb.de>
>
> For all I can tell, the RSA support in the 8250 driver is not functional
> and has not been for a long time.
>
> The RSA-DV II/S ISA card[1] was sold by IODATA in the 1990s as a faster
> alternative to regular ISA serial ports, and it was discontinued in
> 2002. Linux support was added by Kiyokazu SUTO in 2000.
>
> The driver defines an I/O port base address of -8 (negative eight),
> which should always get refused by request_region on all architectures
> for being outside of the valid resource range.
>
> Further, it seems that a patch to setserial would be required in order
> to set PORT_RSA when not using autoconfiguration.
>
> This patch removes all code related to the RSA support, with the exception
> of the user-visible PORT_RSA definition.
>
> Link: http://translate.google.com/translate?hl=en&sl=ja&u=http://www.iodata.jp/products/network/rsadv2s.htm
> Link: https://lore.kernel.org/all/1309211120-2803-6-git-send-email-arnd@arndb.de/
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Sashiko has reviewed this patch and found no issues.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261019090017.430425-1-arnd@kernel.org?part=1
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH] [v3] serial: 8250: remove obsolete and broken PORT_RSA support
2026-10-19 8:56 [PATCH] [v3] serial: 8250: remove obsolete and broken PORT_RSA support Arnd Bergmann
2026-10-19 9:15 ` sashiko-bot
@ 2026-10-19 9:39 ` Greg Kroah-Hartman
2026-10-19 10:25 ` Andy Shevchenko
2026-10-19 10:23 ` Andy Shevchenko
2026-10-19 15:06 ` Jiri Slaby
3 siblings, 1 reply; 6+ messages in thread
From: Greg Kroah-Hartman @ 2026-10-19 9:39 UTC (permalink / raw)
To: Arnd Bergmann
Cc: Jiri Slaby, Arnd Bergmann, Andy Shevchenko, Hugo Villeneuve,
Uwe Kleine-König (The Capable Hub), linux-kernel,
linux-serial
On Mon, Oct 19, 2026 at 10:56:55AM +0200, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
>
> For all I can tell, the RSA support in the 8250 driver is not functional
> and has not been for a long time.
>
> The RSA-DV II/S ISA card[1] was sold by IODATA in the 1990s as a faster
> alternative to regular ISA serial ports, and it was discontinued in
> 2002. Linux support was added by Kiyokazu SUTO in 2000.
>
> The driver defines an I/O port base address of -8 (negative eight),
> which should always get refused by request_region on all architectures
> for being outside of the valid resource range.
>
> Further, it seems that a patch to setserial would be required in order
> to set PORT_RSA when not using autoconfiguration.
>
> This patch removes all code related to the RSA support, with the exception
> of the user-visible PORT_RSA definition.
>
> Link: http://translate.google.com/translate?hl=en&sl=ja&u=http://www.iodata.jp/products/network/rsadv2s.htm
> Link: https://lore.kernel.org/all/1309211120-2803-6-git-send-email-arnd@arndb.de/
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
> v2: rebased my own patch after 15 years
> v3: fix up Makefile and sunsu.c file
> ---
> drivers/tty/serial/8250/8250.h | 17 --
> drivers/tty/serial/8250/8250_core.c | 6 -
> drivers/tty/serial/8250/8250_platform.c | 4 -
> drivers/tty/serial/8250/8250_port.c | 8 -
> drivers/tty/serial/8250/8250_rsa.c | 209 ------------------------
> drivers/tty/serial/8250/Kconfig | 11 --
> drivers/tty/serial/8250/Makefile | 1 -
> drivers/tty/serial/sunsu.c | 92 -----------
> include/uapi/linux/serial_reg.h | 51 ------
> 9 files changed, 399 deletions(-)
> delete mode 100644 drivers/tty/serial/8250/8250_rsa.c
Any objection for me to sneak this into 7.4-rc1?
thanks,
greg k-h
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] [v3] serial: 8250: remove obsolete and broken PORT_RSA support
2026-10-19 9:39 ` Greg Kroah-Hartman
@ 2026-10-19 10:25 ` Andy Shevchenko
0 siblings, 0 replies; 6+ messages in thread
From: Andy Shevchenko @ 2026-10-19 10:25 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: Arnd Bergmann, Jiri Slaby, Arnd Bergmann, Hugo Villeneuve,
Uwe Kleine-König (The Capable Hub), linux-kernel,
linux-serial
On Mon, Oct 19, 2026 at 11:39:20AM +0200, Greg Kroah-Hartman wrote:
> On Mon, Oct 19, 2026 at 10:56:55AM +0200, Arnd Bergmann wrote:
> > For all I can tell, the RSA support in the 8250 driver is not functional
> > and has not been for a long time.
> >
> > The RSA-DV II/S ISA card[1] was sold by IODATA in the 1990s as a faster
> > alternative to regular ISA serial ports, and it was discontinued in
> > 2002. Linux support was added by Kiyokazu SUTO in 2000.
> >
> > The driver defines an I/O port base address of -8 (negative eight),
> > which should always get refused by request_region on all architectures
> > for being outside of the valid resource range.
> >
> > Further, it seems that a patch to setserial would be required in order
> > to set PORT_RSA when not using autoconfiguration.
> >
> > This patch removes all code related to the RSA support, with the exception
> > of the user-visible PORT_RSA definition.
> >
> > Link: http://translate.google.com/translate?hl=en&sl=ja&u=http://www.iodata.jp/products/network/rsadv2s.htm
> > Link: https://lore.kernel.org/all/1309211120-2803-6-git-send-email-arnd@arndb.de/
> Any objection for me to sneak this into 7.4-rc1?
This is a good removal change, but I would like to make Link tags neater, if
Arnd sends a v4 sooner, I will tag it for early v7.4 (which is indeed a good
candidate to have this).
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] [v3] serial: 8250: remove obsolete and broken PORT_RSA support
2026-10-19 8:56 [PATCH] [v3] serial: 8250: remove obsolete and broken PORT_RSA support Arnd Bergmann
2026-10-19 9:15 ` sashiko-bot
2026-10-19 9:39 ` Greg Kroah-Hartman
@ 2026-10-19 10:23 ` Andy Shevchenko
2026-10-19 15:06 ` Jiri Slaby
3 siblings, 0 replies; 6+ messages in thread
From: Andy Shevchenko @ 2026-10-19 10:23 UTC (permalink / raw)
To: Arnd Bergmann
Cc: Greg Kroah-Hartman, Jiri Slaby, Arnd Bergmann, Hugo Villeneuve,
Uwe Kleine-König (The Capable Hub), linux-kernel,
linux-serial
On Mon, Oct 19, 2026 at 10:56:55AM +0200, Arnd Bergmann wrote:
> For all I can tell, the RSA support in the 8250 driver is not functional
> and has not been for a long time.
>
> The RSA-DV II/S ISA card[1] was sold by IODATA in the 1990s as a faster
> alternative to regular ISA serial ports, and it was discontinued in
> 2002. Linux support was added by Kiyokazu SUTO in 2000.
>
> The driver defines an I/O port base address of -8 (negative eight),
> which should always get refused by request_region on all architectures
> for being outside of the valid resource range.
>
> Further, it seems that a patch to setserial would be required in order
> to set PORT_RSA when not using autoconfiguration.
>
> This patch removes all code related to the RSA support, with the exception
> of the user-visible PORT_RSA definition.
> Link: http://translate.google.com/translate?hl=en&sl=ja&u=http://www.iodata.jp/products/network/rsadv2s.htm
Can we get this without translate? As it adds an unneeded layer.
> Link: https://lore.kernel.org/all/1309211120-2803-6-git-send-email-arnd@arndb.de/
Also would be nice to add references to the Link tags like [1] and [2] and
mention them in the commit message where appropriate.
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] [v3] serial: 8250: remove obsolete and broken PORT_RSA support
2026-10-19 8:56 [PATCH] [v3] serial: 8250: remove obsolete and broken PORT_RSA support Arnd Bergmann
` (2 preceding siblings ...)
2026-10-19 10:23 ` Andy Shevchenko
@ 2026-10-19 15:06 ` Jiri Slaby
3 siblings, 0 replies; 6+ messages in thread
From: Jiri Slaby @ 2026-10-19 15:06 UTC (permalink / raw)
To: Arnd Bergmann, Greg Kroah-Hartman
Cc: Arnd Bergmann, Andy Shevchenko, Hugo Villeneuve,
Uwe Kleine-König (The Capable Hub), linux-kernel,
linux-serial
On 19. 10. 26, 10:56, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
>
> For all I can tell, the RSA support in the 8250 driver is not functional
> and has not been for a long time.
>
> The RSA-DV II/S ISA card[1] was sold by IODATA in the 1990s as a faster
> alternative to regular ISA serial ports, and it was discontinued in
> 2002. Linux support was added by Kiyokazu SUTO in 2000.
>
> The driver defines an I/O port base address of -8 (negative eight),
> which should always get refused by request_region on all architectures
> for being outside of the valid resource range.
>
> Further, it seems that a patch to setserial would be required in order
> to set PORT_RSA when not using autoconfiguration.
>
> This patch removes all code related to the RSA support, with the exception
> of the user-visible PORT_RSA definition.
>
> Link: http://translate.google.com/translate?hl=en&sl=ja&u=http://www.iodata.jp/products/network/rsadv2s.htm
> Link: https://lore.kernel.org/all/1309211120-2803-6-git-send-email-arnd@arndb.de/
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Jiri Slaby <jirislaby@kernel.org>
--
js
suse labs
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-10-19 15:06 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-19 8:56 [PATCH] [v3] serial: 8250: remove obsolete and broken PORT_RSA support Arnd Bergmann
2026-10-19 9:15 ` sashiko-bot
2026-10-19 9:39 ` Greg Kroah-Hartman
2026-10-19 10:25 ` Andy Shevchenko
2026-10-19 10:23 ` Andy Shevchenko
2026-10-19 15:06 ` Jiri Slaby
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox