qemu/hw/timer
Peter Maydell 13557fd392 hw/timer/imx_epit: Avoid assertion when CR.SWR is written
The imx_epit device has a software-controllable reset triggered by
setting the SWR bit in the CR register. An error in commit cc2722ec83
means that we will end up assert()ing if the guest does this, because
the code in imx_epit_write() starts ptimer transactions, and then
imx_epit_reset() also starts ptimer transactions, triggering
"ptimer_transaction_begin: Assertion `!s->in_transaction' failed".

The cleanest way to avoid this double-transaction is to move the
start-transaction for the CR write handling down below the check of
the SWR bit.

Fixes: https://bugs.launchpad.net/qemu/+bug/1880424
Fixes: cc2722ec83
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-id: 20200727154550.3409-1-peter.maydell@linaro.org
2020-08-03 17:56:11 +01:00
..
a9gtimer.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
allwinner-a10-pit.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
altera_timer.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
arm_mptimer.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
arm_timer.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
armv7m_systick.c armv7m_systick: delay timer_new to avoid memleaks 2020-02-07 14:04:28 +00:00
aspeed_timer.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
avr_timer16.c hw/timer: avr: Add limited support for 16-bit timer peripheral 2020-07-11 11:02:05 +02:00
bcm2835_systmr.c hw/timer/bcm2835: Add the BCM2835 SYS_timer 2019-10-25 13:09:27 +01:00
cadence_ttc.c hw/timer/cadence_ttc: move timer_new from init() into realize() to avoid memleaks 2020-03-05 16:09:16 +00:00
cmsdk-apb-dualtimer.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
cmsdk-apb-timer.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
digic-timer.c hw/timer/digic-timer.c: Switch to transaction-based ptimer API 2019-10-15 18:09:02 +01:00
etraxfs_timer.c hw/watchdog/etraxfs_timer.c: Switch to transaction-based ptimer API 2019-10-22 17:44:00 +01:00
exynos4210_mct.c hw/timer/exynos4210_mct: Replace hw_error() by qemu_log_mask() 2020-05-21 22:05:27 +01:00
exynos4210_pwm.c hw/timer/exynos4210_pwm.c: Switch to transaction-based ptimer API 2019-10-15 18:09:02 +01:00
grlib_gptimer.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
hpet.c hw/timer/hpet: Include "exec/address-spaces.h" 2020-03-09 15:59:31 +01:00
i8254_common.c hw/i386: Remove obsolete LoadStateHandler::load_state_old handlers 2019-11-05 23:33:12 +01:00
i8254.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
imx_epit.c hw/timer/imx_epit: Avoid assertion when CR.SWR is written 2020-08-03 17:56:11 +01:00
imx_gpt.c hw/timer/imx_gpt.c: Switch to transaction-based ptimer API 2019-10-15 18:09:03 +01:00
Kconfig hw/timer: avr: Add limited support for 16-bit timer peripheral 2020-07-11 11:02:05 +02:00
lm32_timer.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
Makefile.objs hw/timer: avr: Add limited support for 16-bit timer peripheral 2020-07-11 11:02:05 +02:00
milkymist-sysctl.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
mips_gictimer.c Include hw/hw.h exactly where needed 2019-08-16 13:31:52 +02:00
mss-timer.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
nrf51_timer.c hw/timer/nrf51_timer: Add trace event of counter value update 2020-05-11 11:05:52 +01:00
omap_gptimer.c Include hw/hw.h exactly where needed 2019-08-16 13:31:52 +02:00
omap_synctimer.c Include hw/hw.h exactly where needed 2019-08-16 13:31:52 +02:00
puv3_ost.c hw/unicore32/puv3: Use qemu_log_mask(ERROR) instead of debug printf() 2020-06-09 19:01:56 +02:00
pxa2xx_timer.c hw/timer/pxa2xx_timer: Add assertion to silent static analyzer warning 2020-05-04 14:43:24 +02:00
renesas_cmt.c hw/timer: RX62N compare match timer (CMT) 2020-06-22 18:37:12 +02:00
renesas_tmr.c hw/timer: RX62N 8-Bit timer (TMR) 2020-06-22 18:37:12 +02:00
sh_timer.c hw/timer/sh_timer: Remove unused 'qemu/timer.h' include 2020-06-22 18:37:12 +02:00
slavio_timer.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
stm32f2xx_timer.c hw/timer/stm32f2xx_timer: Remove dead assignment 2020-05-04 14:43:24 +02:00
trace-events hw/timer: avr: Add limited support for 16-bit timer peripheral 2020-07-11 11:02:05 +02:00
xilinx_timer.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00