[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 22/37] accel/tcg: also suppress asynchronous IRQs for cpu_io_recom
From: |
Alex Bennée |
Subject: |
[PULL 22/37] accel/tcg: also suppress asynchronous IRQs for cpu_io_recompile |
Date: |
Fri, 17 Jan 2025 13:42:41 +0000 |
While it would be technically correct to allow an IRQ to happen (as
the offending instruction never really completed) it messes up
instrumentation. We already take care to only use memory
instrumentation on the block, we should also suppress IRQs.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Reviewed-by: Julian Ganz <neither@nut.email>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20250116160306.1709518-23-alex.bennee@linaro.org>
diff --git a/accel/tcg/translate-all.c b/accel/tcg/translate-all.c
index 453eb20ec9..d56ca13cdd 100644
--- a/accel/tcg/translate-all.c
+++ b/accel/tcg/translate-all.c
@@ -633,9 +633,10 @@ void cpu_io_recompile(CPUState *cpu, uintptr_t retaddr)
* Exit the loop and potentially generate a new TB executing the
* just the I/O insns. We also limit instrumentation to memory
* operations only (which execute after completion) so we don't
- * double instrument the instruction.
+ * double instrument the instruction. Also don't let an IRQ sneak
+ * in before we execute it.
*/
- cpu->cflags_next_tb = curr_cflags(cpu) | CF_MEMI_ONLY | n;
+ cpu->cflags_next_tb = curr_cflags(cpu) | CF_MEMI_ONLY | CF_NOIRQ | n;
if (qemu_loglevel_mask(CPU_LOG_EXEC)) {
vaddr pc = cpu->cc->get_pc(cpu);
--
2.39.5
- [PULL 15/37] contrib/plugins/stoptrigger: fix 32-bit build, (continued)
- [PULL 15/37] contrib/plugins/stoptrigger: fix 32-bit build, Alex Bennée, 2025/01/17
- [PULL 23/37] win32: remove usage of attribute gcc_struct, Alex Bennée, 2025/01/17
- [PULL 12/37] contrib/plugins/howvec: ensure we don't regress if this plugin is extended, Alex Bennée, 2025/01/17
- [PULL 36/37] docs: add a glossary, Alex Bennée, 2025/01/17
- [PULL 30/37] include/exec: remove warning_printed from MemoryRegion, Alex Bennée, 2025/01/17
- [PULL 29/37] include/exec: fix some copy and paste errors in kdoc, Alex Bennée, 2025/01/17
- [PULL 14/37] tests/tcg/plugins/mem: fix 32-bit build, Alex Bennée, 2025/01/17
- [PULL 27/37] editorconfig: update for perl scripts, Alex Bennée, 2025/01/17
- [PULL 06/37] semihosting/console: Avoid including 'cpu.h', Alex Bennée, 2025/01/17
- [PULL 09/37] system: squash usb_parse into a single function, Alex Bennée, 2025/01/17
- [PULL 22/37] accel/tcg: also suppress asynchronous IRQs for cpu_io_recompile,
Alex Bennée <=
- [PULL 28/37] tests/qtest: fix some copy and paste errors in kdoc, Alex Bennée, 2025/01/17
- [PULL 33/37] docs/devel: add b4 for patch retrieval, Alex Bennée, 2025/01/17
- [PULL 35/37] docs/devel: add a codebase section, Alex Bennée, 2025/01/17
- [PULL 26/37] plugins: fix kdoc annotation, Alex Bennée, 2025/01/17
- [PULL 34/37] docs/devel: add information on how to setup build environments, Alex Bennée, 2025/01/17
- [PULL 19/37] contrib/plugins/hwprofile: fix 32-bit build, Alex Bennée, 2025/01/17
- [PULL 37/37] scripts/nsis.py: Run dependency check for each DLL file only once, Alex Bennée, 2025/01/17
- [PULL 20/37] contrib/plugins/hotpages: fix 32-bit build, Alex Bennée, 2025/01/17
- [PULL 31/37] docs/sphinx: include kernel-doc script as a dependency, Alex Bennée, 2025/01/17
- [PULL 25/37] plugins: enable linking with clang/lld, Alex Bennée, 2025/01/17