s390: fix cpu hotplug / cpu activity on interrupts
PATCH 1/1 s390: fix cpu hotplug / cpu activity on interrupts
The add_del/running_cpu code and env->halted are tracking stopped cpus. Sleeping cpus (idle and enabled for interrupts) are waiting inside the kernel.
No interrupt besides the restart can move a cpu from stopped to operational. This is already handled over there. So lets just remove the bogus wakup from the common interrupt delivery, otherwise any interrupt will wake up a cpu, even if this cpu is stopped (Thus leading to strange hangs on sigp restart)
This fixes
echo 0 > /sys/devices/system/cpu/cpu0/online
echo 1 > /sys/devices/system/cpu/cpu0/online
in the guest
target-s390x/kvm.c +0 -3
@@ -185,9 +185,6 @@ void kvm_s390_interrupt_internal(CPUState *env, int type, uint32_t parm,return ; } -s390_add_running_cpu (env); -qemu_cpu_kick (env); - kvmint.type = type; kvmint.parm = parm; kvmint.parm64 = parm64;
Alexander Graf
AppliedQuoted 9 lines · Christian Borntraeger
The add_del/running_cpu code and
env->haltedare tracking stopped cpus. Sleeping cpus (idle and enabled for interrupts) are waiting inside the kernel.
No interrupt besides the restart can move a cpu from stopped to operational. This is already handled over there. So lets just remove the bogus wakup from the common interrupt delivery, otherwise any interrupt will wake up a cpu, even if this cpu is stopped (Thus leading to strange hangs on sigp restart)
Quoted 6 lines
This fixes
echo 0 >/sys/devices/system/cpu/cpu0/online
echo 1 >/sys/devices/system/cpu/cpu0/online
in the guestSigned-off-by Christian Borntraeger<[email protected]>
Thanks, applied to s390-next
Alex