qemu/hw/char
Alistair Francis 53c1557b23 hw/char: sifive_uart: Print uart characters async
The current approach of using qemu_chr_fe_write() and ignoring the
return values results in dropped characters [1].

Let's update the SiFive UART to use a async sifive_uart_xmit() function
to transmit the characters and apply back pressure to the guest with
the SIFIVE_UART_TXFIFO_FULL status.

This should avoid dropped characters and more realisticly model the
hardware.

1: https://gitlab.com/qemu-project/qemu/-/issues/2114

Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
Reviewed-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
Tested-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20240910045419.1252277-3-alistair.francis@wdc.com>
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
2024-10-30 11:22:08 +10:00
..
avr_usart.c hw/char: replace assert(0) with g_assert_not_reached() 2024-09-13 20:12:16 +02:00
bcm2835_aux.c hw/char/bcm2835_aux: Fix assert when receive FIFO fills up 2024-07-29 13:34:18 +01:00
cadence_uart.c hw, target: Add ResetType argument to hold and exit phase methods 2024-04-25 10:21:06 +01:00
cmsdk-apb-uart.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
debugcon.c qdev: Move softmmu properties to qdev-properties-system.h 2020-12-18 15:20:17 -05:00
digic-uart.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
escc.c hw/char/escc: convert Sun mouse to use QemuInputHandler 2024-09-13 20:11:13 +02:00
exynos4210_uart.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
goldfish_tty.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
grlib_apbuart.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
ibex_uart.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
imx_serial.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
ipoctal232.c hw/char: Constify VMState 2023-12-29 11:17:30 +11:00
Kconfig hw/char: Extract serial-mm 2024-10-03 19:33:23 +02:00
mcf_uart.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
mchp_pfsoc_mmuart.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
meson.build hw/char: Extract serial-mm 2024-10-03 19:33:23 +02:00
nrf51_uart.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
omap_uart.c * pc: Add a description for the i8042 property 2024-10-04 19:28:37 +01:00
parallel-isa.c hw/char/parallel-isa: Implement relocation and enabling/disabling for TYPE_ISA_PARALLEL 2024-02-14 06:09:32 -05:00
parallel.c hw/char/parallel: Move portio_list from ParallelState to ISAParallelState 2024-02-14 06:09:32 -05:00
pl011.c hw/char/pl011: Use correct masks for IBRD and FBRD 2024-10-15 15:16:17 +01:00
renesas_sci.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
riscv_htif.c hw/char: riscv_htif: Use blocking qemu_chr_fe_write_all 2024-10-30 11:22:08 +10:00
sclpconsole-lm.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
sclpconsole.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
serial-isa.c hw/char/serial.h: Extract serial-isa.h 2024-10-03 19:33:23 +02:00
serial-mm.c hw/char: Extract serial-mm 2024-10-03 19:33:23 +02:00
serial-pci-multi.c hw/char: Constify VMState 2023-12-29 11:17:30 +11:00
serial-pci.c hw/char: Constify VMState 2023-12-29 11:17:30 +11:00
serial.c * pc: Add a description for the i8042 property 2024-10-04 19:28:37 +01:00
sh_serial.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
shakti_uart.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
sifive_uart.c hw/char: sifive_uart: Print uart characters async 2024-10-30 11:22:08 +10:00
spapr_vty.c hw/char: Constify VMState 2023-12-29 11:17:30 +11:00
stm32f2xx_usart.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
stm32l4x5_usart.c hw/char/stm32l4x5_usart.c: Enable USART ACK bit response 2024-09-19 12:58:58 +01:00
terminal3270.c s390x: css: report errors from ccw_dstream_read/write 2021-04-09 10:52:13 +02:00
trace-events hw/char/pl011: Rename RX FIFO methods 2024-09-13 20:11:13 +02:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
virtio-console.c hw/char: Have FEWatchFunc handlers return G_SOURCE_CONTINUE/REMOVE 2023-08-31 19:47:43 +02:00
virtio-serial-bus.c hw/char/virtio-serial-bus: Protect from DMA re-entrancy bugs 2024-04-10 09:09:33 +02:00
xen_console.c hw/char/xen_console: Fix missing ERRP_GUARD() for error_prepend() 2024-03-09 18:51:45 +01:00
xilinx_uartlite.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00