mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-06-25 15:02:13 +00:00
cleanup spin lock in vtd.c
move dm_unit->lock into dmar_issue_qi_request Tracked-On: #4958 Signed-off-by: Mingqiang Chi <mingqiang.chi@intel.com>
This commit is contained in:
parent
67a7c355ec
commit
ac65898f35
@ -551,6 +551,8 @@ static void dmar_issue_qi_request(struct dmar_drhd_rt *dmar_unit, struct dmar_en
|
|||||||
uint32_t qi_status = 0U;
|
uint32_t qi_status = 0U;
|
||||||
uint64_t start;
|
uint64_t start;
|
||||||
|
|
||||||
|
spinlock_obtain(&(dmar_unit->lock));
|
||||||
|
|
||||||
invalidate_desc_ptr = (struct dmar_entry *)(dmar_unit->qi_queue + dmar_unit->qi_tail);
|
invalidate_desc_ptr = (struct dmar_entry *)(dmar_unit->qi_queue + dmar_unit->qi_tail);
|
||||||
|
|
||||||
invalidate_desc_ptr->hi_64 = invalidate_desc.hi_64;
|
invalidate_desc_ptr->hi_64 = invalidate_desc.hi_64;
|
||||||
@ -574,6 +576,8 @@ static void dmar_issue_qi_request(struct dmar_drhd_rt *dmar_unit, struct dmar_en
|
|||||||
}
|
}
|
||||||
asm_pause();
|
asm_pause();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
spinlock_release(&(dmar_unit->lock));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -606,11 +610,7 @@ static void dmar_invalid_context_cache(struct dmar_drhd_rt *dmar_unit,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (invalidate_desc.lo_64 != 0UL) {
|
if (invalidate_desc.lo_64 != 0UL) {
|
||||||
spinlock_obtain(&(dmar_unit->lock));
|
|
||||||
|
|
||||||
dmar_issue_qi_request(dmar_unit, invalidate_desc);
|
dmar_issue_qi_request(dmar_unit, invalidate_desc);
|
||||||
|
|
||||||
spinlock_release(&(dmar_unit->lock));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -653,11 +653,7 @@ static void dmar_invalid_iotlb(struct dmar_drhd_rt *dmar_unit, uint16_t did, uin
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (invalidate_desc.lo_64 != 0UL) {
|
if (invalidate_desc.lo_64 != 0UL) {
|
||||||
spinlock_obtain(&(dmar_unit->lock));
|
|
||||||
|
|
||||||
dmar_issue_qi_request(dmar_unit, invalidate_desc);
|
dmar_issue_qi_request(dmar_unit, invalidate_desc);
|
||||||
|
|
||||||
spinlock_release(&(dmar_unit->lock));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -708,11 +704,7 @@ static void dmar_invalid_iec(struct dmar_drhd_rt *dmar_unit, uint16_t intr_index
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (invalidate_desc.lo_64 != 0UL) {
|
if (invalidate_desc.lo_64 != 0UL) {
|
||||||
spinlock_obtain(&(dmar_unit->lock));
|
|
||||||
|
|
||||||
dmar_issue_qi_request(dmar_unit, invalidate_desc);
|
dmar_issue_qi_request(dmar_unit, invalidate_desc);
|
||||||
|
|
||||||
spinlock_release(&(dmar_unit->lock));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user