• Julien Thierry's avatar
    kvm: Do not pause already paused vcpus · 29f4ec31
    Julien Thierry authored
    
    
    With the following sequence:
    	kvm__pause();
    	kvm__continue();
    	kvm__pause();
    
    There is a chance that not all paused threads have been resumed, and the
    second kvm__pause will attempt to pause them again. Since the paused thread
    is waiting to own the pause_lock, it won't write its second pause
    notification. kvm__pause will be waiting for that notification while owning
    pause_lock, so... deadlock.
    
    Simple solution is not to try to pause thread that had not the chance to
    resume.
    Signed-off-by: default avatarJulien Thierry <julien.thierry@arm.com>
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
    29f4ec31
kvm-cpu.c 6.72 KB