* [PATCH] serial: 8250: don't lost port's default capabilities
@ 2024-07-06 8:29 Jisheng Zhang
2024-07-06 9:02 ` Greg Kroah-Hartman
2024-07-06 14:05 ` Yixun Lan
0 siblings, 2 replies; 3+ messages in thread
From: Jisheng Zhang @ 2024-07-06 8:29 UTC (permalink / raw)
To: Greg Kroah-Hartman, Jiri Slaby, Heikki Krogerus
Cc: Arnd Bergmann, linux-kernel, linux-serial, linux-riscv
Commit b0b8c84cf58d ("serial: of_serial: Handle auto-flow-control
property") added support for fifo-size and hw-flow-control properties
to avoid adding new types to 8250.c for UARTs that are compatible with
the standard types but that have different size fifo or support 16750
compatible auto flow control. We avoided many new 8250 port types with
this nice feature, but there's a problem, if the code detects fifo-size
or auto-flow-control property, up->capabilities will be set
accordingly, then serial8250_set_defaults() will ignore the default
port's capabilities:
|if (!up->capabilities)
| up->capabilities = uart_config[type].flags;
If the port's default capabilities contains other bits such as
UART_CAP_SLEEP, UART_CAP_EFR and so on, they are lost.
Fixes: b0b8c84cf58d ("serial: of_serial: Handle auto-flow-control property")
Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
---
drivers/tty/serial/8250/8250_port.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c
index 893bc493f662..e20614241229 100644
--- a/drivers/tty/serial/8250/8250_port.c
+++ b/drivers/tty/serial/8250/8250_port.c
@@ -3245,8 +3245,7 @@ void serial8250_set_defaults(struct uart_8250_port *up)
up->port.fifosize = uart_config[type].fifo_size;
if (!up->tx_loadsz)
up->tx_loadsz = uart_config[type].tx_loadsz;
- if (!up->capabilities)
- up->capabilities = uart_config[type].flags;
+ up->capabilities |= uart_config[type].flags;
}
set_io_from_upio(port);
--
2.43.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] serial: 8250: don't lost port's default capabilities
2024-07-06 8:29 [PATCH] serial: 8250: don't lost port's default capabilities Jisheng Zhang
@ 2024-07-06 9:02 ` Greg Kroah-Hartman
2024-07-06 14:05 ` Yixun Lan
1 sibling, 0 replies; 3+ messages in thread
From: Greg Kroah-Hartman @ 2024-07-06 9:02 UTC (permalink / raw)
To: Jisheng Zhang
Cc: Jiri Slaby, Heikki Krogerus, Arnd Bergmann, linux-kernel,
linux-serial, linux-riscv
On Sat, Jul 06, 2024 at 04:29:28PM +0800, Jisheng Zhang wrote:
> Commit b0b8c84cf58d ("serial: of_serial: Handle auto-flow-control
> property") added support for fifo-size and hw-flow-control properties
> to avoid adding new types to 8250.c for UARTs that are compatible with
> the standard types but that have different size fifo or support 16750
> compatible auto flow control. We avoided many new 8250 port types with
> this nice feature, but there's a problem, if the code detects fifo-size
> or auto-flow-control property, up->capabilities will be set
> accordingly, then serial8250_set_defaults() will ignore the default
> port's capabilities:
>
> |if (!up->capabilities)
> | up->capabilities = uart_config[type].flags;
>
> If the port's default capabilities contains other bits such as
> UART_CAP_SLEEP, UART_CAP_EFR and so on, they are lost.
>
> Fixes: b0b8c84cf58d ("serial: of_serial: Handle auto-flow-control property")
> Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
> ---
> drivers/tty/serial/8250/8250_port.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
Hi,
This is the friendly patch-bot of Greg Kroah-Hartman. You have sent him
a patch that has triggered this response. He used to manually respond
to these common problems, but in order to save his sanity (he kept
writing the same thing over and over, yet to different people), I was
created. Hopefully you will not take offence and will fix the problem
in your patch and resubmit it so that it can be accepted into the Linux
kernel tree.
You are receiving this message because of the following common error(s)
as indicated below:
- You have marked a patch with a "Fixes:" tag for a commit that is in an
older released kernel, yet you do not have a cc: stable line in the
signed-off-by area at all, which means that the patch will not be
applied to any older kernel releases. To properly fix this, please
follow the documented rules in the
Documentation/process/stable-kernel-rules.rst file for how to resolve
this.
If you wish to discuss this problem further, or you have questions about
how to resolve this issue, please feel free to respond to this email and
Greg will reply once he has dug out from the pending patches received
from other developers.
thanks,
greg k-h's patch email bot
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] serial: 8250: don't lost port's default capabilities
2024-07-06 8:29 [PATCH] serial: 8250: don't lost port's default capabilities Jisheng Zhang
2024-07-06 9:02 ` Greg Kroah-Hartman
@ 2024-07-06 14:05 ` Yixun Lan
1 sibling, 0 replies; 3+ messages in thread
From: Yixun Lan @ 2024-07-06 14:05 UTC (permalink / raw)
To: Jisheng Zhang
Cc: Greg Kroah-Hartman, Jiri Slaby, Heikki Krogerus, Arnd Bergmann,
linux-kernel, linux-serial, linux-riscv
Hi
On 16:29 Sat 06 Jul , Jisheng Zhang wrote:
> Commit b0b8c84cf58d ("serial: of_serial: Handle auto-flow-control
> property") added support for fifo-size and hw-flow-control properties
> to avoid adding new types to 8250.c for UARTs that are compatible with
> the standard types but that have different size fifo or support 16750
> compatible auto flow control. We avoided many new 8250 port types with
> this nice feature, but there's a problem, if the code detects fifo-size
> or auto-flow-control property, up->capabilities will be set
> accordingly, then serial8250_set_defaults() will ignore the default
> port's capabilities:
>
> |if (!up->capabilities)
> | up->capabilities = uart_config[type].flags;
>
so the previous old logic is trying to override the config of 'type' uart,
while this patch try to extend capabilities with default config of 'type' uart as base
I tend to agree this is right direction (but wasn't 100% sure..)
btw, Jisheng, can you also check serial8250_do_startup()? which has similar logic
> If the port's default capabilities contains other bits such as
> UART_CAP_SLEEP, UART_CAP_EFR and so on, they are lost.
>
> Fixes: b0b8c84cf58d ("serial: of_serial: Handle auto-flow-control property")
I believe the commit just reveal the problem, make it more visible, but not the root cause,
'git blame' lead to b6830f6df8914f ("serial: 8250: Split base port operations from universal driver")
as the original commit introduce this logic which seems exist long time ago..
> Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
> ---
> drivers/tty/serial/8250/8250_port.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c
> index 893bc493f662..e20614241229 100644
> --- a/drivers/tty/serial/8250/8250_port.c
> +++ b/drivers/tty/serial/8250/8250_port.c
> @@ -3245,8 +3245,7 @@ void serial8250_set_defaults(struct uart_8250_port *up)
> up->port.fifosize = uart_config[type].fifo_size;
> if (!up->tx_loadsz)
> up->tx_loadsz = uart_config[type].tx_loadsz;
> - if (!up->capabilities)
> - up->capabilities = uart_config[type].flags;
> + up->capabilities |= uart_config[type].flags;
> }
>
> set_io_from_upio(port);
> --
> 2.43.0
>
--
Yixun Lan (dlan)
Gentoo Linux Developer
GPG Key ID AABEFD55
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-07-06 14:05 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-06 8:29 [PATCH] serial: 8250: don't lost port's default capabilities Jisheng Zhang
2024-07-06 9:02 ` Greg Kroah-Hartman
2024-07-06 14:05 ` Yixun Lan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).