[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v1 1/6] x86/vvmx: introduce vvmcx_valid()
As a convenient helper function and refactor the code to use it. No functional change. Signed-off-by: Sergey Dyasli <sergey.dyasli@xxxxxxxxxx> --- xen/arch/x86/hvm/vmx/vvmx.c | 17 ++++++++--------- xen/include/asm-x86/hvm/nestedhvm.h | 5 +++++ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c index 0e45db83e5..8eee6d0ea8 100644 --- a/xen/arch/x86/hvm/vmx/vvmx.c +++ b/xen/arch/x86/hvm/vmx/vvmx.c @@ -521,8 +521,7 @@ static void vmfail(struct cpu_user_regs *regs, enum vmx_insn_errno errno) if ( errno == VMX_INSN_SUCCEED ) return; - if ( vcpu_nestedhvm(current).nv_vvmcxaddr != INVALID_PADDR && - errno != VMX_INSN_FAIL_INVALID ) + if ( vvmcx_valid(current) && errno != VMX_INSN_FAIL_INVALID ) vmfail_valid(regs, errno); else vmfail_invalid(regs); @@ -805,7 +804,7 @@ static void nvmx_purge_vvmcs(struct vcpu *v) int i; __clear_current_vvmcs(v); - if ( nvcpu->nv_vvmcxaddr != INVALID_PADDR ) + if ( vvmcx_valid(v) ) hvm_unmap_guest_frame(nvcpu->nv_vvmcx, 1); nvcpu->nv_vvmcx = NULL; nvcpu->nv_vvmcxaddr = INVALID_PADDR; @@ -1601,7 +1600,7 @@ static int nvmx_vmresume(struct vcpu *v, struct cpu_user_regs *regs) struct nestedvcpu *nvcpu = &vcpu_nestedhvm(v); /* check VMCS is valid and IO BITMAP is set */ - if ( (nvcpu->nv_vvmcxaddr != INVALID_PADDR) && + if ( vvmcx_valid(v) && ((nvmx->iobitmap[0] && nvmx->iobitmap[1]) || !(__n2_exec_control(v) & CPU_BASED_ACTIVATE_IO_BITMAP) ) ) nvcpu->nv_vmentry_pending = 1; @@ -1622,7 +1621,7 @@ int nvmx_handle_vmresume(struct cpu_user_regs *regs) if ( rc != X86EMUL_OKAY ) return rc; - if ( vcpu_nestedhvm(v).nv_vvmcxaddr == INVALID_PADDR ) + if ( !vvmcx_valid(v) ) { vmfail_invalid(regs); return X86EMUL_OKAY; @@ -1656,7 +1655,7 @@ int nvmx_handle_vmlaunch(struct cpu_user_regs *regs) if ( rc != X86EMUL_OKAY ) return rc; - if ( vcpu_nestedhvm(v).nv_vvmcxaddr == INVALID_PADDR ) + if ( !vvmcx_valid(v) ) { vmfail_invalid(regs); return X86EMUL_OKAY; @@ -1709,7 +1708,7 @@ int nvmx_handle_vmptrld(struct cpu_user_regs *regs) if ( nvcpu->nv_vvmcxaddr != gpa ) nvmx_purge_vvmcs(v); - if ( nvcpu->nv_vvmcxaddr == INVALID_PADDR ) + if ( !vvmcx_valid(v) ) { bool_t writable; void *vvmcx = hvm_map_guest_frame_rw(paddr_to_pfn(gpa), 1, &writable); @@ -1848,7 +1847,7 @@ int nvmx_handle_vmread(struct cpu_user_regs *regs) if ( rc != X86EMUL_OKAY ) return rc; - if ( vcpu_nestedhvm(v).nv_vvmcxaddr == INVALID_PADDR ) + if ( !vvmcx_valid(v) ) { vmfail_invalid(regs); return X86EMUL_OKAY; @@ -1891,7 +1890,7 @@ int nvmx_handle_vmwrite(struct cpu_user_regs *regs) != X86EMUL_OKAY ) return X86EMUL_EXCEPTION; - if ( vcpu_nestedhvm(v).nv_vvmcxaddr == INVALID_PADDR ) + if ( !vvmcx_valid(v) ) { vmfail_invalid(regs); return X86EMUL_OKAY; diff --git a/xen/include/asm-x86/hvm/nestedhvm.h b/xen/include/asm-x86/hvm/nestedhvm.h index 9d1c2742b5..e09fa9d47d 100644 --- a/xen/include/asm-x86/hvm/nestedhvm.h +++ b/xen/include/asm-x86/hvm/nestedhvm.h @@ -92,4 +92,9 @@ static inline void nestedhvm_set_cr(struct vcpu *v, unsigned int cr, v->arch.hvm.nvcpu.guest_cr[cr] = value; } +static inline bool vvmcx_valid(const struct vcpu *v) +{ + return vcpu_nestedhvm(v).nv_vvmcxaddr != INVALID_PADDR; +} + #endif /* _HVM_NESTEDHVM_H */ -- 2.17.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |