• Christian Borntraeger's avatar
    KVM: s390: Fix hang VCPU hang/loop regression · 586b7ccd
    Christian Borntraeger authored
    commit 785dbef4 ("KVM: s390: optimize round trip time in request
    handling") introduced a regression. This regression was seen with
    CPU hotplug in the guest and switching between 1 or 2 CPUs. This will
    set/reset the IBS control via synced request.
    
    Whenever we make a synced request, we first set the vcpu->requests
    bit and then block the vcpu. The handler, on the other hand, unblocks
    itself, processes vcpu->requests (by clearing them) and unblocks itself
    once again.
    
    Now, if the requester sleeps between setting of vcpu->requests and
    blocking, the handler will clear the vcpu->requests bit and try to
    unblock itself (although no bit is set). When the requester wakes up,
    it blocks the VCPU and we have a blocked VCPU without requests.
    
    Solution is to always unset the block bit.
    Signed-off-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
    Reviewed-by: default avatarDavid Hildenbrand <dahi@linux.vnet.ibm.com>
    Fixes: 785dbef4 ("KVM: s390: optimize round trip time in request handling")
    586b7ccd
kvm-s390.c 66.3 KB