qemu/accel/tcg
Nicholas Piggin e6fdfb8433 accel/tcg: mttcg remove false-negative halted assertion
mttcg asserts that an execution ending with EXCP_HALTED must have
cpu->halted. However between the event or instruction that sets
cpu->halted and requests exit and the assertion here, an
asynchronous event could clear cpu->halted.

This leads to crashes running AIX on ppc/pseries because it uses
H_CEDE/H_PROD hcalls, where H_CEDE sets self->halted = 1 and
H_PROD sets other cpu->halted = 0 and kicks it.

H_PROD could be turned into an interrupt to wake, but several other
places in ppc, sparc, and semihosting follow what looks like a similar
pattern setting halted = 0 directly. So remove this assertion.

Reported-by: Ivan Warren <ivan@vmfacility.fr>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Message-Id: <20230829010658.8252-1-npiggin@gmail.com>
[rth: Keep the case label and adjust the comment.]
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
(cherry picked from commit 0e5903436d)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
2023-09-27 21:39:52 +03:00
..
atomic_common.c.inc
atomic_template.h
cpu-exec-common.c accel/tcg: Remove will_exit argument from cpu_restore_state 2022-11-01 08:31:41 +11:00
cpu-exec.c accel/tcg: Complete cpu initialization before registration 2022-11-01 08:31:41 +11:00
cputlb.c accel/tcg: Fix atomic_mmu_lookup for reads 2023-05-18 21:09:59 +03:00
hmp.c
internal.h accel/tcg: Remove reset_icount argument from cpu_restore_state_from_tb 2022-11-01 08:31:41 +11:00
ldst_common.c.inc
meson.build accel/tcg: Split out tb-maint.c 2022-10-26 11:11:28 +10:00
plugin-gen.c accel/tcg: Use DisasContextBase in plugin_gen_tb_start 2022-10-03 20:53:31 -07:00
plugin-helpers.h
tb-context.h
tb-hash.h include/hw/core: Create struct CPUJumpCache 2022-10-04 12:13:12 -07:00
tb-jmp-cache.h accel/tcg: Introduce TARGET_TB_PCREL 2022-10-04 12:13:16 -07:00
tb-maint.c accel/tcg: Remove reset_icount argument from cpu_restore_state_from_tb 2022-11-01 08:31:41 +11:00
tcg-accel-ops-icount.c icount: Take iothread lock when running QEMU timers 2022-08-09 10:55:14 +01:00
tcg-accel-ops-icount.h Clean up header guards that don't match their file name 2022-05-11 16:49:06 +02:00
tcg-accel-ops-mttcg.c accel/tcg: mttcg remove false-negative halted assertion 2023-09-27 21:39:52 +03:00
tcg-accel-ops-mttcg.h Clean up header guards that don't match their file name 2022-05-11 16:49:06 +02:00
tcg-accel-ops-rr.c Revert incorrect cflags initialization. 2022-10-26 10:53:41 -04:00
tcg-accel-ops-rr.h Clean up header guards that don't match their file name 2022-05-11 16:49:06 +02:00
tcg-accel-ops.c gdbstub: move guest debug support check to ops 2022-10-06 11:53:41 +01:00
tcg-accel-ops.h Clean up header guards that don't match their file name 2022-05-11 16:49:06 +02:00
tcg-all.c gdbstub: move sstep flags probing into AccelClass 2022-10-06 11:53:41 +01:00
tcg-runtime-gvec.c
tcg-runtime.c
tcg-runtime.h
trace-events
trace.h
translate-all.c accel/tcg: Split out setjmp_gen_code 2022-11-09 12:29:03 +11:00
translator.c accel/tcg: Introduce tb_{set_}page_addr{0,1} 2022-10-26 11:11:28 +10:00
user-exec-stub.c
user-exec.c accel/tcg: Simplify page_get/alloc_target_data 2022-10-26 11:11:28 +10:00