qemu/hw/char
Peter Maydell 10e3edd9b3 hw/char/pl011: Use correct masks for IBRD and FBRD
In commit b88cfee902 we defined masks for the IBRD and FBRD
integer and fractional baud rate divider registers, to prevent the
guest from writing invalid values which could cause division-by-zero.
Unfortunately we got the mask values the wrong way around: the FBRD
register is six bits and the IBRD register is 16 bits, not
vice-versa.

You would only run into this bug if you programmed the UART to a baud
rate of less than 9600, because for 9600 baud and above the IBRD
value will fit into 6 bits, as per the table in
 https://developer.arm.com/documentation/ddi0183/g/programmers-model/register-descriptions/fractional-baud-rate-register--uartfbrd

The only visible effects would be that the value read back from
the register by the guest would be truncated, and we would
print an incorrect baud rate in the debug logs.

Cc: qemu-stable@nongnu.org
Fixes: b88cfee902 ("hw/char/pl011: Avoid division-by-zero in pl011_get_baudrate()")
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2610
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Gavin Shan <gshan@redhat.com>
Message-id: 20241007144732.2491331-1-peter.maydell@linaro.org
(cherry picked from commit cd247eae16)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
2024-10-15 20:33:06 +03:00
..
avr_usart.c qdev: Move softmmu properties to qdev-properties-system.h 2020-12-18 15:20:17 -05: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/char: Constify VMState 2023-12-29 11:17:30 +11:00
debugcon.c qdev: Move softmmu properties to qdev-properties-system.h 2020-12-18 15:20:17 -05:00
digic-uart.c hw/char: Constify VMState 2023-12-29 11:17:30 +11:00
escc.c hw/char: Constify VMState 2023-12-29 11:17:30 +11:00
etraxfs_ser.c bulk: Rename TARGET_FMT_plx -> HWADDR_FMT_plx 2023-01-18 11:14:34 +01:00
exynos4210_uart.c hw/char: Constify VMState 2023-12-29 11:17:30 +11:00
goldfish_tty.c util/fifo8: Rename fifo8_pop_buf() -> fifo8_pop_bufptr() 2024-07-23 22:34:54 +02:00
grlib_apbuart.c hw/sparc/grlib: split out the headers for each peripherals 2024-02-15 16:58:46 +01:00
ibex_uart.c hw/char: Constify VMState 2023-12-29 11:17:30 +11:00
imx_serial.c hw/char/imx_serial: Implement receive FIFO and ageing timer 2024-01-26 11:34:21 +00:00
ipoctal232.c hw/char: Constify VMState 2023-12-29 11:17:30 +11:00
Kconfig hw/char: Implement STM32L4x5 USART skeleton 2024-04-25 10:21:59 +01:00
mcf_uart.c hw/char/mcf_uart: Have mcf_uart_create() return DeviceState 2023-11-01 07:31:05 +01:00
mchp_pfsoc_mmuart.c hw/char: Constify VMState 2023-12-29 11:17:30 +11:00
meson.build hw/char: Implement STM32L4x5 USART skeleton 2024-04-25 10:21:59 +01:00
nrf51_uart.c hw/char: Constify VMState 2023-12-29 11:17:30 +11:00
omap_uart.c hw: arm: Remove use of tabs in some source files 2024-05-28 14:20:48 +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 20:33:06 +03:00
renesas_sci.c hw/char: Constify VMState 2023-12-29 11:17:30 +11:00
riscv_htif.c hw/char: riscv_htif: replace exit calls with proper shutdown 2023-10-12 12:35:36 +10:00
sclpconsole-lm.c hw/char: Constify VMState 2023-12-29 11:17:30 +11:00
sclpconsole.c hw/char: Constify VMState 2023-12-29 11:17:30 +11:00
serial-isa.c hw/char/serial-isa: Implement relocation and enabling/disabling for TYPE_ISA_SERIAL 2024-02-14 06:09:32 -05: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 hw/char: Constify VMState 2023-12-29 11:17:30 +11:00
sh_serial.c hw/char/sh_serial: Add device id to trace output 2021-10-30 18:39:37 +02:00
shakti_uart.c hw/char: shakti_uart: Register device in 'input' category 2021-10-07 08:41:33 +10:00
sifive_uart.c hw, target: Add ResetType argument to hold and exit phase methods 2024-04-25 10:21:06 +01:00
spapr_vty.c hw/char: Constify VMState 2023-12-29 11:17:30 +11:00
stm32f2xx_usart.c hw/char/stm32f2xx_usart: Update IRQ when DR is written 2023-11-02 13:36:45 +00:00
stm32l4x5_usart.c hw/char/stm32l4x5_usart.c: Enable USART ACK bit response 2024-09-25 21:05:48 +03:00
terminal3270.c s390x: css: report errors from ccw_dstream_read/write 2021-04-09 10:52:13 +02:00
trace-events hw/char/stm32l4x5_usart: Add options for serial parameters setting 2024-04-25 10:21:59 +01: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/char/xilinx_uartlite: Expose XILINX_UARTLITE QOM type 2023-02-27 13:27:05 +00:00