|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v9 09/13] Add xentrace to vmware_port
On 02/17/15 08:45, Andrew Cooper wrote:
> On 16/02/15 23:05, Don Slutz wrote:
>> Also added missing TRAP_DEBUG & VLAPIC.
>>
>> Signed-off-by: Don Slutz <dslutz@xxxxxxxxxxx>
>
> This patch doesn't actually add any trace points.
>
Sigh. They got lost in rebaseing. Will recover and add to v10.
Here is just the trace parts:
diff --git a/xen/arch/x86/hvm/io.c b/xen/arch/x86/hvm/io.c
index 2d06956..752eeb8 100644
--- a/xen/arch/x86/hvm/io.c
+++ b/xen/arch/x86/hvm/io.c
@@ -205,6 +205,9 @@ void hvm_io_assist(ioreq_t *p)
regs->_edx = vr->edx;
regs->_esi = vr->esi;
regs->_edi = vr->edi;
+ HVMTRACE_ND(VMPORT_QEMU, 0, 1/*cycles*/, 6,
+ p->data, regs->_ebx, regs->_ecx,
+ regs->_edx, regs->_esi, regs->_edi);
}
}
if ( vio->io_size == 4 ) /* Needs zero extension. */
diff --git a/xen/arch/x86/hvm/vmware/vmport.c
b/xen/arch/x86/hvm/vmware/vmport.c
index 131bafd..de44893 100644
--- a/xen/arch/x86/hvm/vmware/vmport.c
+++ b/xen/arch/x86/hvm/vmware/vmport.c
...
@@ -133,11 +135,20 @@ int vmport_ioport(int dir, uint32_t port, uint32_t
bytes, uint32_t *val)
/* Let backing DM handle */
return X86EMUL_VMPORT_SEND;
}
+ HVMTRACE_ND7(VMPORT_HANDLED, 0, 0/*cycles*/, 7,
+ cmd, new_eax, regs->_ebx, regs->_ecx,
+ regs->_edx, regs->_esi, regs->_edi);
if ( dir == IOREQ_READ )
*val = new_eax;
}
- else if ( dir == IOREQ_READ )
- *val = ~0u;
+ else
+ {
+ HVMTRACE_ND7(VMPORT_IGNORED, 0, 0/*cycles*/, 7,
+ port, regs->_eax, regs->_ebx, regs->_ecx,
+ regs->_edx, regs->_esi, regs->_edi);
+ if ( dir == IOREQ_READ )
+ *val = ~0u;
+ }
return X86EMUL_OKAY;
}
>> ---
>> v9:
>> Dropped unneed VMPORT_UNHANDLED, VMPORT_DECODE.
>>
...
>> diff --git a/xen/arch/x86/hvm/vmware/vmport.c
>> b/xen/arch/x86/hvm/vmware/vmport.c
>> index 131bafd..fb191a2 100644
>> --- a/xen/arch/x86/hvm/vmware/vmport.c
>> +++ b/xen/arch/x86/hvm/vmware/vmport.c
>> @@ -17,6 +17,7 @@
>> #include <asm/hvm/hvm.h>
>> #include <asm/hvm/support.h>
>> #include <asm/hvm/vmport.h>
>> +#include <asm/hvm/trace.h>
>>
>> #include "backdoor_def.h"
>>
>> @@ -55,8 +56,9 @@ int vmport_ioport(int dir, uint32_t port, uint32_t bytes,
>> uint32_t *val)
>> uint64_t value;
>> struct vcpu *curr = current;
>> struct domain *d = curr->domain;
>> + uint16_t cmd = regs->_ecx;
>>
>> - switch ( regs->_ecx & 0xffff )
>> + switch ( cmd )
>
> This hunk really looks like it belongs in patch 5.
>
That my be, but in patch 5, there is only 1 use of cmd and Jan Beulich
said to drop them. This patch adds a 2nd use:
+ HVMTRACE_ND7(VMPORT_HANDLED, 0, 0/*cycles*/, 7,
+ cmd, new_eax, regs->_ebx, regs->_ecx,
+ regs->_edx, regs->_esi, regs->_edi);
(which was accidentally dropped).
-Don Slutz
> ~Andrew
>
>> {
>> case BDOOR_CMD_GETMHZ:
>> new_eax = d->arch.tsc_khz / 1000;
>> diff --git a/xen/include/asm-x86/hvm/trace.h
>> b/xen/include/asm-x86/hvm/trace.h
>> index de802a6..0ad805f 100644
>> --- a/xen/include/asm-x86/hvm/trace.h
>> +++ b/xen/include/asm-x86/hvm/trace.h
>> @@ -54,6 +54,9 @@
>> #define DO_TRC_HVM_TRAP DEFAULT_HVM_MISC
>> #define DO_TRC_HVM_TRAP_DEBUG DEFAULT_HVM_MISC
>> #define DO_TRC_HVM_VLAPIC DEFAULT_HVM_MISC
>> +#define DO_TRC_HVM_VMPORT_HANDLED DEFAULT_HVM_IO
>> +#define DO_TRC_HVM_VMPORT_IGNORED DEFAULT_HVM_IO
>> +#define DO_TRC_HVM_VMPORT_QEMU DEFAULT_HVM_IO
>>
>>
>> #define TRC_PAR_LONG(par) ((par)&0xFFFFFFFF),((par)>>32)
>> @@ -83,6 +86,25 @@
>> } \
>> } while(0)
>>
>> +#define HVMTRACE_ND7(evt, modifier, cycles, count, d1, d2, d3, d4, d5, d6,
>> d7) \
>> + do { \
>> + if ( unlikely(tb_init_done) && DO_TRC_HVM_ ## evt ) \
>> + { \
>> + struct { \
>> + u32 d[7]; \
>> + } _d; \
>> + _d.d[0]=(d1); \
>> + _d.d[1]=(d2); \
>> + _d.d[2]=(d3); \
>> + _d.d[3]=(d4); \
>> + _d.d[4]=(d5); \
>> + _d.d[5]=(d6); \
>> + _d.d[6]=(d7); \
>> + __trace_var(TRC_HVM_ ## evt | (modifier), cycles, \
>> + sizeof(*_d.d) * count, &_d); \
>> + } \
>> + } while(0)
>> +
>> #define HVMTRACE_6D(evt, d1, d2, d3, d4, d5, d6) \
>> HVMTRACE_ND(evt, 0, 0, 6, d1, d2, d3, d4, d5, d6)
>> #define HVMTRACE_5D(evt, d1, d2, d3, d4, d5) \
>> diff --git a/xen/include/public/trace.h b/xen/include/public/trace.h
>> index 5211ae7..16b87f9 100644
>> --- a/xen/include/public/trace.h
>> +++ b/xen/include/public/trace.h
>> @@ -227,6 +227,9 @@
>> #define TRC_HVM_TRAP (TRC_HVM_HANDLER + 0x23)
>> #define TRC_HVM_TRAP_DEBUG (TRC_HVM_HANDLER + 0x24)
>> #define TRC_HVM_VLAPIC (TRC_HVM_HANDLER + 0x25)
>> +#define TRC_HVM_VMPORT_HANDLED (TRC_HVM_HANDLER + 0x26)
>> +#define TRC_HVM_VMPORT_IGNORED (TRC_HVM_HANDLER + 0x27)
>> +#define TRC_HVM_VMPORT_QEMU (TRC_HVM_HANDLER + 0x28)
>>
>> #define TRC_HVM_IOPORT_WRITE (TRC_HVM_HANDLER + 0x216)
>> #define TRC_HVM_IOMEM_WRITE (TRC_HVM_HANDLER + 0x217)
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |