mbox series

[v5,00/16] hw/char/pl011: Implement TX (async) FIFO to avoid blocking the main loop

Message ID 20240719181041.49545-1-philmd@linaro.org
Headers show
Series hw/char/pl011: Implement TX (async) FIFO to avoid blocking the main loop | expand

Message

Philippe Mathieu-Daudé July 19, 2024, 6:10 p.m. UTC
Hi,

This series add support for (async) FIFO on the transmit path
of the PL011 UART.

Last patch still broken (chars are emitted async),
still patches 1-11 could be merged for this release...

Since v4:
- Rebased (loopback)
- Addressed Richard & Juan migration comments
- Split in smaller patches

Since v3:
- Document migration bits (Alex, Richard)
- Just check FIFO is not empty in pl011_xmit_fifo_state_needed (rth)
- In pl011_xmit check TX enabled first, and ignore < 8-bit TX (rth)

Since v2:
- Added R-b tags
- Addressed Richard comments on migration

Since v1:
- Restrict pl011_ops[] impl access_size,
- Do not check transmitter is enabled (Peter),
- Addressed Alex's review comments,
- Simplified migration trying to care about backward compat,
  but still unsure...

Philippe Mathieu-Daudé (16):
  tests/avocado: Add 'device:pl011' tag to tests exercising PL011 UART
  hw/char/pl011: Remove unused 'readbuff' field
  hw/char/pl011: Move pl011_put_fifo() earlier
  hw/char/pl011: Move pl011_loopback_enabled|tx() around
  hw/char/pl011: Split RX/TX path of pl011_reset_fifo()
  hw/char/pl011: Extract pl011_write_txdata() from pl011_write()
  hw/char/pl011: Extract pl011_read_rxdata() from pl011_read()
  hw/char/pl011: Warn when using disabled transmitter
  tests/qtest: Update tests using PL011 UART
  hw/char/pl011: Check if receiver is enabled
  hw/char/pl011: Rename RX FIFO methods
  hw/char/pl011: Add transmit FIFO to PL011State
  hw/char/pl011: Introduce pl011_xmit() as GSource
  hw/char/pl011: Consider TX FIFO overrun error
  hw/char/pl011: Drain TX FIFO when no backend connected
  hw/char/pl011: Implement TX FIFO

 include/hw/char/pl011.h                  |   3 +-
 hw/char/pl011.c                          | 339 ++++++++++++++++-------
 tests/qtest/boot-serial-test.c           |  15 +-
 hw/char/trace-events                     |   9 +-
 tests/avocado/boot_linux.py              |   1 +
 tests/avocado/boot_linux_console.py      |   2 +
 tests/avocado/boot_xen.py                |   1 +
 tests/avocado/machine_aarch64_sbsaref.py |   1 +
 tests/avocado/machine_aarch64_virt.py    |   1 +
 tests/avocado/smmu.py                    |   1 +
 tests/avocado/tuxrun_baselines.py        |   5 +
 11 files changed, 277 insertions(+), 101 deletions(-)

Comments

Philippe Mathieu-Daudé Sept. 7, 2024, 5:42 a.m. UTC | #1
Hi Peter,

On 19/7/24 20:10, Philippe Mathieu-Daudé wrote:

> Philippe Mathieu-Daudé (16):

>    hw/char/pl011: Remove unused 'readbuff' field
>    hw/char/pl011: Move pl011_put_fifo() earlier
>    hw/char/pl011: Move pl011_loopback_enabled|tx() around
>    hw/char/pl011: Split RX/TX path of pl011_reset_fifo()
>    hw/char/pl011: Extract pl011_write_txdata() from pl011_write()
>    hw/char/pl011: Extract pl011_read_rxdata() from pl011_read()
>    hw/char/pl011: Warn when using disabled transmitter

>    hw/char/pl011: Rename RX FIFO methods


If you don't mind I'll queue the reviewed 2-8 & 11 to ease my workflow,
before respining the next version.

Thanks,

Phil.
Peter Maydell Sept. 7, 2024, 10:38 a.m. UTC | #2
On Sat, 7 Sept 2024 at 06:42, Philippe Mathieu-Daudé <philmd@linaro.org> wrote:
>
> Hi Peter,
>
> On 19/7/24 20:10, Philippe Mathieu-Daudé wrote:
>
> > Philippe Mathieu-Daudé (16):
>
> >    hw/char/pl011: Remove unused 'readbuff' field
> >    hw/char/pl011: Move pl011_put_fifo() earlier
> >    hw/char/pl011: Move pl011_loopback_enabled|tx() around
> >    hw/char/pl011: Split RX/TX path of pl011_reset_fifo()
> >    hw/char/pl011: Extract pl011_write_txdata() from pl011_write()
> >    hw/char/pl011: Extract pl011_read_rxdata() from pl011_read()
> >    hw/char/pl011: Warn when using disabled transmitter
>
> >    hw/char/pl011: Rename RX FIFO methods
>
>
> If you don't mind I'll queue the reviewed 2-8 & 11 to ease my workflow,
> before respining the next version.

Sure, that's fine. I don't have anything pl011 related in
my queue that would conflict.

-- PMM
Philippe Mathieu-Daudé Sept. 9, 2024, 1:27 p.m. UTC | #3
On 7/9/24 12:38, Peter Maydell wrote:
> On Sat, 7 Sept 2024 at 06:42, Philippe Mathieu-Daudé <philmd@linaro.org> wrote:
>>
>> Hi Peter,
>>
>> On 19/7/24 20:10, Philippe Mathieu-Daudé wrote:
>>
>>> Philippe Mathieu-Daudé (16):
>>
>>>     hw/char/pl011: Remove unused 'readbuff' field
>>>     hw/char/pl011: Move pl011_put_fifo() earlier
>>>     hw/char/pl011: Move pl011_loopback_enabled|tx() around
>>>     hw/char/pl011: Split RX/TX path of pl011_reset_fifo()
>>>     hw/char/pl011: Extract pl011_write_txdata() from pl011_write()
>>>     hw/char/pl011: Extract pl011_read_rxdata() from pl011_read()
>>>     hw/char/pl011: Warn when using disabled transmitter
>>
>>>     hw/char/pl011: Rename RX FIFO methods
>>
>>
>> If you don't mind I'll queue the reviewed 2-8 & 11 to ease my workflow,
>> before respining the next version.
> 
> Sure, that's fine. I don't have anything pl011 related in
> my queue that would conflict.

Great, thank you!