* [PATCH 0/4] x86/vvmx: XSA-278 followup fixes @ 2018-10-25 15:36 Andrew Cooper 2018-10-25 15:36 ` [PATCH 1/4] x86/vvmx: Unconditionally initialise vmxon_region_pa during vcpu construction Andrew Cooper ` (3 more replies) 0 siblings, 4 replies; 19+ messages in thread From: Andrew Cooper @ 2018-10-25 15:36 UTC (permalink / raw) To: Xen-devel Cc: Sergey Dyasli, Kevin Tian, Wei Liu, Jan Beulich, Andrew Cooper, Jun Nakajima Here are some of the easier fixes following on from the XSA-278 investigation. This series removes the duplicated checks left over from the security fix. I did have some further plans, but the embargo breaking early means I haven't had time to get them ready for posting. A longer term plan is to model nested virt as an X86_EMU_ flag, but that requires a fair amount of untangling of various toolstack actions during create and migrate. Andrew Cooper (4): x86/vvmx: Unconditionally initialise vmxon_region_pa during vcpu construction x86/vvmx: Drop the now-obsolete vmx_inst_check_privilege() x86/vvmx: INVVPID instructions should be handled at by L1 x86/vvmx: Don't handle unknown nested vmexit reasons at L0 xen/arch/x86/hvm/vmx/vmx.c | 2 + xen/arch/x86/hvm/vmx/vvmx.c | 90 ++++++++++++--------------------------------- 2 files changed, 25 insertions(+), 67 deletions(-) -- 2.1.4 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH 1/4] x86/vvmx: Unconditionally initialise vmxon_region_pa during vcpu construction 2018-10-25 15:36 [PATCH 0/4] x86/vvmx: XSA-278 followup fixes Andrew Cooper @ 2018-10-25 15:36 ` Andrew Cooper 2018-10-26 9:09 ` Sergey Dyasli ` (2 more replies) 2018-10-25 15:38 ` [PATCH 2/4] x86/vvmx: Drop the now-obsolete vmx_inst_check_privilege() Andrew Cooper ` (2 subsequent siblings) 3 siblings, 3 replies; 19+ messages in thread From: Andrew Cooper @ 2018-10-25 15:36 UTC (permalink / raw) To: Xen-devel Cc: Sergey Dyasli, Kevin Tian, Wei Liu, Jan Beulich, Andrew Cooper, Jun Nakajima This is a stopgap solution until the toolstack side of initialisation can be sorted out, but it does result in the nvmx_vcpu_in_vmx() predicate working correctly even when nested virt hasn't been enabled for the domain. Update nvmx_handle_vmx_insn() to include the in-vmx mode check (for all instructions other than VMXON) to complete the set of #UD checks. In addition, sanity check that the nested vmexit handler has worked correctly, and that we are only providing emulation of the VT-x instructions to L1 guests. Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> --- CC: Sergey Dyasli <sergey.dyasli@citrix.com> CC: Jan Beulich <JBeulich@suse.com> CC: Wei Liu <wei.liu2@citrix.com> CC: Jun Nakajima <jun.nakajima@intel.com> CC: Kevin Tian <kevin.tian@intel.com> --- xen/arch/x86/hvm/vmx/vmx.c | 2 ++ xen/arch/x86/hvm/vmx/vvmx.c | 11 ++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c index 7a49075..00a7014 100644 --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -429,6 +429,8 @@ static int vmx_vcpu_initialise(struct vcpu *v) INIT_LIST_HEAD(&v->arch.hvm.vmx.pi_blocking.list); + vcpu_2_nvmx(v).vmxon_region_pa = INVALID_PADDR; + if ( (rc = vmx_create_vmcs(v)) != 0 ) { dprintk(XENLOG_WARNING, diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c index aa202e0..09e105e 100644 --- a/xen/arch/x86/hvm/vmx/vvmx.c +++ b/xen/arch/x86/hvm/vmx/vvmx.c @@ -1987,7 +1987,8 @@ int nvmx_handle_vmx_insn(struct cpu_user_regs *regs, unsigned int exit_reason) if ( !(curr->arch.hvm.guest_cr[4] & X86_CR4_VMXE) || !nestedhvm_enabled(curr->domain) || - (vmx_guest_x86_mode(curr) < (hvm_long_mode_active(curr) ? 8 : 2)) ) + (vmx_guest_x86_mode(curr) < (hvm_long_mode_active(curr) ? 8 : 2)) || + (exit_reason != EXIT_REASON_VMXON && !nvmx_vcpu_in_vmx(curr)) ) { hvm_inject_hw_exception(TRAP_invalid_op, X86_EVENT_NO_EC); return X86EMUL_EXCEPTION; @@ -1999,6 +2000,14 @@ int nvmx_handle_vmx_insn(struct cpu_user_regs *regs, unsigned int exit_reason) return X86EMUL_EXCEPTION; } + if ( nestedhvm_vcpu_in_guestmode(curr) ) + { + /* Should have been handled by nvmx_n2_vmexit_handler()... */ + ASSERT_UNREACHABLE(); + domain_crash(curr->domain); + return X86EMUL_UNHANDLEABLE; + } + switch ( exit_reason ) { case EXIT_REASON_VMXOFF: -- 2.1.4 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH 1/4] x86/vvmx: Unconditionally initialise vmxon_region_pa during vcpu construction 2018-10-25 15:36 ` [PATCH 1/4] x86/vvmx: Unconditionally initialise vmxon_region_pa during vcpu construction Andrew Cooper @ 2018-10-26 9:09 ` Sergey Dyasli 2018-10-29 15:20 ` Jan Beulich 2018-10-30 7:11 ` Tian, Kevin 2 siblings, 0 replies; 19+ messages in thread From: Sergey Dyasli @ 2018-10-26 9:09 UTC (permalink / raw) To: Andrew Cooper, Xen-devel Cc: sergey.dyasli@citrix.com >> Sergey Dyasli, Kevin Tian, Wei Liu, Jun Nakajima, Jan Beulich On 25/10/2018 16:36, Andrew Cooper wrote: > This is a stopgap solution until the toolstack side of initialisation can be > sorted out, but it does result in the nvmx_vcpu_in_vmx() predicate working > correctly even when nested virt hasn't been enabled for the domain. > > Update nvmx_handle_vmx_insn() to include the in-vmx mode check (for all > instructions other than VMXON) to complete the set of #UD checks. > > In addition, sanity check that the nested vmexit handler has worked correctly, > and that we are only providing emulation of the VT-x instructions to L1 > guests. > > Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> Reviewed-by: Sergey Dyasli <sergey.dyasli@citrix.com> -- Thanks, Sergey _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 1/4] x86/vvmx: Unconditionally initialise vmxon_region_pa during vcpu construction 2018-10-25 15:36 ` [PATCH 1/4] x86/vvmx: Unconditionally initialise vmxon_region_pa during vcpu construction Andrew Cooper 2018-10-26 9:09 ` Sergey Dyasli @ 2018-10-29 15:20 ` Jan Beulich 2018-10-30 7:11 ` Tian, Kevin 2 siblings, 0 replies; 19+ messages in thread From: Jan Beulich @ 2018-10-29 15:20 UTC (permalink / raw) To: Andrew Cooper; +Cc: Sergey Dyasli, Kevin Tian, Wei Liu, Jun Nakajima, Xen-devel >>> On 25.10.18 at 17:36, <andrew.cooper3@citrix.com> wrote: > This is a stopgap solution until the toolstack side of initialisation can be > sorted out, but it does result in the nvmx_vcpu_in_vmx() predicate working > correctly even when nested virt hasn't been enabled for the domain. > > Update nvmx_handle_vmx_insn() to include the in-vmx mode check (for all > instructions other than VMXON) to complete the set of #UD checks. > > In addition, sanity check that the nested vmexit handler has worked correctly, > and that we are only providing emulation of the VT-x instructions to L1 > guests. > > Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> Reviewed-by: Jan Beulich <jbeulich@suse.com> _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 1/4] x86/vvmx: Unconditionally initialise vmxon_region_pa during vcpu construction 2018-10-25 15:36 ` [PATCH 1/4] x86/vvmx: Unconditionally initialise vmxon_region_pa during vcpu construction Andrew Cooper 2018-10-26 9:09 ` Sergey Dyasli 2018-10-29 15:20 ` Jan Beulich @ 2018-10-30 7:11 ` Tian, Kevin 2 siblings, 0 replies; 19+ messages in thread From: Tian, Kevin @ 2018-10-30 7:11 UTC (permalink / raw) To: Andrew Cooper, Xen-devel Cc: Sergey Dyasli, Wei Liu, Nakajima, Jun, Jan Beulich > From: Andrew Cooper [mailto:andrew.cooper3@citrix.com] > Sent: Thursday, October 25, 2018 11:37 PM > > This is a stopgap solution until the toolstack side of initialisation can be > sorted out, but it does result in the nvmx_vcpu_in_vmx() predicate working > correctly even when nested virt hasn't been enabled for the domain. > > Update nvmx_handle_vmx_insn() to include the in-vmx mode check (for all > instructions other than VMXON) to complete the set of #UD checks. > > In addition, sanity check that the nested vmexit handler has worked > correctly, > and that we are only providing emulation of the VT-x instructions to L1 > guests. > > Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> Acked-by: Kevin Tian <kevin.tian@intel.com> _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH 2/4] x86/vvmx: Drop the now-obsolete vmx_inst_check_privilege() 2018-10-25 15:36 [PATCH 0/4] x86/vvmx: XSA-278 followup fixes Andrew Cooper 2018-10-25 15:36 ` [PATCH 1/4] x86/vvmx: Unconditionally initialise vmxon_region_pa during vcpu construction Andrew Cooper @ 2018-10-25 15:38 ` Andrew Cooper 2018-10-26 9:09 ` Sergey Dyasli ` (2 more replies) 2018-10-25 15:38 ` [PATCH 3/4] x86/vvmx: INVVPID instructions should be handled at by L1 Andrew Cooper 2018-10-25 15:39 ` [PATCH 4/4] x86/vvmx: Don't handle unknown nested vmexit reasons at L0 Andrew Cooper 3 siblings, 3 replies; 19+ messages in thread From: Andrew Cooper @ 2018-10-25 15:38 UTC (permalink / raw) To: Xen-devel Cc: Sergey Dyasli, Kevin Tian, Wei Liu, Jan Beulich, Andrew Cooper, Jun Nakajima Now that nvmx_handle_vmx_insn() performs all VT-x instruction checks, there is no need for redundant checking in vmx_inst_check_privilege(). Remove it, and take out the vmxon_check boolean which was plumbed through decode_vmx_inst(). Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> --- CC: Sergey Dyasli <sergey.dyasli@citrix.com> CC: Jan Beulich <JBeulich@suse.com> CC: Wei Liu <wei.liu2@citrix.com> CC: Jun Nakajima <jun.nakajima@intel.com> CC: Kevin Tian <kevin.tian@intel.com> --- xen/arch/x86/hvm/vmx/vvmx.c | 75 ++++++--------------------------------------- 1 file changed, 10 insertions(+), 65 deletions(-) diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c index 09e105e..9390705 100644 --- a/xen/arch/x86/hvm/vmx/vvmx.c +++ b/xen/arch/x86/hvm/vmx/vvmx.c @@ -377,48 +377,9 @@ static inline u32 __n2_secondary_exec_control(struct vcpu *v) return second_ctrl; } -static int vmx_inst_check_privilege(struct cpu_user_regs *regs, int vmxop_check) -{ - struct vcpu *v = current; - - if ( vmxop_check ) - { - if ( !(v->arch.hvm.guest_cr[0] & X86_CR0_PE) || - !(v->arch.hvm.guest_cr[4] & X86_CR4_VMXE) ) - goto invalid_op; - } - else if ( !nvmx_vcpu_in_vmx(v) ) - goto invalid_op; - - if ( vmx_guest_x86_mode(v) < (hvm_long_mode_active(v) ? 8 : 2) ) - goto invalid_op; - else if ( nestedhvm_vcpu_in_guestmode(v) ) - goto vmexit; - - if ( vmx_get_cpl() > 0 ) - goto gp_fault; - - return X86EMUL_OKAY; - -vmexit: - gdprintk(XENLOG_ERR, "vmx_inst_check_privilege: vmexit\n"); - vcpu_nestedhvm(v).nv_vmexit_pending = 1; - return X86EMUL_EXCEPTION; - -invalid_op: - gdprintk(XENLOG_ERR, "vmx_inst_check_privilege: invalid_op\n"); - hvm_inject_hw_exception(TRAP_invalid_op, X86_EVENT_NO_EC); - return X86EMUL_EXCEPTION; - -gp_fault: - gdprintk(XENLOG_ERR, "vmx_inst_check_privilege: gp_fault\n"); - hvm_inject_hw_exception(TRAP_gp_fault, 0); - return X86EMUL_EXCEPTION; -} - static int decode_vmx_inst(struct cpu_user_regs *regs, struct vmx_inst_decoded *decode, - unsigned long *poperandS, int vmxon_check) + unsigned long *poperandS) { struct vcpu *v = current; union vmx_inst_info info; @@ -426,9 +387,6 @@ static int decode_vmx_inst(struct cpu_user_regs *regs, unsigned long base, index, seg_base, disp, offset; int scale, size; - if ( vmx_inst_check_privilege(regs, vmxon_check) != X86EMUL_OKAY ) - return X86EMUL_EXCEPTION; - __vmread(VMX_INSTRUCTION_INFO, &offset); info.word = offset; @@ -1480,7 +1438,7 @@ static int nvmx_handle_vmxon(struct cpu_user_regs *regs) uint32_t nvmcs_revid; int rc; - rc = decode_vmx_inst(regs, &decode, &gpa, 1); + rc = decode_vmx_inst(regs, &decode, &gpa); if ( rc != X86EMUL_OKAY ) return rc; @@ -1526,11 +1484,6 @@ static int nvmx_handle_vmxoff(struct cpu_user_regs *regs) { struct vcpu *v=current; struct nestedvmx *nvmx = &vcpu_2_nvmx(v); - int rc; - - rc = vmx_inst_check_privilege(regs, 0); - if ( rc != X86EMUL_OKAY ) - return rc; nvmx_purge_vvmcs(v); nvmx->vmxon_region_pa = INVALID_PADDR; @@ -1617,10 +1570,6 @@ static int nvmx_handle_vmresume(struct cpu_user_regs *regs) struct vcpu *v = current; struct nestedvmx *nvmx = &vcpu_2_nvmx(v); unsigned long intr_shadow; - int rc = vmx_inst_check_privilege(regs, 0); - - if ( rc != X86EMUL_OKAY ) - return rc; if ( vcpu_nestedhvm(v).nv_vvmcxaddr == INVALID_PADDR ) { @@ -1651,10 +1600,7 @@ static int nvmx_handle_vmlaunch(struct cpu_user_regs *regs) struct vcpu *v = current; struct nestedvmx *nvmx = &vcpu_2_nvmx(v); unsigned long intr_shadow; - int rc = vmx_inst_check_privilege(regs, 0); - - if ( rc != X86EMUL_OKAY ) - return rc; + int rc; if ( vcpu_nestedhvm(v).nv_vvmcxaddr == INVALID_PADDR ) { @@ -1696,7 +1642,7 @@ static int nvmx_handle_vmptrld(struct cpu_user_regs *regs) unsigned long gpa = 0; int rc; - rc = decode_vmx_inst(regs, &decode, &gpa, 0); + rc = decode_vmx_inst(regs, &decode, &gpa); if ( rc != X86EMUL_OKAY ) return rc; @@ -1768,7 +1714,7 @@ static int nvmx_handle_vmptrst(struct cpu_user_regs *regs) unsigned long gpa = 0; int rc; - rc = decode_vmx_inst(regs, &decode, &gpa, 0); + rc = decode_vmx_inst(regs, &decode, &gpa); if ( rc != X86EMUL_OKAY ) return rc; @@ -1794,7 +1740,7 @@ static int nvmx_handle_vmclear(struct cpu_user_regs *regs) void *vvmcs; int rc; - rc = decode_vmx_inst(regs, &decode, &gpa, 0); + rc = decode_vmx_inst(regs, &decode, &gpa); if ( rc != X86EMUL_OKAY ) return rc; @@ -1844,7 +1790,7 @@ static int nvmx_handle_vmread(struct cpu_user_regs *regs) u64 value = 0; int rc; - rc = decode_vmx_inst(regs, &decode, NULL, 0); + rc = decode_vmx_inst(regs, &decode, NULL); if ( rc != X86EMUL_OKAY ) return rc; @@ -1887,8 +1833,7 @@ static int nvmx_handle_vmwrite(struct cpu_user_regs *regs) bool_t okay = 1; enum vmx_insn_errno err; - if ( decode_vmx_inst(regs, &decode, &operand, 0) - != X86EMUL_OKAY ) + if ( decode_vmx_inst(regs, &decode, &operand) != X86EMUL_OKAY ) return X86EMUL_EXCEPTION; if ( vcpu_nestedhvm(v).nv_vvmcxaddr == INVALID_PADDR ) @@ -1932,7 +1877,7 @@ static int nvmx_handle_invept(struct cpu_user_regs *regs) unsigned long eptp; int ret; - if ( (ret = decode_vmx_inst(regs, &decode, &eptp, 0)) != X86EMUL_OKAY ) + if ( (ret = decode_vmx_inst(regs, &decode, &eptp)) != X86EMUL_OKAY ) return ret; switch ( reg_read(regs, decode.reg2) ) @@ -1960,7 +1905,7 @@ static int nvmx_handle_invvpid(struct cpu_user_regs *regs) unsigned long vpid; int ret; - if ( (ret = decode_vmx_inst(regs, &decode, &vpid, 0)) != X86EMUL_OKAY ) + if ( (ret = decode_vmx_inst(regs, &decode, &vpid)) != X86EMUL_OKAY ) return ret; switch ( reg_read(regs, decode.reg2) ) -- 2.1.4 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH 2/4] x86/vvmx: Drop the now-obsolete vmx_inst_check_privilege() 2018-10-25 15:38 ` [PATCH 2/4] x86/vvmx: Drop the now-obsolete vmx_inst_check_privilege() Andrew Cooper @ 2018-10-26 9:09 ` Sergey Dyasli 2018-10-29 15:21 ` Jan Beulich 2018-10-30 7:11 ` Tian, Kevin 2 siblings, 0 replies; 19+ messages in thread From: Sergey Dyasli @ 2018-10-26 9:09 UTC (permalink / raw) To: Andrew Cooper, Xen-devel Cc: sergey.dyasli@citrix.com >> Sergey Dyasli, Kevin Tian, Wei Liu, Jun Nakajima, Jan Beulich On 25/10/2018 16:38, Andrew Cooper wrote: > Now that nvmx_handle_vmx_insn() performs all VT-x instruction checks, there is > no need for redundant checking in vmx_inst_check_privilege(). Remove it, and > take out the vmxon_check boolean which was plumbed through decode_vmx_inst(). > > Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> Reviewed-by: Sergey Dyasli <sergey.dyasli@citrix.com> -- Thanks, Sergey _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 2/4] x86/vvmx: Drop the now-obsolete vmx_inst_check_privilege() 2018-10-25 15:38 ` [PATCH 2/4] x86/vvmx: Drop the now-obsolete vmx_inst_check_privilege() Andrew Cooper 2018-10-26 9:09 ` Sergey Dyasli @ 2018-10-29 15:21 ` Jan Beulich 2018-10-30 7:11 ` Tian, Kevin 2 siblings, 0 replies; 19+ messages in thread From: Jan Beulich @ 2018-10-29 15:21 UTC (permalink / raw) To: Andrew Cooper; +Cc: Sergey Dyasli, Kevin Tian, Wei Liu, Jun Nakajima, Xen-devel >>> On 25.10.18 at 17:38, <andrew.cooper3@citrix.com> wrote: > Now that nvmx_handle_vmx_insn() performs all VT-x instruction checks, there is > no need for redundant checking in vmx_inst_check_privilege(). Remove it, and > take out the vmxon_check boolean which was plumbed through > decode_vmx_inst(). > > Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> Reviewed-by: Jan Beulich <jbeulich@suse.com> _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 2/4] x86/vvmx: Drop the now-obsolete vmx_inst_check_privilege() 2018-10-25 15:38 ` [PATCH 2/4] x86/vvmx: Drop the now-obsolete vmx_inst_check_privilege() Andrew Cooper 2018-10-26 9:09 ` Sergey Dyasli 2018-10-29 15:21 ` Jan Beulich @ 2018-10-30 7:11 ` Tian, Kevin 2 siblings, 0 replies; 19+ messages in thread From: Tian, Kevin @ 2018-10-30 7:11 UTC (permalink / raw) To: Andrew Cooper, Xen-devel Cc: Sergey Dyasli, Wei Liu, Nakajima, Jun, Jan Beulich > From: Andrew Cooper [mailto:andrew.cooper3@citrix.com] > Sent: Thursday, October 25, 2018 11:39 PM > > Now that nvmx_handle_vmx_insn() performs all VT-x instruction checks, > there is > no need for redundant checking in vmx_inst_check_privilege(). Remove it, > and > take out the vmxon_check boolean which was plumbed through > decode_vmx_inst(). > > Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> Acked-by: Kevin Tian <kevin.tian@intel.com> _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH 3/4] x86/vvmx: INVVPID instructions should be handled at by L1 2018-10-25 15:36 [PATCH 0/4] x86/vvmx: XSA-278 followup fixes Andrew Cooper 2018-10-25 15:36 ` [PATCH 1/4] x86/vvmx: Unconditionally initialise vmxon_region_pa during vcpu construction Andrew Cooper 2018-10-25 15:38 ` [PATCH 2/4] x86/vvmx: Drop the now-obsolete vmx_inst_check_privilege() Andrew Cooper @ 2018-10-25 15:38 ` Andrew Cooper 2018-10-26 8:21 ` Sergey Dyasli 2018-10-30 7:12 ` Tian, Kevin 2018-10-25 15:39 ` [PATCH 4/4] x86/vvmx: Don't handle unknown nested vmexit reasons at L0 Andrew Cooper 3 siblings, 2 replies; 19+ messages in thread From: Andrew Cooper @ 2018-10-25 15:38 UTC (permalink / raw) To: Xen-devel Cc: Sergey Dyasli, Kevin Tian, Wei Liu, Jan Beulich, Andrew Cooper, Jun Nakajima Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> --- CC: Sergey Dyasli <sergey.dyasli@citrix.com> CC: Jan Beulich <JBeulich@suse.com> CC: Wei Liu <wei.liu2@citrix.com> CC: Jun Nakajima <jun.nakajima@intel.com> CC: Kevin Tian <kevin.tian@intel.com> --- xen/arch/x86/hvm/vmx/vvmx.c | 1 + 1 file changed, 1 insertion(+) diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c index 9390705..d1c8a41 100644 --- a/xen/arch/x86/hvm/vmx/vvmx.c +++ b/xen/arch/x86/hvm/vmx/vvmx.c @@ -2348,6 +2348,7 @@ int nvmx_n2_vmexit_handler(struct cpu_user_regs *regs, case EXIT_REASON_VMXOFF: case EXIT_REASON_VMXON: case EXIT_REASON_INVEPT: + case EXIT_REASON_INVVPID: case EXIT_REASON_XSETBV: /* inject to L1 */ nvcpu->nv_vmexit_pending = 1; -- 2.1.4 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH 3/4] x86/vvmx: INVVPID instructions should be handled at by L1 2018-10-25 15:38 ` [PATCH 3/4] x86/vvmx: INVVPID instructions should be handled at by L1 Andrew Cooper @ 2018-10-26 8:21 ` Sergey Dyasli 2018-10-30 7:12 ` Tian, Kevin 1 sibling, 0 replies; 19+ messages in thread From: Sergey Dyasli @ 2018-10-26 8:21 UTC (permalink / raw) To: Andrew Cooper, Xen-devel Cc: sergey.dyasli@citrix.com >> Sergey Dyasli, Kevin Tian, Wei Liu, Jun Nakajima, Jan Beulich On 25/10/2018 16:38, Andrew Cooper wrote: > diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c > index 9390705..d1c8a41 100644 > --- a/xen/arch/x86/hvm/vmx/vvmx.c > +++ b/xen/arch/x86/hvm/vmx/vvmx.c > @@ -2348,6 +2348,7 @@ int nvmx_n2_vmexit_handler(struct cpu_user_regs *regs, > case EXIT_REASON_VMXOFF: > case EXIT_REASON_VMXON: > case EXIT_REASON_INVEPT: > + case EXIT_REASON_INVVPID: > case EXIT_REASON_XSETBV: > /* inject to L1 */ > nvcpu->nv_vmexit_pending = 1; Reviewed-by: Sergey Dyasli <sergey.dyasli@citrix.com> I think this patch should be the first one in the series. _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 3/4] x86/vvmx: INVVPID instructions should be handled at by L1 2018-10-25 15:38 ` [PATCH 3/4] x86/vvmx: INVVPID instructions should be handled at by L1 Andrew Cooper 2018-10-26 8:21 ` Sergey Dyasli @ 2018-10-30 7:12 ` Tian, Kevin 1 sibling, 0 replies; 19+ messages in thread From: Tian, Kevin @ 2018-10-30 7:12 UTC (permalink / raw) To: Andrew Cooper, Xen-devel Cc: Sergey Dyasli, Wei Liu, Nakajima, Jun, Jan Beulich > From: Andrew Cooper [mailto:andrew.cooper3@citrix.com] > Sent: Thursday, October 25, 2018 11:39 PM > > Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> Acked-by: Kevin Tian <kevin.tian@intel.com> _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH 4/4] x86/vvmx: Don't handle unknown nested vmexit reasons at L0 2018-10-25 15:36 [PATCH 0/4] x86/vvmx: XSA-278 followup fixes Andrew Cooper ` (2 preceding siblings ...) 2018-10-25 15:38 ` [PATCH 3/4] x86/vvmx: INVVPID instructions should be handled at by L1 Andrew Cooper @ 2018-10-25 15:39 ` Andrew Cooper 2018-10-26 9:05 ` Sergey Dyasli 2018-10-30 7:20 ` Tian, Kevin 3 siblings, 2 replies; 19+ messages in thread From: Andrew Cooper @ 2018-10-25 15:39 UTC (permalink / raw) To: Xen-devel Cc: Sergey Dyasli, Kevin Tian, Wei Liu, Jan Beulich, Andrew Cooper, Jun Nakajima This is very dangerous from a security point of view, because a missing entry will cause L2's action to be interpreted as L1's action. Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> --- CC: Sergey Dyasli <sergey.dyasli@citrix.com> CC: Jan Beulich <JBeulich@suse.com> CC: Wei Liu <wei.liu2@citrix.com> CC: Jun Nakajima <jun.nakajima@intel.com> CC: Kevin Tian <kevin.tian@intel.com> --- xen/arch/x86/hvm/vmx/vvmx.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c index d1c8a41..817d85f 100644 --- a/xen/arch/x86/hvm/vmx/vvmx.c +++ b/xen/arch/x86/hvm/vmx/vvmx.c @@ -2609,8 +2609,9 @@ int nvmx_n2_vmexit_handler(struct cpu_user_regs *regs, nvcpu->nv_vmexit_pending = 1; break; default: - gprintk(XENLOG_ERR, "Unexpected nested vmexit: reason %u\n", + gprintk(XENLOG_ERR, "Unhandled nested vmexit: reason %u\n", exit_reason); + domain_crash(v->domain); } return ( nvcpu->nv_vmexit_pending == 1 ); -- 2.1.4 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH 4/4] x86/vvmx: Don't handle unknown nested vmexit reasons at L0 2018-10-25 15:39 ` [PATCH 4/4] x86/vvmx: Don't handle unknown nested vmexit reasons at L0 Andrew Cooper @ 2018-10-26 9:05 ` Sergey Dyasli 2018-10-26 9:10 ` Andrew Cooper 2018-10-30 7:20 ` Tian, Kevin 1 sibling, 1 reply; 19+ messages in thread From: Sergey Dyasli @ 2018-10-26 9:05 UTC (permalink / raw) To: Andrew Cooper, Xen-devel Cc: sergey.dyasli@citrix.com >> Sergey Dyasli, Kevin Tian, Wei Liu, Jun Nakajima, Jan Beulich On 25/10/2018 16:39, Andrew Cooper wrote: > This is very dangerous from a security point of view, because a missing entry > will cause L2's action to be interpreted as L1's action. > > Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> > --- > CC: Sergey Dyasli <sergey.dyasli@citrix.com> > CC: Jan Beulich <JBeulich@suse.com> > CC: Wei Liu <wei.liu2@citrix.com> > CC: Jun Nakajima <jun.nakajima@intel.com> > CC: Kevin Tian <kevin.tian@intel.com> > --- > xen/arch/x86/hvm/vmx/vvmx.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c > index d1c8a41..817d85f 100644 > --- a/xen/arch/x86/hvm/vmx/vvmx.c > +++ b/xen/arch/x86/hvm/vmx/vvmx.c > @@ -2609,8 +2609,9 @@ int nvmx_n2_vmexit_handler(struct cpu_user_regs *regs, > nvcpu->nv_vmexit_pending = 1; > break; > default: > - gprintk(XENLOG_ERR, "Unexpected nested vmexit: reason %u\n", > + gprintk(XENLOG_ERR, "Unhandled nested vmexit: reason %u\n", > exit_reason); > + domain_crash(v->domain); > } > > return ( nvcpu->nv_vmexit_pending == 1 ); Can you consider adding handling for the following? EXIT_REASON_INVD EXIT_REASON_RDTSCP EXIT_REASON_VMFUNC But in any case: Reviewed-by: Sergey Dyasli <sergey.dyasli@citrix.com> -- Thanks, Sergey _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 4/4] x86/vvmx: Don't handle unknown nested vmexit reasons at L0 2018-10-26 9:05 ` Sergey Dyasli @ 2018-10-26 9:10 ` Andrew Cooper 2018-10-26 9:13 ` Sergey Dyasli 0 siblings, 1 reply; 19+ messages in thread From: Andrew Cooper @ 2018-10-26 9:10 UTC (permalink / raw) To: Sergey Dyasli, Xen-devel; +Cc: Kevin Tian, Wei Liu, Jun Nakajima, Jan Beulich On 26/10/2018 10:05, Sergey Dyasli wrote: > > On 25/10/2018 16:39, Andrew Cooper wrote: >> This is very dangerous from a security point of view, because a missing entry >> will cause L2's action to be interpreted as L1's action. >> >> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> >> --- >> CC: Sergey Dyasli <sergey.dyasli@citrix.com> >> CC: Jan Beulich <JBeulich@suse.com> >> CC: Wei Liu <wei.liu2@citrix.com> >> CC: Jun Nakajima <jun.nakajima@intel.com> >> CC: Kevin Tian <kevin.tian@intel.com> >> --- >> xen/arch/x86/hvm/vmx/vvmx.c | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c >> index d1c8a41..817d85f 100644 >> --- a/xen/arch/x86/hvm/vmx/vvmx.c >> +++ b/xen/arch/x86/hvm/vmx/vvmx.c >> @@ -2609,8 +2609,9 @@ int nvmx_n2_vmexit_handler(struct cpu_user_regs *regs, >> nvcpu->nv_vmexit_pending = 1; >> break; >> default: >> - gprintk(XENLOG_ERR, "Unexpected nested vmexit: reason %u\n", >> + gprintk(XENLOG_ERR, "Unhandled nested vmexit: reason %u\n", >> exit_reason); >> + domain_crash(v->domain); >> } >> >> return ( nvcpu->nv_vmexit_pending == 1 ); > Can you consider adding handling for the following? > > EXIT_REASON_INVD > EXIT_REASON_RDTSCP > EXIT_REASON_VMFUNC Looks like these should be merged in with the INVVPID change, if your happy with that? ~Andrew _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 4/4] x86/vvmx: Don't handle unknown nested vmexit reasons at L0 2018-10-26 9:10 ` Andrew Cooper @ 2018-10-26 9:13 ` Sergey Dyasli 2018-10-26 11:09 ` Andrew Cooper 0 siblings, 1 reply; 19+ messages in thread From: Sergey Dyasli @ 2018-10-26 9:13 UTC (permalink / raw) To: Andrew Cooper, Xen-devel Cc: sergey.dyasli@citrix.com >> Sergey Dyasli, Kevin Tian, Wei Liu, Jun Nakajima, Jan Beulich On 26/10/2018 10:10, Andrew Cooper wrote: > On 26/10/2018 10:05, Sergey Dyasli wrote: >> >> On 25/10/2018 16:39, Andrew Cooper wrote: >>> This is very dangerous from a security point of view, because a missing entry >>> will cause L2's action to be interpreted as L1's action. >>> >>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> >>> --- >>> CC: Sergey Dyasli <sergey.dyasli@citrix.com> >>> CC: Jan Beulich <JBeulich@suse.com> >>> CC: Wei Liu <wei.liu2@citrix.com> >>> CC: Jun Nakajima <jun.nakajima@intel.com> >>> CC: Kevin Tian <kevin.tian@intel.com> >>> --- >>> xen/arch/x86/hvm/vmx/vvmx.c | 3 ++- >>> 1 file changed, 2 insertions(+), 1 deletion(-) >>> >>> diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c >>> index d1c8a41..817d85f 100644 >>> --- a/xen/arch/x86/hvm/vmx/vvmx.c >>> +++ b/xen/arch/x86/hvm/vmx/vvmx.c >>> @@ -2609,8 +2609,9 @@ int nvmx_n2_vmexit_handler(struct cpu_user_regs *regs, >>> nvcpu->nv_vmexit_pending = 1; >>> break; >>> default: >>> - gprintk(XENLOG_ERR, "Unexpected nested vmexit: reason %u\n", >>> + gprintk(XENLOG_ERR, "Unhandled nested vmexit: reason %u\n", >>> exit_reason); >>> + domain_crash(v->domain); >>> } >>> >>> return ( nvcpu->nv_vmexit_pending == 1 ); >> Can you consider adding handling for the following? >> >> EXIT_REASON_INVD >> EXIT_REASON_RDTSCP >> EXIT_REASON_VMFUNC > > Looks like these should be merged in with the INVVPID change, if your > happy with that? Yes, that would be a cleaner way, thanks. -- Sergey _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 4/4] x86/vvmx: Don't handle unknown nested vmexit reasons at L0 2018-10-26 9:13 ` Sergey Dyasli @ 2018-10-26 11:09 ` Andrew Cooper 2018-10-26 11:31 ` Sergey Dyasli 0 siblings, 1 reply; 19+ messages in thread From: Andrew Cooper @ 2018-10-26 11:09 UTC (permalink / raw) To: Sergey Dyasli, Xen-devel; +Cc: Kevin Tian, Wei Liu, Jun Nakajima, Jan Beulich On 26/10/18 10:13, Sergey Dyasli wrote: > On 26/10/2018 10:10, Andrew Cooper wrote: >> On 26/10/2018 10:05, Sergey Dyasli wrote: >>> On 25/10/2018 16:39, Andrew Cooper wrote: >>>> This is very dangerous from a security point of view, because a missing entry >>>> will cause L2's action to be interpreted as L1's action. >>>> >>>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> >>>> --- >>>> CC: Sergey Dyasli <sergey.dyasli@citrix.com> >>>> CC: Jan Beulich <JBeulich@suse.com> >>>> CC: Wei Liu <wei.liu2@citrix.com> >>>> CC: Jun Nakajima <jun.nakajima@intel.com> >>>> CC: Kevin Tian <kevin.tian@intel.com> >>>> --- >>>> xen/arch/x86/hvm/vmx/vvmx.c | 3 ++- >>>> 1 file changed, 2 insertions(+), 1 deletion(-) >>>> >>>> diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c >>>> index d1c8a41..817d85f 100644 >>>> --- a/xen/arch/x86/hvm/vmx/vvmx.c >>>> +++ b/xen/arch/x86/hvm/vmx/vvmx.c >>>> @@ -2609,8 +2609,9 @@ int nvmx_n2_vmexit_handler(struct cpu_user_regs *regs, >>>> nvcpu->nv_vmexit_pending = 1; >>>> break; >>>> default: >>>> - gprintk(XENLOG_ERR, "Unexpected nested vmexit: reason %u\n", >>>> + gprintk(XENLOG_ERR, "Unhandled nested vmexit: reason %u\n", >>>> exit_reason); >>>> + domain_crash(v->domain); >>>> } >>>> >>>> return ( nvcpu->nv_vmexit_pending == 1 ); >>> Can you consider adding handling for the following? >>> >>> EXIT_REASON_INVD >>> EXIT_REASON_RDTSCP >>> EXIT_REASON_VMFUNC >> Looks like these should be merged in with the INVVPID change, if your >> happy with that? > Yes, that would be a cleaner way, thanks. Ok - that patch is now as follows: x86/vvmx: Let L1 handle all the unconditional vmexit instructions Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> ... diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c index aa202e0..7051eb3 100644 --- a/xen/arch/x86/hvm/vmx/vvmx.c +++ b/xen/arch/x86/hvm/vmx/vvmx.c @@ -2383,6 +2383,8 @@ int nvmx_n2_vmexit_handler(struct cpu_user_regs *regs, case EXIT_REASON_TRIPLE_FAULT: case EXIT_REASON_TASK_SWITCH: case EXIT_REASON_CPUID: + case EXIT_REASON_GETSEC: + case EXIT_REASON_INVD: case EXIT_REASON_VMCALL: case EXIT_REASON_VMCLEAR: case EXIT_REASON_VMLAUNCH: @@ -2395,6 +2397,7 @@ int nvmx_n2_vmexit_handler(struct cpu_user_regs *regs, case EXIT_REASON_VMXON: case EXIT_REASON_INVEPT: case EXIT_REASON_XSETBV: + case EXIT_REASON_INVVPID: /* inject to L1 */ nvcpu->nv_vmexit_pending = 1; break; RDTSCP and VMFUNC mustn't be blindly forwarded to L1. We need to check whether the intercepts are active and either forward to L1 or handle at L0. ~Andrew _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH 4/4] x86/vvmx: Don't handle unknown nested vmexit reasons at L0 2018-10-26 11:09 ` Andrew Cooper @ 2018-10-26 11:31 ` Sergey Dyasli 0 siblings, 0 replies; 19+ messages in thread From: Sergey Dyasli @ 2018-10-26 11:31 UTC (permalink / raw) To: Andrew Cooper, Xen-devel Cc: sergey.dyasli@citrix.com >> Sergey Dyasli, Kevin Tian, Wei Liu, Jun Nakajima, Jan Beulich On 26/10/2018 12:09, Andrew Cooper wrote: > Ok - that patch is now as follows: > > x86/vvmx: Let L1 handle all the unconditional vmexit instructions > > Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> > ... > diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c > index aa202e0..7051eb3 100644 > --- a/xen/arch/x86/hvm/vmx/vvmx.c > +++ b/xen/arch/x86/hvm/vmx/vvmx.c > @@ -2383,6 +2383,8 @@ int nvmx_n2_vmexit_handler(struct cpu_user_regs *regs, > case EXIT_REASON_TRIPLE_FAULT: > case EXIT_REASON_TASK_SWITCH: > case EXIT_REASON_CPUID: > + case EXIT_REASON_GETSEC: > + case EXIT_REASON_INVD: > case EXIT_REASON_VMCALL: > case EXIT_REASON_VMCLEAR: > case EXIT_REASON_VMLAUNCH: > @@ -2395,6 +2397,7 @@ int nvmx_n2_vmexit_handler(struct cpu_user_regs *regs, > case EXIT_REASON_VMXON: > case EXIT_REASON_INVEPT: > case EXIT_REASON_XSETBV: > + case EXIT_REASON_INVVPID: > /* inject to L1 */ > nvcpu->nv_vmexit_pending = 1; > break; > > RDTSCP and VMFUNC mustn't be blindly forwarded to L1. We need to check > whether the intercepts are active and either forward to L1 or handle at L0. I think the below will do for RDTSCP. VMFUNC is trickier but Xen currently doesn't provide this capability to L1 anyway. diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c index aa202e0d12..1d1a0921af 100644 --- a/xen/arch/x86/hvm/vmx/vvmx.c +++ b/xen/arch/x86/hvm/vmx/vvmx.c @@ -2653,6 +2653,13 @@ int nvmx_n2_vmexit_handler(struct cpu_user_regs *regs, if ( ctrl & CPU_BASED_TPR_SHADOW ) nvcpu->nv_vmexit_pending = 1; break; + + case EXIT_REASON_RDTSCP: + ctrl = __n2_exec_control(v); + if ( ctrl & CPU_BASED_RDTSC_EXITING ) + nvcpu->nv_vmexit_pending = 1; + break; + default: gprintk(XENLOG_ERR, "Unexpected nested vmexit: reason %u\n", exit_reason); --- Thanks, Sergey _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH 4/4] x86/vvmx: Don't handle unknown nested vmexit reasons at L0 2018-10-25 15:39 ` [PATCH 4/4] x86/vvmx: Don't handle unknown nested vmexit reasons at L0 Andrew Cooper 2018-10-26 9:05 ` Sergey Dyasli @ 2018-10-30 7:20 ` Tian, Kevin 1 sibling, 0 replies; 19+ messages in thread From: Tian, Kevin @ 2018-10-30 7:20 UTC (permalink / raw) To: Andrew Cooper, Xen-devel Cc: Sergey Dyasli, Wei Liu, Nakajima, Jun, Jan Beulich > From: Andrew Cooper [mailto:andrew.cooper3@citrix.com] > Sent: Thursday, October 25, 2018 11:39 PM > > This is very dangerous from a security point of view, because a missing > entry > will cause L2's action to be interpreted as L1's action. > > Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> Acked-by: Kevin Tian <kevin.tian@intel.com> _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2018-10-30 7:20 UTC | newest] Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2018-10-25 15:36 [PATCH 0/4] x86/vvmx: XSA-278 followup fixes Andrew Cooper 2018-10-25 15:36 ` [PATCH 1/4] x86/vvmx: Unconditionally initialise vmxon_region_pa during vcpu construction Andrew Cooper 2018-10-26 9:09 ` Sergey Dyasli 2018-10-29 15:20 ` Jan Beulich 2018-10-30 7:11 ` Tian, Kevin 2018-10-25 15:38 ` [PATCH 2/4] x86/vvmx: Drop the now-obsolete vmx_inst_check_privilege() Andrew Cooper 2018-10-26 9:09 ` Sergey Dyasli 2018-10-29 15:21 ` Jan Beulich 2018-10-30 7:11 ` Tian, Kevin 2018-10-25 15:38 ` [PATCH 3/4] x86/vvmx: INVVPID instructions should be handled at by L1 Andrew Cooper 2018-10-26 8:21 ` Sergey Dyasli 2018-10-30 7:12 ` Tian, Kevin 2018-10-25 15:39 ` [PATCH 4/4] x86/vvmx: Don't handle unknown nested vmexit reasons at L0 Andrew Cooper 2018-10-26 9:05 ` Sergey Dyasli 2018-10-26 9:10 ` Andrew Cooper 2018-10-26 9:13 ` Sergey Dyasli 2018-10-26 11:09 ` Andrew Cooper 2018-10-26 11:31 ` Sergey Dyasli 2018-10-30 7:20 ` Tian, Kevin
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.