Re: [PATCH] serial: 8250: don't register ports that have no hardware
Lucas Tanure <[email protected]>
| Newsgroups | org.kernel.vger.linux-serial,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On 19/08/2026 05:42, Jiri Slaby wrote: > On 18. 08. 26, 20:52, Lucas Tanure wrote: >> The 8250 driver creates a fixed set of port slots at boot and >> registers a ttyS device for each one, even when the slot describes no >> hardware. On device tree platforms those slots are empty, but they >> still take the ttyS0..ttyS3 names. >> >> New Amlogic SoCs (S4, T7) name their real UARTs ttyS as well. With >> both drivers built in, as in arm64 defconfig, the real port fails to >> bind: >> >> sysfs: cannot create duplicate filename '/class/tty/ttyS0' >> meson_uart fe078000.serial: Cannot register tty device on line 0 >> >> Skip slots that have no I/O and no memory address. Legacy x86 slots >> come with resources and are not affected. >> >> Signed-off-by: Lucas Tanure <[email protected]> >> Assisted-by: Claude:claude-fable-5 >> --- >> drivers/tty/serial/8250/8250_core.c | 8 ++++++++ >> 1 file changed, 8 insertions(+) >> >> diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/ >> serial/8250/8250_core.c >> index f49862d90eeb..e66e0cdbb210 100644 >> --- a/drivers/tty/serial/8250/8250_core.c >> +++ b/drivers/tty/serial/8250/8250_core.c >> @@ -378,6 +378,14 @@ void __init serial8250_register_ports(struct >> uart_driver *drv, struct device *de >> if (up->port.dev) >> continue; >> + /* >> + * Skip slots that describe no hardware: they would only >> + * take up ttyS<n> names. Real ports get their node when >> + * they claim a slot in serial8250_register_8250_port(). >> + */ >> + if (!up->port.iobase && !up->port.mapbase && !up->port.membase) >> + continue; > Hi, I am working on upstreaming the Khadas VIM4 (Amlogic T7). On that board the serial console does not come up at all: meson_uart fails to register because the 8250 stub ports already own the ttyS names. > So you can no longer set up those ports via TIOCSSERIAL? > > And what about already registered consoles? > > Why does meson register ttyS* in the first place? Because of commit e71aab9d6132 ("tty: serial: meson: apply ttyS devname instead of ttyAML for new SoCs"). meson_uart carries two uart_drivers, ttyAML and ttyS, and A1, S4 and T7 are wired to the ttyS one. > > F*ck AI proposed changes. > > thanks, I will talk to Amlogic list to see if there is other solution. thanks, lucas