From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jerone Young Subject: Re: [PATCH] kvm: kvmtrace: kvm_trace in kernel for supporting big_endian Date: Wed, 11 Jun 2008 14:53:41 -0500 Message-ID: <1213214021.6672.6.camel@thinkpadL> References: <08DF4D958216244799FC84F3514D70F00169206D@pdsmsx415.ccr.corp.intel.com> Reply-To: jyoung5@us.ibm.com Mime-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org To: "Tan, Li" Return-path: Received: from e2.ny.us.ibm.com ([32.97.182.142]:59825 "EHLO e2.ny.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754043AbYFKTxo (ORCPT ); Wed, 11 Jun 2008 15:53:44 -0400 Received: from d01relay02.pok.ibm.com (d01relay02.pok.ibm.com [9.56.227.234]) by e2.ny.us.ibm.com (8.13.8/8.13.8) with ESMTP id m5BJrhF5022335 for ; Wed, 11 Jun 2008 15:53:43 -0400 Received: from d01av03.pok.ibm.com (d01av03.pok.ibm.com [9.56.224.217]) by d01relay02.pok.ibm.com (8.13.8/8.13.8/NCO v9.0) with ESMTP id m5BJrhlM145036 for ; Wed, 11 Jun 2008 15:53:43 -0400 Received: from d01av03.pok.ibm.com (loopback [127.0.0.1]) by d01av03.pok.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id m5BJrgCP007179 for ; Wed, 11 Jun 2008 15:53:43 -0400 In-Reply-To: <08DF4D958216244799FC84F3514D70F00169206D@pdsmsx415.ccr.corp.intel.com> Sender: kvm-owner@vger.kernel.org List-ID: This patch is not in yet. Wanted to make sure that it doesn't fall off the radar. Please include upstream. Acked-by: Jerone Young On Fri, 2008-05-23 at 14:54 +0800, Tan, Li wrote: > From 8f1cd69b77054681bbb7e81a1a2d31b887db9fbb Mon Sep 17 00:00:00 2001 > From: Tan Li > Date: Fri, 23 May 2008 14:41:17 +0800 > Subject: [PATCH] kvm: kvmtrace: kvm_trace in kernel for supporting > big_endian > > Currently kvmtrace is not portable. This will prevent from copying a > trace > file from big-endian target to little-endian workstation for analysis. > In the patch, kernel outputs metadata containing a magic number to trace > log. > > Signed-off-by: Tan Li > > --- > include/linux/kvm.h | 4 ++-- > virt/kvm/kvm_trace.c | 18 ++++++++++++------ > 2 files changed, 14 insertions(+), 8 deletions(-) > > diff --git a/include/linux/kvm.h b/include/linux/kvm.h > index a281afe..ca08cb1 100644 > --- a/include/linux/kvm.h > +++ b/include/linux/kvm.h > @@ -294,14 +294,14 @@ struct kvm_trace_rec { > __u32 vcpu_id; > union { > struct { > - __u32 cycle_lo, cycle_hi; > + __u64 cycle_u64; > __u32 extra_u32[KVM_TRC_EXTRA_MAX]; > } cycle; > struct { > __u32 extra_u32[KVM_TRC_EXTRA_MAX]; > } nocycle; > } u; > -}; > +} __attribute__((packed)); > > #define KVMIO 0xAE > > diff --git a/virt/kvm/kvm_trace.c b/virt/kvm/kvm_trace.c > index 0e49547..58141f3 100644 > --- a/virt/kvm/kvm_trace.c > +++ b/virt/kvm/kvm_trace.c > @@ -72,11 +72,7 @@ static void kvm_add_trace(void *probe_private, void > *call_data, > rec.cycle_in = p->cycle_in; > > if (rec.cycle_in) { > - u64 cycle = 0; > - > - cycle = get_cycles(); > - rec.u.cycle.cycle_lo = (u32)cycle; > - rec.u.cycle.cycle_hi = (u32)(cycle >> 32); > + rec.u.cycle.cycle_u64 = get_cycles(); > > for (i = 0; i < rec.extra_u32; i++) > rec.u.cycle.extra_u32[i] = va_arg(*args, u32); > @@ -114,8 +110,18 @@ static int kvm_subbuf_start_callback(struct > rchan_buf *buf, void *subbuf, > { > struct kvm_trace *kt; > > - if (!relay_buf_full(buf)) > + if (!relay_buf_full(buf)) { > + if (!prev_subbuf) { > + /* > + * executed only once when the channel is opened > + * save metadata as first record > + */ > + subbuf_start_reserve(buf, sizeof(u32)); > + *(u32 *)subbuf = 0x12345678; > + } > + > return 1; > + } > > kt = buf->chan->private_data; > atomic_inc(&kt->lost_records);