Message ID | 1467395574-15074-1-git-send-email-andrew.cooper3@citrix.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
> From: Andrew Cooper [mailto:andrew.cooper3@citrix.com] > Sent: Saturday, July 02, 2016 1:53 AM > > If a VMLAUNCH/VMRESUME fails due to invalid control or host state, dump the > VMCS before crashing the domain. > > Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> Acked-by: Kevin Tian <kevin.tian@intel.com>
>>> On 01.07.16 at 19:52, <andrew.cooper3@citrix.com> wrote: > If a VMLAUNCH/VMRESUME fails due to invalid control or host state, dump the > VMCS before crashing the domain. > > Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> Good idea: Reviewed-by: Jan Beulich <jbeulich@suse.com>
diff --git a/xen/arch/x86/hvm/vmx/vmcs.c b/xen/arch/x86/hvm/vmx/vmcs.c index 46b63b6..1bd875a 100644 --- a/xen/arch/x86/hvm/vmx/vmcs.c +++ b/xen/arch/x86/hvm/vmx/vmcs.c @@ -1637,6 +1637,11 @@ void vmx_vmentry_failure(void) __vmread(VM_INSTRUCTION_ERROR, &error); gprintk(XENLOG_ERR, "VM%s error: %#lx\n", curr->arch.hvm_vmx.launched ? "RESUME" : "LAUNCH", error); + + if ( error == VMX_INSN_INVALID_CONTROL_STATE || + error == VMX_INSN_INVALID_HOST_STATE ) + vmcs_dump_vcpu(curr); + domain_crash_synchronous(); } diff --git a/xen/include/asm-x86/hvm/vmx/vmcs.h b/xen/include/asm-x86/hvm/vmx/vmcs.h index 9f1729d..1e33d9c 100644 --- a/xen/include/asm-x86/hvm/vmx/vmcs.h +++ b/xen/include/asm-x86/hvm/vmx/vmcs.h @@ -567,6 +567,10 @@ enum vmcs_field { #define VMX_GUEST_MSR 0 #define VMX_HOST_MSR 1 +/* VM Instruction error numbers. */ +#define VMX_INSN_INVALID_CONTROL_STATE 7 +#define VMX_INSN_INVALID_HOST_STATE 8 + void vmx_disable_intercept_for_msr(struct vcpu *v, u32 msr, int type); void vmx_enable_intercept_for_msr(struct vcpu *v, u32 msr, int type); int vmx_read_guest_msr(u32 msr, u64 *val);
If a VMLAUNCH/VMRESUME fails due to invalid control or host state, dump the VMCS before crashing the domain. Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> --- CC: Jan Beulich <JBeulich@suse.com> CC: Jun Nakajima <jun.nakajima@intel.com> CC: Kevin Tian <kevin.tian@intel.com> --- xen/arch/x86/hvm/vmx/vmcs.c | 5 +++++ xen/include/asm-x86/hvm/vmx/vmcs.h | 4 ++++ 2 files changed, 9 insertions(+)