From 0a1c016dbbab3d380c2ddc88c5768ccd3ad70187 Mon Sep 17 00:00:00 2001 From: Mingqiang Chi Date: Wed, 3 Apr 2019 13:57:00 +0800 Subject: [PATCH] hv: move 'emul_pio[]' from strcut vm_arch to acrn_vm MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Move ‘emul_pio[]/default_io_read/default_io_write’ from struct vm_arch to struct acrn_vm Tracked-On: #1842 Signed-off-by: Mingqiang Chi Reviewed-by: Jason Chen CJ Acked-by: Eddie Dong --- hypervisor/arch/x86/guest/io_emul.c | 18 +++++++++--------- hypervisor/include/arch/x86/guest/vm.h | 7 ++++--- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/hypervisor/arch/x86/guest/io_emul.c b/hypervisor/arch/x86/guest/io_emul.c index a68eb73c2..326772d96 100644 --- a/hypervisor/arch/x86/guest/io_emul.c +++ b/hypervisor/arch/x86/guest/io_emul.c @@ -262,14 +262,14 @@ hv_emulate_pio(struct acrn_vcpu *vcpu, struct io_request *io_req) struct acrn_vm *vm = vcpu->vm; struct pio_request *pio_req = &io_req->reqs.pio; struct vm_io_handler_desc *handler; - io_read_fn_t io_read = vm->arch_vm.default_io_read; - io_write_fn_t io_write = vm->arch_vm.default_io_write; + io_read_fn_t io_read = vm->default_io_read; + io_write_fn_t io_write = vm->default_io_write; port = (uint16_t)pio_req->address; size = (uint16_t)pio_req->size; for (idx = 0U; idx < EMUL_PIO_IDX_MAX; idx++) { - handler = &(vm->arch_vm.emul_pio[idx]); + handler = &(vm->emul_pio[idx]); if ((port < handler->port_start) || (port >= handler->port_end)) { continue; @@ -598,10 +598,10 @@ void register_pio_emulation_handler(struct acrn_vm *vm, uint32_t pio_idx, if (is_sos_vm(vm)) { deny_guest_pio_access(vm, range->base, range->len); } - vm->arch_vm.emul_pio[pio_idx].port_start = range->base; - vm->arch_vm.emul_pio[pio_idx].port_end = range->base + range->len; - vm->arch_vm.emul_pio[pio_idx].io_read = io_read_fn_ptr; - vm->arch_vm.emul_pio[pio_idx].io_write = io_write_fn_ptr; + vm->emul_pio[pio_idx].port_start = range->base; + vm->emul_pio[pio_idx].port_end = range->base + range->len; + vm->emul_pio[pio_idx].io_read = io_read_fn_ptr; + vm->emul_pio[pio_idx].io_write = io_write_fn_ptr; } /** @@ -669,8 +669,8 @@ int32_t register_mmio_emulation_handler(struct acrn_vm *vm, */ void register_pio_default_emulation_handler(struct acrn_vm *vm) { - vm->arch_vm.default_io_read = pio_default_read; - vm->arch_vm.default_io_write = pio_default_write; + vm->default_io_read = pio_default_read; + vm->default_io_write = pio_default_write; } /** diff --git a/hypervisor/include/arch/x86/guest/vm.h b/hypervisor/include/arch/x86/guest/vm.h index c3d2e8300..68050552c 100644 --- a/hypervisor/include/arch/x86/guest/vm.h +++ b/hypervisor/include/arch/x86/guest/vm.h @@ -111,9 +111,6 @@ struct vm_arch { void *tmp_pg_array; /* Page array for tmp guest paging struct */ struct acrn_vioapic vioapic; /* Virtual IOAPIC base address */ struct acrn_vpic vpic; /* Virtual PIC */ - struct vm_io_handler_desc emul_pio[EMUL_PIO_IDX_MAX]; - io_read_fn_t default_io_read; - io_write_fn_t default_io_write; /* reference to virtual platform to come here (as needed) */ } __aligned(PAGE_SIZE); @@ -136,6 +133,10 @@ struct acrn_vm { struct mem_io_node emul_mmio[CONFIG_MAX_EMULATED_MMIO_REGIONS]; hv_mem_io_handler_t default_read_write; + struct vm_io_handler_desc emul_pio[EMUL_PIO_IDX_MAX]; + io_read_fn_t default_io_read; + io_write_fn_t default_io_write; + uint8_t GUID[16]; struct secure_world_control sworld_control;