qemu/hw
Philippe Mathieu-Daudé 543671d990 hw/char/sh_serial: Return correct number of empty RX FIFO elements
In the IOCanReadHandler sh_serial_can_receive(), if the Serial
Control Register 'Receive Enable' bit is set (bit 4), then we
return a size of (1 << 4) which happens to be equal to 16, so
effectively SH_RX_FIFO_LENGTH.

The IOReadHandler, sh_serial_receive1() takes care to receive
multiple chars, but if the FIFO is partly filled, we only process
the number of free slots in the FIFO, discarding the other chars!

Fix by returning how many elements the FIFO can queue in the
IOCanReadHandler, so we don't have to process more than that in
the IOReadHandler, thus not discarding anything.

Remove the now unnecessary check on 's->rx_cnt < SH_RX_FIFO_LENGTH'
in IOReadHandler, reducing the block indentation.

Fixes: 63242a007a ("SH4: Serial controller improvement")
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Luc Michel <luc.michel@amd.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20250220092903.3726-10-philmd@linaro.org>
2025-03-04 14:45:34 +01:00
..
9pfs 9pfs: improve v9fs_open() tracing 2025-02-06 17:10:46 +01:00
acpi hw/acpi/ghes: Make ghes_record_cper_errors() static 2025-03-04 14:45:34 +01:00
adc include/hw/qdev-properties: Remove DEFINE_PROP_END_OF_LIST 2024-12-19 19:36:37 +01:00
alpha hw/boards: Do not create unusable default if=sd drives 2025-02-16 14:25:08 +01:00
arm hw/xen/xen-hvm: Reduce included headers 2025-03-04 14:45:34 +01:00
audio Accel & Exec patch queue 2024-12-21 11:07:00 -05:00
avr hw/boards: Do not create unusable default if=sd drives 2025-02-16 14:25:08 +01:00
block hw/vmapple/virtio-blk: Add support for apple virtio-blk 2025-03-04 14:45:34 +01:00
char hw/char/sh_serial: Return correct number of empty RX FIFO elements 2025-03-04 14:45:34 +01:00
core hw/vmapple/virtio-blk: Add support for apple virtio-blk 2025-03-04 14:45:34 +01:00
cpu hw/cpu/arm_mpcore: Remove default values for GIC external IRQs 2025-02-20 14:20:29 +00:00
cxl mem/cxl_type3: support 3, 6, 12 and 16 interleave ways 2025-02-21 07:18:42 -05:00
display pvg: add option to configure it out 2025-02-25 16:18:12 +01:00
dma Accel & Exec patch queue 2024-12-21 11:07:00 -05:00
fsi hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
gpio hw/gpio/pca955*: Move Kconfig switches next to implementations 2025-02-25 15:32:58 +00:00
hppa hw/boards: Do not create unusable default if=sd drives 2025-02-16 14:25:08 +01:00
hyperv qapi: Move include/qapi/qmp/ to include/qobject/ 2025-02-10 15:33:16 +01:00
i2c hw/arm: Mark Allwinner Technology devices as little-endian 2025-02-16 14:41:46 +01:00
i386 hw/xen/xen-hvm: Reduce included headers 2025-03-04 14:45:34 +01:00
ide Accel & Exec patch queue 2024-12-21 11:07:00 -05:00
input Accel & Exec patch queue 2024-12-21 11:07:00 -05:00
intc hw/intc: Remove TCG dependency on ARM_GICV3 2025-03-04 14:45:34 +01:00
ipack hw/ipack: Remove legacy qemu_allocate_irqs() use 2025-01-31 19:36:44 +01:00
ipmi Accel & Exec patch queue 2024-12-21 11:07:00 -05:00
isa hw: Declare various const data as 'const' 2025-02-16 14:26:07 +01:00
loongarch target-arm queue: 2025-03-03 10:20:03 +08:00
m68k hw/boards: Do not create unusable default if=sd drives 2025-02-16 14:25:08 +01:00
mem mem/cxl_type3: support 3, 6, 12 and 16 interleave ways 2025-02-21 07:18:42 -05:00
microblaze hw/ssi/xilinx_spi: Make device endianness configurable 2025-02-16 14:34:57 +01:00
mips hw: Centralize handling of -machine dumpdtb option 2025-02-24 15:03:42 +00:00
misc hw/misc/pvpanic: Add MMIO interface 2025-03-04 14:45:34 +01:00
net hw/net/fsl_etsec: Set eTSEC device description and category 2025-03-04 14:45:34 +01:00
nubus include/hw/qdev-properties: Remove DEFINE_PROP_END_OF_LIST 2024-12-19 19:36:37 +01:00
nvme hw/nvme: remove nvme_aio_err() 2025-02-26 12:40:35 +01:00
nvram fw_cfg: Don't set callback_opaque NULL in fw_cfg_modify_bytes_read() 2024-12-31 21:21:34 +01:00
openrisc hw: Centralize handling of -machine dumpdtb option 2025-02-24 15:03:42 +00:00
pci virtio,pc,pci: features, fixes, cleanups 2025-02-22 05:06:39 +08:00
pci-bridge Accel & Exec patch queue 2024-12-21 11:07:00 -05:00
pci-host hw/arm/fsl-imx8mp: Add PCIe support 2025-02-25 17:02:34 +00:00
ppc hw/ppc/spapr: Restrict part of PAGE_INIT hypercall to TCG 2025-03-04 14:45:34 +01:00
remote Memory pull request for 10.0 2025-02-19 08:36:26 +08:00
riscv hw: Centralize handling of -machine dumpdtb option 2025-02-24 15:03:42 +00:00
rtc hw/arm: Mark Allwinner Technology devices as little-endian 2025-02-16 14:41:46 +01:00
rx hw/rx: Allow execution without either bios or kernel 2025-02-16 14:45:38 +01:00
s390x virtio,pc,pci: features, fixes, cleanups 2025-02-22 05:06:39 +08:00
scsi block: remove unused BLOCK_OP_TYPE_DATAPLANE 2025-02-06 14:51:10 +01:00
sd hw/arm: Mark Allwinner Technology devices as little-endian 2025-02-16 14:41:46 +01:00
sensor hw: Make class data 'const' 2025-02-16 14:26:07 +01:00
sh4 hw/boards: Do not create unusable default if=sd drives 2025-02-16 14:25:08 +01:00
smbios include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
sparc hw/boards: Do not create unusable default if=sd drives 2025-02-16 14:25:08 +01:00
sparc64 hw/boards: Do not create unusable default if=sd drives 2025-02-16 14:25:08 +01:00
ssi hw/ssi: Make flash size a property in NPCM7XX FIU 2025-02-20 14:20:29 +00:00
timer * qom: Use command line syntax for default values in help 2025-03-03 10:20:59 +08:00
tpm hw/tpm: Have TPM TIS sysbus device inherit from DYNAMIC_SYS_BUS_DEVICE 2025-02-16 14:25:07 +01:00
tricore hw/boards: Do not create unusable default if=sd drives 2025-02-16 14:25:08 +01:00
ufs hw/ufs: Fix legacy single doorbell support bit 2025-02-17 18:20:53 +09:00
usb hw/usb/hcd-xhci-pci: Adds property for disabling mapping in IRQ mode 2025-03-04 14:45:34 +01:00
vfio virtio,pc,pci: features, fixes, cleanups 2025-02-22 05:06:39 +08:00
virtio virtio,pc,pci: features, fixes, cleanups 2025-02-22 05:06:39 +08:00
vmapple hw/vmapple/vmapple: Add vmapple machine type 2025-03-04 14:45:34 +01:00
watchdog hw/arm: Mark Allwinner Technology devices as little-endian 2025-02-16 14:41:46 +01:00
xen hw/xen/xen-hvm: Reduce included headers 2025-03-04 14:45:34 +01:00
xenpv hw/boards: Do not create unusable default if=sd drives 2025-02-16 14:25:08 +01:00
xtensa hw/boards: Do not create unusable default if=sd drives 2025-02-16 14:25:08 +01:00
Kconfig hw: Add vmapple subdir 2025-03-04 14:45:34 +01:00
meson.build hw: Add vmapple subdir 2025-03-04 14:45:34 +01:00