# HG changeset patch # User Tim Deegan # Date 1278682148 -3600 # Node ID ed89d064acc184b0c10a60ffb4c67c493dfb3c8b # Parent dc3138d60b40baf38016a9b58f438598580a407f Add a hypercall to allow HVM PV drivers to insert xentrace records. Signed-off-by: Tim Deegan diff -r dc3138d60b40 -r ed89d064acc1 xen/arch/x86/hvm/hvm.c --- a/xen/arch/x86/hvm/hvm.c Fri Jul 09 14:26:47 2010 +0100 +++ b/xen/arch/x86/hvm/hvm.c Fri Jul 09 14:29:08 2010 +0100 @@ -3197,6 +3197,22 @@ break; } + case HVMOP_xentrace: { + xen_hvm_xentrace_t tr; + + if ( copy_from_guest(&tr, arg, 1 ) ) + return -EFAULT; + + if ( tr.extra_bytes > 28 || tr.event >= 0x1000 ) + return -EINVAL; + + /* Cycles will be taken at the vmexit and vmenter */ + trace_var(tr.event | TRC_GUEST, 0 /*!cycles*/, + tr.extra_bytes, + (unsigned char *)tr.extra); + break; + } + default: { gdprintk(XENLOG_WARNING, "Bad HVM op %ld.\n", op); diff -r dc3138d60b40 -r ed89d064acc1 xen/include/public/hvm/hvm_op.h --- a/xen/include/public/hvm/hvm_op.h Fri Jul 09 14:26:47 2010 +0100 +++ b/xen/include/public/hvm/hvm_op.h Fri Jul 09 14:29:08 2010 +0100 @@ -146,6 +146,14 @@ typedef struct xen_hvm_get_time xen_hvm_get_time_t; DEFINE_XEN_GUEST_HANDLE(xen_hvm_get_time_t); +#define HVMOP_xentrace 11 +struct xen_hvm_xentrace { + uint16_t event, extra_bytes; + uint8_t extra[28]; +}; +typedef struct xen_hvm_xentrace xen_hvm_xentrace_t; +DEFINE_XEN_GUEST_HANDLE(xen_hvm_xentrace_t); + #endif /* defined(__XEN__) || defined(__XEN_TOOLS__) */ #endif /* __XEN_PUBLIC_HVM_HVM_OP_H__ */ diff -r dc3138d60b40 -r ed89d064acc1 xen/include/public/trace.h --- a/xen/include/public/trace.h Fri Jul 09 14:26:47 2010 +0100 +++ b/xen/include/public/trace.h Fri Jul 09 14:29:08 2010 +0100 @@ -39,6 +39,7 @@ #define TRC_PV 0x0020f000 /* Xen PV traces */ #define TRC_SHADOW 0x0040f000 /* Xen shadow tracing */ #define TRC_PM 0x0080f000 /* Xen power management trace */ +#define TRC_GUEST 0x0800f000 /* Guest-generated traces */ #define TRC_ALL 0x0ffff000 #define TRC_HD_TO_EVENT(x) ((x)&0x0fffffff) #define TRC_HD_CYCLE_FLAG (1UL<<31)