io_emul: reshuffle io emulation path

This is the following patch after removing pending_pre_work, it make sure
all io emulation is done on its own cpu.

For hv emulated request, it follows the steps:
	hv_emulate_pio->emulate_pio_complete
	hv_emulate_mmio->emulate_mmio_complete

For dm emulated request, it follows the steps:
	acrn_insert_request->dm_emulate_io_complete
while in acrn_insert_request, it could trigger scheduling out then resume by
hcall_notify_ioreq_finish, or busy wait for ioreq completion if polling mode
is enabled.

Tracked-On: #2394
Signed-off-by: Jason Chen CJ <jason.cj.chen@intel.com>
Acked-by: Xu, Anthony <anthony.xu@intel.com>
This commit is contained in:
Jason Chen CJ
2019-01-22 11:35:15 +08:00
committed by wenlingz
parent fb41ea5cfb
commit 15030f6f2c
6 changed files with 34 additions and 112 deletions

View File

@@ -324,19 +324,7 @@ I/O Emulation
The following APIs are provided for I/O emulation at runtime:
.. doxygenfunction:: emulate_io
:project: Project ACRN
.. doxygenfunction:: acrn_insert_request_wait
:project: Project ACRN
.. doxygenfunction:: emulate_io_post
:project: Project ACRN
.. doxygenfunction:: emulate_mmio_post
:project: Project ACRN
.. doxygenfunction:: dm_emulate_mmio_post
.. doxygenfunction:: acrn_insert_request
:project: Project ACRN
.. doxygenfunction:: pio_instr_vmexit_handler