From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: Perf trace event parse errors for KVM events Date: Sun, 30 May 2010 11:10:38 +0300 Message-ID: <4C021D7E.1060705@redhat.com> References: <20100526123443.GB8905@stefan-thinkpad.transitives.com> <1275083157.22648.593.camel@gandalf.stny.rr.com> <4C00FF9B.9000107@redhat.com> <1275139177.22648.610.camel@gandalf.stny.rr.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit Cc: Stefan Hajnoczi , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, Frederic Weisbecker , Marcelo Tosatti , Peter Zijlstra , Stefan Hajnoczi To: rostedt@goodmis.org Return-path: In-Reply-To: <1275139177.22648.610.camel@gandalf.stny.rr.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: kvm.vger.kernel.org On 05/29/2010 04:19 PM, Steven Rostedt wrote: > On Sat, 2010-05-29 at 14:50 +0300, Avi Kivity wrote: > >> On 05/29/2010 12:45 AM, Steven Rostedt wrote: >> >>> On Fri, 2010-05-28 at 17:42 +0100, Stefan Hajnoczi wrote: >>> >>> >>>> I get parse errors when using Steven Rostedt's trace-cmd tool, too. >>>> >>>> Any ideas what is going on here? I can provide more info (e.g. trace >>>> files) if necessary. >>>> >>>> >>> Does trace-cmd fail on the same tracepoints? Have you checkout the >>> latest code?. >>> >>> I do know it fails on some of the KVM tracerpoints since the formatting >>> they use is obnoxious. >>> >>> >>> >> Isn't there a binary trace for this? >> >> > The pretty printing from the kernel handles this fine. But there's > pressure to pass the format to userspace in binary and have the tool > parse it. Currently it uses the print fmt to figure out how to parse. > > Using one of the examples that Stefan showed: > > kvmmmu/kvm_mmu_get_page: print fmt: "%s %s", ({ const char *ret = > p->buffer + p->len; static const char *access_str[] = { "---", "--x", > "w--", "w-x", "-u-", "-ux", "wu-", "wux" }; union kvm_mmu_page_role > role; role.word = REC->role; trace_seq_printf(p, "sp gfn %llx %u%s q%u%s > %s%s" " %snxe root %u %s%c", REC->gfn, role.level, role.cr4_pae ? " > pae" : "", role.quadrant, role.direct ? " direct" : "", > access_str[role.access], role.invalid ? " invalid" : "", role.nxe ? "" : > "!", REC->root_count, REC->unsync ? "unsync" : "sync", 0); ret; }), > REC->created ? "new" : "existing" > > > You need a full C parser/interpreter to understand the above. > Right. The tools can fall back to %x/%s based on the structure descriptor if they can't parse the format string. -- error compiling committee.c: too many arguments to function