s390x/tcg: handle WAIT PSWs during interrupt injection
If we encounter a WAIT PSW, we have to halt immediately. Using cpu_loop_exit() at this point feels wrong. Simply leaving cs->exception_index set doesn't result in an immediate stop. This is also necessary to properly handle SIGP STOP interrupts later. The CPU_INTERRUPT_HALT will be processed immediately and properly set the CPU to halted (also resetting cs->exception_index to EXCP_HLT) Signed-off-by: David Hildenbrand <david@redhat.com> Message-Id: <20170928203708.9376-10-david@redhat.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
This commit is contained in:
parent
83f7f32901
commit
f1cbfe6a73
@ -468,6 +468,12 @@ void s390_cpu_do_interrupt(CPUState *cs)
|
||||
do_mchk_interrupt(env);
|
||||
break;
|
||||
}
|
||||
|
||||
/* WAIT PSW during interrupt injection */
|
||||
if (cs->exception_index == EXCP_HLT) {
|
||||
/* don't trigger a cpu_loop_exit(), use an interrupt instead */
|
||||
cpu_interrupt(CPU(cpu), CPU_INTERRUPT_HALT);
|
||||
}
|
||||
cs->exception_index = -1;
|
||||
|
||||
/* we might still have pending interrupts, but not deliverable */
|
||||
|
Loading…
Reference in New Issue
Block a user