From: Keir Fraser Date: Fri, 5 Dec 2008 11:05:45 +0000 (+0000) Subject: xentrace: trace interrupt window X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~14026^2~70 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=1badf51374df2054366eccc600f4368a89a29fa7;p=xen.git xentrace: trace interrupt window Make a specific interrupt-window trace, with information about why the interrupt in question can't be delivered. Signed-off-by: George Dunlap --- diff --git a/xen/arch/x86/hvm/svm/intr.c b/xen/arch/x86/hvm/svm/intr.c index 330d587925..b6499070c0 100644 --- a/xen/arch/x86/hvm/svm/intr.c +++ b/xen/arch/x86/hvm/svm/intr.c @@ -80,7 +80,8 @@ static void enable_intr_window(struct vcpu *v, struct hvm_intack intack) ASSERT(intack.source != hvm_intsrc_none); - HVMTRACE_2D(INJ_VIRQ, 0x0, /*fake=*/ 1); + HVMTRACE_3D(INTR_WINDOW, intack.vector, intack.source, + vmcb->eventinj.fields.v?vmcb->eventinj.fields.vector:-1); /* * Create a dummy virtual interrupt to intercept as soon as the diff --git a/xen/arch/x86/hvm/vmx/intr.c b/xen/arch/x86/hvm/vmx/intr.c index daf2e7bcf0..2c45e26bfa 100644 --- a/xen/arch/x86/hvm/vmx/intr.c +++ b/xen/arch/x86/hvm/vmx/intr.c @@ -74,6 +74,13 @@ static void enable_intr_window(struct vcpu *v, struct hvm_intack intack) ASSERT(intack.source != hvm_intsrc_none); + if ( unlikely(tb_init_done) ) + { + unsigned int intr = __vmread(VM_ENTRY_INTR_INFO); + HVMTRACE_3D(INTR_WINDOW, intack.vector, intack.source, + (intr & INTR_INFO_VALID_MASK) ? intr & 0xff : -1); + } + if ( (intack.source == hvm_intsrc_nmi) && cpu_has_vmx_vnmi ) { /* diff --git a/xen/include/asm-x86/hvm/trace.h b/xen/include/asm-x86/hvm/trace.h index 213eb10629..9b0b7fd7a9 100644 --- a/xen/include/asm-x86/hvm/trace.h +++ b/xen/include/asm-x86/hvm/trace.h @@ -24,6 +24,7 @@ #define DO_TRC_HVM_INJ_EXC DEFAULT_HVM_INJECT #define DO_TRC_HVM_INJ_VIRQ DEFAULT_HVM_INJECT #define DO_TRC_HVM_REINJ_VIRQ DEFAULT_HVM_INJECT +#define DO_TRC_HVM_INTR_WINDOW DEFAULT_HVM_INJECT #define DO_TRC_HVM_IO_READ DEFAULT_HVM_IO #define DO_TRC_HVM_IO_WRITE DEFAULT_HVM_IO #define DO_TRC_HVM_CR_READ DEFAULT_HVM_REGACCESS diff --git a/xen/include/public/trace.h b/xen/include/public/trace.h index 5ca0657e0e..e2d8adc7b4 100644 --- a/xen/include/public/trace.h +++ b/xen/include/public/trace.h @@ -148,6 +148,7 @@ #define TRC_HVM_CLTS (TRC_HVM_HANDLER + 0x18) #define TRC_HVM_LMSW (TRC_HVM_HANDLER + 0x19) #define TRC_HVM_LMSW64 (TRC_HVM_HANDLER + TRC_64_FLAG + 0x19) +#define TRC_HVM_INTR_WINDOW (TRC_HVM_HANDLER + 0X20) /* trace subclasses for power management */ #define TRC_PM_FREQ 0x00801000 /* xen cpu freq events */