virt: acrn: remove WQ_UNBOUND flag

Due to the two level schedule model in type 1 hypervisor, Service OS
kernel's scheduler does not aware the running status of the User VM,
which means, a thread may be schedule to a CPU which is idle in Service
OS but actually running in User VM.
For the ioreq dispatch workqueue, as it was in the critical path of I/O
request, and ACRN hypervisor only inject the ioreq interrupt to CPU0, so
migrate to other CPU is meaningless and will bring more latency.
So, remove the WQ_UNBOUND flag, and let CPU0 do the dispatch directly.

Signed-off-by: Conghui <conghui.chen@intel.com>
Reviewed-by: Fei Li <fei1.li@intel.com>
This commit is contained in:
Conghui 2022-08-16 15:53:46 +08:00 committed by wenlingz
parent a23e4bf4ca
commit c6d21f4fb6
1 changed files with 1 additions and 1 deletions

View File

@ -596,7 +596,7 @@ int acrn_ioreq_intr_setup(void)
{
acrn_setup_intr_handler(ioreq_intr_handler);
ioreq_wq = alloc_workqueue("ioreq_wq",
WQ_HIGHPRI | WQ_MEM_RECLAIM | WQ_UNBOUND, 1);
WQ_HIGHPRI | WQ_MEM_RECLAIM, 1);
if (!ioreq_wq) {
dev_err(acrn_dev.this_device, "Failed to alloc workqueue!\n");
acrn_remove_intr_handler();