accel/tcg: suppress IRQ check for special TBs
authorAlex Bennée <alex.bennee@linaro.org>
Mon, 29 Nov 2021 14:09:26 +0000 (14:09 +0000)
committerAlex Bennée <alex.bennee@linaro.org>
Mon, 29 Nov 2021 15:12:37 +0000 (15:12 +0000)
commitaff0e204cb1f1c036a496c94c15f5dfafcd9b4b4
tree3b7ca5c6f32f9635df139d4961c2c2aaa87d9007
parent48e14066ac10581db4e69f75eda107cfdafa6022
accel/tcg: suppress IRQ check for special TBs

When we set cpu->cflags_next_tb it is because we want to carefully
control the execution of the next TB. Currently there is a race that
causes the second stage of watchpoint handling to get ignored if an
IRQ is processed before we finish executing the instruction that
triggers the watchpoint. Use the new CF_NOIRQ facility to avoid the
race.

We also suppress IRQs when handling precise self modifying code to
avoid unnecessary bouncing.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Cc: Pavel Dovgalyuk <pavel.dovgalyuk@ispras.ru>
Fixes: https://gitlab.com/qemu-project/qemu/-/issues/245
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20211129140932.4115115-3-alex.bennee@linaro.org>
accel/tcg/cpu-exec.c
accel/tcg/translate-all.c
softmmu/physmem.c