[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH-for-8.2 v4 10/10] hw/char/pl011: Implement TX FIFO
From: |
Daniel P . Berrangé |
Subject: |
Re: [PATCH-for-8.2 v4 10/10] hw/char/pl011: Implement TX FIFO |
Date: |
Wed, 22 Nov 2023 10:38:41 +0000 |
User-agent: |
Mutt/2.2.10 (2023-03-25) |
On Wed, Nov 22, 2023 at 02:31:29PM +0400, Marc-André Lureau wrote:
> Hi
>
> On Thu, Nov 9, 2023 at 11:30 PM Philippe Mathieu-Daudé
> <philmd@linaro.org> wrote:
> >
> > If the UART back-end chardev doesn't drain data as fast as stdout
> > does or blocks, buffer in the TX FIFO to try again later.
> >
> > This avoids having the IO-thread busy waiting on chardev back-ends,
> > reported recently when testing the Trusted Reference Stack and
> > using the socket backend:
> > https://linaro.atlassian.net/browse/TRS-149?focusedCommentId=149574
> >
> > Implement registering a front-end 'watch' callback on back-end
> > events, so we can resume transmitting when the back-end is writable
> > again, not blocking the main loop.
>
> I do not have access to that Jira issue.
>
> In general, chardev backends should have some buffering already
> (socket, files etc).
>
> If we want more, or extra control over buffering, maybe this should be
> implemented at the chardev level, rather than each frontend implement
> its own extra buffering logic...
>
> Regardless, I think frontends should have an option to "drop" data
> when the chardev/buffer is full, rather than hanging.
Does anyone really want data to be dropped by QEMU ? Every time I've seen
a scenario where data has been dropped or lost, it has been considered
a bug to be solved.
Sure, we don't want QEMU to block on chardev writes, but we want that
more than throwing away data.
What's the use case for capturing data from the serial port, but throwing
it away if the other end of a socket doesn't read quickly enough ?
If someone does want lossy serial ports, they could configure the UDP
charedev backend already.
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
- [PATCH-for-8.2 v4 05/10] hw/char/pl011: Extract pl011_read_rxdata() from pl011_read(), (continued)
- [PATCH-for-8.2 v4 05/10] hw/char/pl011: Extract pl011_read_rxdata() from pl011_read(), Philippe Mathieu-Daudé, 2023/11/09
- [PATCH-for-8.2 v4 06/10] hw/char/pl011: Warn when using disabled transmitter, Philippe Mathieu-Daudé, 2023/11/09
- [PATCH-for-8.2 v4 07/10] hw/char/pl011: Check if receiver is enabled, Philippe Mathieu-Daudé, 2023/11/09
- [PATCH-for-8.2 v4 08/10] hw/char/pl011: Rename RX FIFO methods, Philippe Mathieu-Daudé, 2023/11/09
- [PATCH-for-8.2 v4 09/10] hw/char/pl011: Add transmit FIFO to PL011State, Philippe Mathieu-Daudé, 2023/11/09
- [PATCH-for-8.2 v4 10/10] hw/char/pl011: Implement TX FIFO, Philippe Mathieu-Daudé, 2023/11/09
- Re: [PATCH-for-8.2 v4 00/10] hw/char/pl011: Implement TX (async) FIFO to avoid blocking the main loop, Peter Maydell, 2023/11/09