hv: remove bitmap_clear_lock of split-lock after completing emulation
When "signal_event" is called, "wait_event" will actually not block. So it is ok to remove this line. Tracked-On: #5605 Signed-off-by: Jie Deng <jie.deng@intel.com>
This commit is contained in:
parent
ef411d4ac3
commit
5c5d272358
|
@ -49,19 +49,6 @@ void vcpu_complete_splitlock_emulation(struct acrn_vcpu *cur_vcpu)
|
|||
if (cur_vcpu->vm->hw.created_vcpus > 1U) {
|
||||
foreach_vcpu(i, cur_vcpu->vm, other) {
|
||||
if (other != cur_vcpu) {
|
||||
/*
|
||||
* Suppose the current vcpu is 0, the other vcpus (1, 2, 3) may wait on the
|
||||
* "get_vm_lock", the current vcpu need clear the ACRN_REQUEST_SPLIT_LOCK
|
||||
* explicitly here after finishing the emulation. Otherwise, it make cause
|
||||
* dead lock. for example:
|
||||
* 1. Once vcpu 0 "put_vm_lock", let's say vcpu 1 will "get_vm_lock".
|
||||
* 2. vcpu 1 call "vcpu_make_request" to pause vcpu 0, 2, 3.
|
||||
* 3. vcpu 1's VCPU_EVENT_SPLIT_LOCK is still not cleared because
|
||||
* the vcpu 0 called "vcpu_make_request" ever.
|
||||
* 4. All vcpus will wait for VCPU_EVENT_SPLIT_LOCK in acrn_handle_pending_request.
|
||||
* We should avoid this dead lock case.
|
||||
*/
|
||||
bitmap_clear_lock(ACRN_REQUEST_SPLIT_LOCK, &other->arch.pending_req);
|
||||
signal_event(&other->events[VCPU_EVENT_SPLIT_LOCK]);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue