hv: support asyncio request

Current IO emulation is synchronous. The user VM need to wait for the
completion of the the I/O request before return. But Virtio Spec
introduces introduces asynchronous IO with a new register in MMIO/PIO
space named NOTIFY, to be used for FE driver to notify BE driver, ACRN
hypervisor can emulate this register by sending a notification to vCPU
in Service VM side. This way, FE side can resume to work without waiting
for the full completion of BE side response.

Tracked-On: #8209
Signed-off-by: Conghui <conghui.chen@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
Conghui
2022-08-17 09:58:23 +08:00
committed by acrnsi-robot
parent 9cf9606e56
commit 12bfa98a37
8 changed files with 31 additions and 5 deletions

View File

@@ -69,6 +69,7 @@ struct vm_sw_info {
struct sw_module_info acpi_info;
/* HVA to IO shared page */
void *io_shared_page;
void *asyncio_sbuf;
/* If enable IO completion polling mode */
bool is_polling_ioreq;
};

View File

@@ -25,7 +25,7 @@ struct per_cpu_region {
uint8_t vmxon_region[PAGE_SIZE];
void *vmcs_run;
#ifdef HV_DEBUG
struct shared_buf *sbuf[ACRN_SBUF_ID_MAX];
struct shared_buf *sbuf[ACRN_SBUF_PER_PCPU_ID_MAX];
char logbuf[LOG_MESSAGE_MAX_SIZE];
uint32_t npk_log_ref;
#endif