The Hypervisor Decrementer exception should not be generated while the CPU is in power-saving mode (see cpu_ppc_hdecr_excp()). However, discarding the exception before entering the power-saving mode is wrong since we would loose a previously generated HDEC.
Fixes: 4b236b621bf0 ("ppc: Initial HDEC support") Signed-off-by: Cédric Le Goater <c...@kaod.org> --- This fixes CPU hard lockups when doing intensive I/Os on the machine. target/ppc/excp_helper.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index a79a0ed465e5..7b6ac16eef72 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -1211,12 +1211,6 @@ void helper_pminsn(CPUPPCState *env, powerpc_pm_insn_t insn) cs = env_cpu(env); cs->halted = 1; - /* - * The architecture specifies that HDEC interrupts are discarded - * in PM states - */ - env->pending_interrupts &= ~(1 << PPC_INTERRUPT_HDECR); - /* Condition for waking up at 0x100 */ env->resume_as_sreset = (insn != PPC_PM_STOP) || (env->spr[SPR_PSSCR] & PSSCR_EC); -- 2.31.1