From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v3 15/18] x86/hvm: remove hvm_io_state enumeration Date: Tue, 23 Jun 2015 11:39:54 +0100 Message-ID: <1435055997-30017-16-git-send-email-paul.durrant@citrix.com> References: <1435055997-30017-1-git-send-email-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1Z7Lhq-0002eD-51 for xen-devel@lists.xenproject.org; Tue, 23 Jun 2015 10:45:30 +0000 In-Reply-To: <1435055997-30017-1-git-send-email-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xenproject.org Cc: Andrew Cooper , Paul Durrant , Keir Fraser , Jan Beulich List-Id: xen-devel@lists.xenproject.org Emulation request status is already covered by STATE_IOREQ_XXX values so just use those. The mapping is: HVMIO_none -> STATE_IOREQ_NONE HVMIO_awaiting_completion -> STATE_IOREQ_READY HVMIO_completed -> STATE_IORESP_READY Signed-off-by: Paul Durrant Cc: Keir Fraser Cc: Jan Beulich Cc: Andrew Cooper --- xen/arch/x86/hvm/emulate.c | 14 +++++++------- xen/arch/x86/hvm/hvm.c | 6 +++--- xen/arch/x86/hvm/svm/nestedsvm.c | 2 +- xen/arch/x86/hvm/vmx/realmode.c | 4 ++-- xen/include/asm-x86/hvm/vcpu.h | 10 ++-------- 5 files changed, 15 insertions(+), 21 deletions(-) diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c index 7edd90c..23582af 100644 --- a/xen/arch/x86/hvm/emulate.c +++ b/xen/arch/x86/hvm/emulate.c @@ -131,10 +131,10 @@ static int hvmemul_do_io( switch ( vio->io_state ) { - case HVMIO_none: + case STATE_IOREQ_NONE: break; - case HVMIO_completed: - vio->io_state = HVMIO_none; + case STATE_IORESP_READY: + vio->io_state = STATE_IOREQ_NONE; if ( data_is_addr || dir == IOREQ_WRITE ) return X86EMUL_UNHANDLEABLE; goto finish_access; @@ -142,7 +142,7 @@ static int hvmemul_do_io( return X86EMUL_UNHANDLEABLE; } - vio->io_state = HVMIO_awaiting_completion; + vio->io_state = STATE_IOREQ_READY; vio->io_size = size; vio->io_dir = dir; vio->io_data_is_addr = data_is_addr; @@ -161,7 +161,7 @@ static int hvmemul_do_io( { case X86EMUL_OKAY: vio->io_data = p.data; - vio->io_state = HVMIO_none; + vio->io_state = STATE_IOREQ_NONE; break; case X86EMUL_UNHANDLEABLE: { @@ -174,13 +174,13 @@ static int hvmemul_do_io( rc = hvm_process_io_intercept(&null_handler, &p); if ( rc == X86EMUL_OKAY ) vio->io_data = p.data; - vio->io_state = HVMIO_none; + vio->io_state = STATE_IOREQ_NONE; } else { rc = hvm_send_assist_req(s, &p); if ( rc != X86EMUL_RETRY ) - vio->io_state = HVMIO_none; + vio->io_state = STATE_IOREQ_NONE; else if ( data_is_addr || dir == IOREQ_WRITE ) rc = X86EMUL_OKAY; } diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index 4458fa4..7411287 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -421,11 +421,11 @@ static void hvm_io_assist(ioreq_t *p) if ( HVMIO_NEED_COMPLETION(vio) ) { - vio->io_state = HVMIO_completed; + vio->io_state = STATE_IORESP_READY; vio->io_data = p->data; } else - vio->io_state = HVMIO_none; + vio->io_state = STATE_IOREQ_NONE; msix_write_completion(curr); vcpu_end_shutdown_deferral(curr); @@ -505,7 +505,7 @@ void hvm_do_resume(struct vcpu *v) guest_cpu_user_regs()->rax = (uint32_t)vio->io_data; else memcpy(&guest_cpu_user_regs()->rax, &vio->io_data, vio->io_size); - vio->io_state = HVMIO_none; + vio->io_state = STATE_IOREQ_NONE; break; case HVMIO_realmode_completion: { diff --git a/xen/arch/x86/hvm/svm/nestedsvm.c b/xen/arch/x86/hvm/svm/nestedsvm.c index be5797a..8b165c6 100644 --- a/xen/arch/x86/hvm/svm/nestedsvm.c +++ b/xen/arch/x86/hvm/svm/nestedsvm.c @@ -1231,7 +1231,7 @@ enum hvm_intblk nsvm_intr_blocked(struct vcpu *v) * Delay the injection because this would result in delivering * an interrupt *within* the execution of an instruction. */ - if ( v->arch.hvm_vcpu.hvm_io.io_state != HVMIO_none ) + if ( v->arch.hvm_vcpu.hvm_io.io_state != STATE_IOREQ_NONE ) return hvm_intblk_shadow; if ( !nv->nv_vmexit_pending && n2vmcb->exitintinfo.bytes != 0 ) { diff --git a/xen/arch/x86/hvm/vmx/realmode.c b/xen/arch/x86/hvm/vmx/realmode.c index 5e56a1f..4135ad4 100644 --- a/xen/arch/x86/hvm/vmx/realmode.c +++ b/xen/arch/x86/hvm/vmx/realmode.c @@ -205,7 +205,7 @@ void vmx_realmode(struct cpu_user_regs *regs) vmx_realmode_emulate_one(&hvmemul_ctxt); - if ( vio->io_state != HVMIO_none || vio->mmio_retry ) + if ( vio->io_state != STATE_IOREQ_NONE || vio->mmio_retry ) break; /* Stop emulating unless our segment state is not safe */ @@ -219,7 +219,7 @@ void vmx_realmode(struct cpu_user_regs *regs) } /* Need to emulate next time if we've started an IO operation */ - if ( vio->io_state != HVMIO_none ) + if ( vio->io_state != STATE_IOREQ_NONE ) curr->arch.hvm_vmx.vmx_emulate = 1; if ( !curr->arch.hvm_vmx.vmx_emulate && !curr->arch.hvm_vmx.vmx_realmode ) diff --git a/xen/include/asm-x86/hvm/vcpu.h b/xen/include/asm-x86/hvm/vcpu.h index 2830057..f797518 100644 --- a/xen/include/asm-x86/hvm/vcpu.h +++ b/xen/include/asm-x86/hvm/vcpu.h @@ -30,12 +30,6 @@ #include #include -enum hvm_io_state { - HVMIO_none = 0, - HVMIO_awaiting_completion, - HVMIO_completed -}; - enum hvm_io_completion { HVMIO_no_completion = 0, HVMIO_mmio_completion, @@ -50,7 +44,7 @@ struct hvm_vcpu_asid { struct hvm_vcpu_io { /* I/O request in flight to device model. */ - enum hvm_io_state io_state; + uint8_t io_state; unsigned long io_data; int io_size; enum hvm_io_completion io_completion; @@ -58,7 +52,7 @@ struct hvm_vcpu_io { uint8_t io_data_is_addr; #define HVMIO_NEED_COMPLETION(_vio) \ - ( ((_vio)->io_state == HVMIO_awaiting_completion) && \ + ( ((_vio)->io_state == STATE_IOREQ_READY) && \ !(_vio)->io_data_is_addr && \ ((_vio)->io_dir == IOREQ_READ) ) -- 1.7.10.4