From: Don Slutz <don.slutz@gmail.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xen.org
Cc: Kevin Tian <kevin.tian@intel.com>, Keir Fraser <keir@xen.org>,
Ian Campbell <ian.campbell@citrix.com>,
Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
Jun Nakajima <jun.nakajima@intel.com>,
Eddie Dong <eddie.dong@intel.com>,
Ian Jackson <ian.jackson@eu.citrix.com>,
Don Slutz <dslutz@verizon.com>, Tim Deegan <tim@xen.org>,
George Dunlap <George.Dunlap@eu.citrix.com>,
Aravind Gopalakrishnan <Aravind.Gopalakrishnan@amd.com>,
Jan Beulich <jbeulich@suse.com>,
Boris Ostrovsky <boris.ostrovsky@oracle.com>,
Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Subject: Re: [PATCH v12 8/8] Add xentrace to vmware_port
Date: Mon, 29 Jun 2015 12:11:34 -0400 [thread overview]
Message-ID: <55916E36.6010707@Gmail.com> (raw)
In-Reply-To: <55915C17.6090604@citrix.com>
On 06/29/15 10:54, Andrew Cooper wrote:
> On 28/06/15 00:27, Don Slutz wrote:
>> From: Don Slutz <dslutz@verizon.com>
>>
>> Also added missing TRAP_DEBUG & VLAPIC.
>>
>> Signed-off-by: Don Slutz <dslutz@verizon.com>
>> Acked-by: Ian Campbell <ian.campbell@citrix.com>
>> CC: Don Slutz <don.slutz@gmail.com>
>> ---
>> v12:
>> Switch VMPORT_IGNORED to port, regs->_eax.
>>
>> v11:
>> No change
>>
>> v10:
>> Added Acked-by: Ian Campbell
>> Added back in the trace point calls.
>>
>> Why is cmd in this patch?
>> Because the trace points use it.
>>
>> v9:
>> Dropped unneed VMPORT_UNHANDLED, VMPORT_DECODE.
>>
>> v7:
>> Dropped some of the new traces.
>> Added HVMTRACE_ND7.
>>
>> v6:
>> Dropped the attempt to use svm_nextrip_insn_length via
>> __get_instruction_length (added in v2). Just always look
>> at upto 15 bytes on AMD.
>>
>> v5:
>> exitinfo1 is used twice.
>> Fixed.
>>
>> tools/xentrace/formats | 5 +++++
>> xen/arch/x86/hvm/io.c | 3 +++
>> xen/arch/x86/hvm/vmware/vmport.c | 15 ++++++++++++---
>> xen/include/asm-x86/hvm/trace.h | 22 ++++++++++++++++++++++
>> xen/include/public/trace.h | 3 +++
>> 5 files changed, 45 insertions(+), 3 deletions(-)
>>
>> diff --git a/tools/xentrace/formats b/tools/xentrace/formats
>> index 5d7b72a..ac8800e 100644
>> --- a/tools/xentrace/formats
>> +++ b/tools/xentrace/formats
>> @@ -79,6 +79,11 @@
>> 0x00082020 CPU%(cpu)d %(tsc)d (+%(reltsc)8d) INTR_WINDOW [ value = 0x%(1)08x ]
>> 0x00082021 CPU%(cpu)d %(tsc)d (+%(reltsc)8d) NPF [ gpa = 0x%(2)08x%(1)08x mfn = 0x%(4)08x%(3)08x qual = 0x%(5)04x p2mt = 0x%(6)04x ]
>> 0x00082023 CPU%(cpu)d %(tsc)d (+%(reltsc)8d) TRAP [ vector = 0x%(1)02x ]
>> +0x00082024 CPU%(cpu)d %(tsc)d (+%(reltsc)8d) TRAP_DEBUG [ exit_qualification = 0x%(1)08x ]
>> +0x00082025 CPU%(cpu)d %(tsc)d (+%(reltsc)8d) VLAPIC
>> +0x00082026 CPU%(cpu)d %(tsc)d (+%(reltsc)8d) VMPORT_HANDLED [ cmd = %(1)d eax = 0x%(2)08x ebx = 0x%(3)08x ecx = 0x%(4)08x edx = 0x%(5)08x esi = 0x%(6)08x edi = 0x%(7)08x ]
>> +0x00082027 CPU%(cpu)d %(tsc)d (+%(reltsc)8d) VMPORT_IGNORED [ port = %(1)d eax = 0x%(2)08x ]
>> +0x00082028 CPU%(cpu)d %(tsc)d (+%(reltsc)8d) VMPORT_QEMU [ eax = 0x%(1)08x ebx = 0x%(2)08x ecx = 0x%(3)08x edx = 0x%(4)08x esi = 0x%(5)08x edi = 0x%(6)08x ]
>>
>> 0x0010f001 CPU%(cpu)d %(tsc)d (+%(reltsc)8d) page_grant_map [ domid = %(1)d ]
>> 0x0010f002 CPU%(cpu)d %(tsc)d (+%(reltsc)8d) page_grant_unmap [ domid = %(1)d ]
>> diff --git a/xen/arch/x86/hvm/io.c b/xen/arch/x86/hvm/io.c
>> index c1379bf..e2d947b 100644
>> --- a/xen/arch/x86/hvm/io.c
>> +++ b/xen/arch/x86/hvm/io.c
>> @@ -206,6 +206,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 5e14402..de29e2f 100644
>> --- a/xen/arch/x86/hvm/vmware/vmport.c
>> +++ b/xen/arch/x86/hvm/vmware/vmport.c
>> @@ -16,6 +16,7 @@
>> #include <xen/lib.h>
>> #include <asm/hvm/hvm.h>
>> #include <asm/hvm/support.h>
>> +#include <asm/hvm/trace.h>
>>
>> #include "backdoor_def.h"
>>
>> @@ -35,6 +36,7 @@ static int vmport_ioport(int dir, uint32_t port, uint32_t bytes, uint32_t *val)
>> if ( port == BDOOR_PORT && regs->_eax == BDOOR_MAGIC )
>> {
>> uint32_t new_eax = ~0u;
>> + uint16_t cmd = regs->_ecx;
>> uint64_t value;
>> struct vcpu *curr = current;
>> struct domain *currd = curr->domain;
>> @@ -45,7 +47,7 @@ static int vmport_ioport(int dir, uint32_t port, uint32_t bytes, uint32_t *val)
>> * leaving the high 32-bits unchanged, unlike what one would
>> * expect to happen.
>> */
>> - switch ( regs->_ecx & 0xffff )
>> + switch ( cmd )
>> {
>> case BDOOR_CMD_GETMHZ:
>> new_eax = currd->arch.tsc_khz / 1000;
>> @@ -123,11 +125,18 @@ static int vmport_ioport(int dir, uint32_t port, uint32_t bytes, uint32_t *val)
>> /* Let backing DM handle */
>> return X86EMUL_UNHANDLEABLE;
>> }
>> + 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_2D(VMPORT_IGNORED, port, regs->_eax);
>> + if ( dir == IOREQ_READ )
>> + *val = ~0u;
>> + }
>>
>> return X86EMUL_OKAY;
>> }
>> 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) \
> Please do this by extending the existing infrastructure rather than
> special-casing 7 on the side. (i.e. extend ND to take 7 parameters, and
> introduce HVMTRACE_7D)
>
>> + do { \
>> + if ( unlikely(tb_init_done) && DO_TRC_HVM_ ## evt ) \
>> + { \
>> + struct { \
>> + u32 d[7]; \
>> + } _d; \
> = { d1, d2, d3, d4, d5, d6, d7 }
>
> will be far shorter, linewise.
Ok, will do.
-Don Slutz
> ~Andrew
>
>> + _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)
next prev parent reply other threads:[~2015-06-29 16:11 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-27 23:27 [PATCH v12 0/8] Xen VMware tools support Don Slutz
2015-06-27 23:27 ` [PATCH v12 1/8] tools: Add vga=vmware Don Slutz
2015-07-07 15:54 ` Ian Campbell
2015-06-27 23:27 ` [PATCH v12 2/8] xen: Add support for VMware cpuid leaves Don Slutz
2015-07-01 20:01 ` Konrad Rzeszutek Wilk
2015-07-03 22:03 ` Don Slutz
2015-07-07 15:03 ` Konrad Rzeszutek Wilk
2015-07-28 2:54 ` Don Slutz
2015-07-07 15:56 ` Ian Campbell
2015-06-27 23:27 ` [PATCH v12 3/8] tools: Add vmware_hwver support Don Slutz
2015-07-01 20:14 ` Konrad Rzeszutek Wilk
2015-07-07 15:59 ` Ian Campbell
2015-07-28 2:58 ` Don Slutz
2015-06-27 23:27 ` [PATCH v12 4/8] vmware: Add VMware provided include file Don Slutz
2015-06-27 23:27 ` [PATCH v12 5/8] xen: Add vmware_port support Don Slutz
2015-06-27 23:27 ` [PATCH v12 6/8] tools: " Don Slutz
2015-07-07 16:01 ` Ian Campbell
2015-06-27 23:27 ` [PATCH v12 7/8] Add IOREQ_TYPE_VMWARE_PORT Don Slutz
2015-07-01 20:49 ` Konrad Rzeszutek Wilk
2015-07-03 14:55 ` Don Slutz
2015-07-07 15:02 ` Konrad Rzeszutek Wilk
2015-07-28 2:59 ` Don Slutz
2015-06-27 23:27 ` [PATCH v12 8/8] Add xentrace to vmware_port Don Slutz
2015-06-29 14:54 ` Andrew Cooper
2015-06-29 16:11 ` Don Slutz [this message]
2015-07-10 8:40 ` [PATCH v12 0/8] Xen VMware tools support Jan Beulich
2015-07-10 9:07 ` Wei Liu
2015-07-28 3:18 ` Don Slutz
2015-07-28 14:32 ` Konrad Rzeszutek Wilk
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55916E36.6010707@Gmail.com \
--to=don.slutz@gmail.com \
--cc=Aravind.Gopalakrishnan@amd.com \
--cc=George.Dunlap@eu.citrix.com \
--cc=andrew.cooper3@citrix.com \
--cc=boris.ostrovsky@oracle.com \
--cc=dslutz@verizon.com \
--cc=eddie.dong@intel.com \
--cc=ian.campbell@citrix.com \
--cc=ian.jackson@eu.citrix.com \
--cc=jbeulich@suse.com \
--cc=jun.nakajima@intel.com \
--cc=keir@xen.org \
--cc=kevin.tian@intel.com \
--cc=stefano.stabellini@eu.citrix.com \
--cc=suravee.suthikulpanit@amd.com \
--cc=tim@xen.org \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.