Message ID | 20240416182741.22514-3-mcpratt@pm.me |
---|---|
State | New |
Headers | show |
Series | serial: 8250: Set fifo timeout with uart_fifo_timeout() | expand |
On Tue, Apr 16, 2024 at 06:29:56PM +0000, Michael Pratt wrote: > Currently, there are 7 checks for whether to enable > the internal fifo device of a 8250/16550 type uart. > > Instead of checking all 7 values again whenever > we need to know whether we have the fifo device enabled, > store the result as a struct member of uart_8250_port. > > This can, for example, lessen the amount > of calculations done during a write operation. ... > @@ -3392,6 +3392,8 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s, > + up->fifo_enable = use_fifo; This seems incorrect / not the only one place to assign this. What if the console not enabled at compile time? What if it's not enabled at boot time?
diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c index fc9dd5d45295..5b0cfe6bc98c 100644 --- a/drivers/tty/serial/8250/8250_port.c +++ b/drivers/tty/serial/8250/8250_port.c @@ -3392,6 +3392,8 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s, */ !(up->port.flags & UPF_CONS_FLOW); + up->fifo_enable = use_fifo; + if (likely(use_fifo)) serial8250_console_fifo_write(up, s, count); else diff --git a/include/linux/serial_8250.h b/include/linux/serial_8250.h index fd59ed2cca53..017429f0e743 100644 --- a/include/linux/serial_8250.h +++ b/include/linux/serial_8250.h @@ -127,6 +127,7 @@ struct uart_8250_port { struct list_head list; /* ports on this IRQ */ u32 capabilities; /* port capabilities */ u16 bugs; /* port bugs */ + unsigned int fifo_enable; /* fifo enabled if capable */ unsigned int tx_loadsz; /* transmit fifo load size */ unsigned char acr; unsigned char fcr;
Currently, there are 7 checks for whether to enable the internal fifo device of a 8250/16550 type uart. Instead of checking all 7 values again whenever we need to know whether we have the fifo device enabled, store the result as a struct member of uart_8250_port. This can, for example, lessen the amount of calculations done during a write operation. Signed-off-by: Michael Pratt <mcpratt@pm.me> --- V1 -> V2: new commit drivers/tty/serial/8250/8250_port.c | 2 ++ include/linux/serial_8250.h | 1 + 2 files changed, 3 insertions(+)