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:
Jie Deng 2021-01-12 15:47:34 +08:00 committed by wenlingz
parent ef411d4ac3
commit 5c5d272358
1 changed files with 0 additions and 13 deletions

View File

@ -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]);
}
}