lkml.org 
[lkml]   [2024]   [Apr]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 12/15] tty: serial: switch from circ_buf to kfifo
    On 2024-04-15 15:28, Jiri Slaby wrote:
    > On 15. 04. 24, 14:58, Marek Szyprowski wrote:
    > > Dear All,
    > >
    > > On 05.04.2024 08:08, Jiri Slaby (SUSE) wrote:
    > > > Switch from struct circ_buf to proper kfifo. kfifo provides much better
    > > > API, esp. when wrap-around of the buffer needs to be taken into account.
    > > > Look at pl011_dma_tx_refill() or cpm_uart_tx_pump() changes for example.
    > > >
    > > > Kfifo API can also fill in scatter-gather DMA structures, so it easier
    > > > for that use case too. Look at lpuart_dma_tx() for example. Note that
    > > > not all drivers can be converted to that (like atmel_serial), they
    > > > handle DMA specially.
    > > >
    > > > Note that usb-serial uses kfifo for TX for ages.
    > > >
    > > > omap needed a bit more care as it needs to put a char into FIFO to start
    > > > the DMA transfer when OMAP_DMA_TX_KICK is set. In that case, we have to
    > > > do kfifo_dma_out_prepare twice: once to find out the tx_size (to find
    > > > out if it is worths to do DMA at all -- size >= 4), the second time for
    > > > the actual transfer.
    > > >
    > > > All traces of circ_buf are removed from serial_core.h (and its struct
    > > > uart_state).
    > > >
    > > > Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
    > > > ...
    > >
    > > This patch landed in linux-next as commit 1788cf6a91d9 ("tty: serial:
    > > switch from circ_buf to kfifo"). Unfortunately it breaks UART operation
    > > on thr Amlogic Meson based boards (drivers/tty/serial/meson_uart.c
    > > driver) and Qualcomm RB5 board (drivers/tty/serial/qcom_geni_serial.c).
    > > Once the init process is started, a complete garbage is printed to the
    > > serial console. Here is an example how it looks:
    >
    > Oh my!
    >
    > Both drivers move the tail using both kfifo and uart_xmit_advance()
    > interfaces. Bah. Does it help to remove that uart_xmit_advance() for both of
    > them? (TX stats will be broken.)
    >
    > Users of uart_port_tx() are not affected.
    >
    > This is my fault when merging uart_xmit_advance() with this series.
    >

    I'm trying to run on two dragonboard devices db410c and db845c and both
    fails to boot see the boot failure from db845c [1], linux-next tag: next-20240415.
    I tried to apply the patch [2] (that you proposed in this thread) ontop of next-20240415. However, that didn't
    help bootlog on db845c [3].

    Cheers,
    Anders
    [1] https://tuxapi.tuxsuite.com/v1/groups/linaro/projects/lkft/tests/2f7sLxYtIQXQzsnTzE1Dye2xweg/logs?format=html
    [2] https://lore.kernel.org/lkml/20240416054825.6211-1-jirislaby@kernel.org/raw
    [3] https://tuxapi.tuxsuite.com/v1/groups/linaro/projects/anders/tests/2fDgvWnyEmFm9mqMCxOaruBOfTe/logs?format=html

    \
     
     \ /
      Last update: 2024-05-27 16:43    [W:4.245 / U:0.100 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site