qemu/target/ppc
Nicholas Piggin 752dfc41e0 target/ppc: Fix non-maskable interrupt while halted
The ppc (pnv and spapr) NMI injection code does not go through the
asynchronous interrupt path and set a bit in env->pending_interrupts
and raise an interrupt request that the cpu_exec() loop can see.
Instead it injects the exception directly into registers.

This can lead to cpu_exec() missing that the thread has work to do,
if a NMI is injected while it was idle.

Fix this by clearing halted when injecting the interrupt. Probably
NMI injection should be reworked to use the interrupt request interface,
but this seems to work as a minimal fix.

Fixes: 3431648272 ("spapr: Add support for new NMI interface")
Reviewed-by: Glenn Miles <milesg@linux.ibm.com>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
(cherry picked from commit fa416ae615)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
2024-12-03 09:22:01 +03:00
..
translate target/ppc: Fix lxvx/stxvx facility check 2024-09-28 07:25:13 +03:00
arch_dump.c dump: Replace opaque DumpState pointer with a typed one 2022-10-06 19:30:43 +04:00
compat.c powerpc tcg: Fix Lesser GPL version number 2020-11-15 16:38:50 +01:00
cpu-models.c target/ppc: Fix MPC8555 and MPC8560 core type to e500v1 2022-07-06 10:30:01 -03:00
cpu-models.h target/ppc: Fix MPC8555 and MPC8560 core type to e500v1 2022-07-06 10:30:01 -03:00
cpu-param.h Normalize header guard symbol definition 2022-05-11 16:50:26 +02:00
cpu-qom.h target/ppc: Fix host PVR matching for KVM 2022-08-30 16:20:29 -03:00
cpu.c target/ppc: Flush inputs to zero with NJ in ppc_store_vscr 2023-09-11 10:53:50 +03:00
cpu.h target/ppc: Add new PMC HFLAGS 2022-10-28 13:15:23 -03:00
cpu_init.c target/ppc: Fix PMU hflags calculation 2023-06-11 11:15:29 +03:00
dfp_helper.c target/ppc: Set result to QNaN for DENBCD when VXCVI occurs 2022-09-20 10:54:06 -03:00
excp_helper.c target/ppc: Fix non-maskable interrupt while halted 2024-12-03 09:22:01 +03:00
fpu_helper.c target/ppc: Moved XSTSTDC[QDS]P to decodetree 2022-10-28 13:15:22 -03:00
gdbstub.c target/ppc: Remove msr_le macro 2022-05-05 15:36:17 -03:00
helper.h target/ppc: Increment PMC5 with inline insns 2022-10-28 13:15:23 -03:00
helper_regs.c target/ppc: Fix PMU hflags calculation 2023-06-11 11:15:29 +03:00
helper_regs.h target/ppc: Fix PMU hflags calculation 2023-06-11 11:15:29 +03:00
insn32.decode target/ppc: Moved XSTSTDC[QDS]P to decodetree 2022-10-28 13:15:22 -03:00
insn64.decode target/ppc: Implemented [pm]xvbf16ger2* 2022-05-26 17:11:33 -03:00
int_helper.c target/ppc: Move VABSDU[BHW] to decodetree and use gvec 2022-10-28 13:15:22 -03:00
internal.h target/ppc: move the p*_interrupt_powersave methods to excp_helper.c 2022-10-28 13:15:22 -03:00
Kconfig meson: Introduce target-specific Kconfig 2021-07-09 18:21:34 +02:00
kvm-stub.c Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
kvm.c kvm: Introduce kvm_arch_get_default_type hook 2023-09-11 10:53:50 +03:00
kvm_ppc.h target/ppc: Support for H_RPT_INVALIDATE hcall 2021-07-09 11:01:06 +10:00
machine.c target/ppc: Fix PMU hflags calculation 2023-06-11 11:15:29 +03:00
mem_helper.c target/ppc: Remove msr_hv macro 2022-05-05 15:36:17 -03:00
meson.build target/ppc: make power8-pmu.c CONFIG_TCG only 2022-03-02 06:51:36 +01:00
misc_helper.c target/ppc: always use ppc_set_irq to set env->pending_interrupts 2022-10-28 13:15:22 -03:00
mmu-book3s-v3.c ppc: Check partition and process table alignment 2022-07-18 13:59:43 -03:00
mmu-book3s-v3.h target/ppc: Implement ISA 3.00 tlbie[l] 2022-07-18 13:59:43 -03:00
mmu-books.h target/ppc: introduce mmu-books.h 2021-07-09 10:38:19 +10:00
mmu-hash32.c target/ppc: Remove PowerPC 601 CPUs 2022-02-09 09:08:55 +01:00
mmu-hash32.h target/ppc: Remove PowerPC 601 CPUs 2022-02-09 09:08:55 +01:00
mmu-hash64.c target/ppc: Fix VRMA page size for ISA v3.0 2023-08-05 20:49:23 +03:00
mmu-hash64.h target/ppc: Fix VRMA page size for ISA v3.0 2023-08-05 20:49:23 +03:00
mmu-radix64.c target/ppc: Fix regression in Radix MMU 2022-10-29 06:34:52 -03:00
mmu-radix64.h target/ppc: Check effective address validity 2022-01-04 07:55:34 +01:00
mmu_common.c target/ppc: Remove msr_dr macro 2022-05-05 15:36:17 -03:00
mmu_helper.c target/ppc: Implement ISA 3.00 tlbie[l] 2022-07-18 13:59:43 -03:00
monitor.c target/ppc: check tb_env != 0 before printing TBU/TBL/DECR 2022-07-18 13:59:43 -03:00
power8-pmu-regs.c.inc target/ppc: fix PMU Group A register read/write exceptions 2022-07-18 13:59:43 -03:00
power8-pmu.c target/ppc: Fix PMU hflags calculation 2023-06-11 11:15:29 +03:00
power8-pmu.h target/ppc: Fix PMU hflags calculation 2023-06-11 11:15:29 +03:00
spr_common.h target/ppc: Move common SPR functions out of cpu_init 2022-02-18 08:34:15 +01:00
tcg-stub.c target/ppc: created tcg-stub.c file 2021-06-03 13:22:06 +10:00
timebase_helper.c target/ppc: fix exception error code in helper_{load, store}_dcr 2022-07-18 13:59:43 -03:00
trace-events target/ppc: Improve KVM hypercall trace 2022-04-20 18:00:30 -03:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
translate.c target/ppc: Set ctx->opcode for decode_insn32() 2024-11-10 11:10:00 +03:00
user_only_helper.c target/ppc: Implement ppc_cpu_record_sigsegv 2021-11-02 07:00:52 -04:00