> From: "Xiao Guangrong" <xiaoguangrong@xxxxxxxxxxxxxxxxxx> > To: "Ulrich Obergfell" <uobergfe@xxxxxxxxxx>, kvm@xxxxxxxxxxxxxxx > Cc: pbonzini@xxxxxxxxxx > Sent: Monday, May 5, 2014 9:10:19 AM > Subject: Re: [PATCH 0/1] KVM: x86: improve the usability of the 'kvm_pio' tracepoint > > On 05/02/2014 11:57 PM, Ulrich Obergfell wrote: >> The current implementation of the 'kvm_pio' tracepoint in emulator_pio_in_out() >> only tells us that 'something' has been read from or written to an I/O port. To >> improve the usability of the tracepoint, I propose to include the value/content >> that has been read or written in the trace output. The proposed patch aims at >> the more common case where a single 8-bit or 16-bit or 32-bit value has been >> read or written -- it does not fully cover the case where 'count' is greater >> than one. >> >> This is an example of what the patch can do (trace of PCI config space access). >> >> - on the host >> >> # trace-cmd record -e kvm:kvm_pio -f "(port >= 0xcf8) && (port <= 0xcff)" >> /sys/kernel/debug/tracing/events/kvm/kvm_pio/filter >> Hit Ctrl^C to stop recording >> >> - in a Linux guest >> >> # dd if=/sys/bus/pci/devices/0000:00:06.0/config bs=2 count=4 | hexdump >> 4+0 records in >> 4+0 records out >> 8 bytes (8 B) copied, 0.000114056 s, 70.1 kB/s >> 0000000 1af4 1001 0507 0010 >> 0000008 >> >> - on the host >> >> # trace-cmd report >> ... >> qemu-kvm-23216 [001] 15211.994089: kvm_pio: pio_write >> at 0xcf8 size 4 count 1 val 0x80003000 >> qemu-kvm-23216 [001] 15211.994108: kvm_pio: pio_read >> at 0xcfc size 2 count 1 val 0x1af4 >> qemu-kvm-23216 [001] 15211.994129: kvm_pio: pio_write >> at 0xcf8 size 4 count 1 val 0x80003000 >> qemu-kvm-23216 [001] 15211.994136: kvm_pio: pio_read >> at 0xcfe size 2 count 1 val 0x1001 >> qemu-kvm-23216 [001] 15211.994143: kvm_pio: pio_write >> at 0xcf8 size 4 count 1 val 0x80003004 >> qemu-kvm-23216 [001] 15211.994150: kvm_pio: pio_read >> at 0xcfc size 2 count 1 val 0x507 >> qemu-kvm-23216 [001] 15211.994155: kvm_pio: pio_write >> at 0xcf8 size 4 count 1 val 0x80003004 >> qemu-kvm-23216 [001] 15211.994161: kvm_pio: pio_read >> at 0xcfe size 2 count 1 val 0x10 >> > > Nice. > > Could please check "perf kvm stat" to see if "--event=ioport" > can work after your patch? > > Reviewed-by: Xiao Guangrong <xiaoguangrong@xxxxxxxxxxxxxxxxxx> I've run a quick test with a local kernel - built from 3.15.0-rc1 source, including the proposed patch - in combination with the 'perf' package that is installed on my test machine. I didn't build a new 'perf' binary from 3.15.0-rc1 source. The following output of the 'perf kvm stat live --event=ioport -d 10' command looks reasonable. 17:10:29.036811 Analyze events for all VMs, all VCPUs: IO Port Access Samples Samples% Time% Min Time Max Time Avg time 0x177:PIN 35 20.00% 15.40% 1us 3us 1.68us ( +- 8.63% ) 0x376:PIN 30 17.14% 16.37% 1us 6us 2.08us ( +- 17.15% ) 0x170:POUT 15 8.57% 18.99% 2us 9us 4.83us ( +- 14.34% ) 0xc0ea:POUT 10 5.71% 6.57% 2us 2us 2.51us ( +- 5.06% ) 0xc0ea:PIN 10 5.71% 6.21% 1us 6us 2.37us ( +- 23.18% ) 0x176:POUT 10 5.71% 6.69% 1us 3us 2.55us ( +- 7.59% ) 0x170:PIN 5 2.86% 3.36% 2us 2us 2.56us ( +- 1.17% ) 0x171:PIN 5 2.86% 1.47% 1us 1us 1.12us ( +- 0.37% ) 0x171:POUT 5 2.86% 3.26% 2us 2us 2.49us ( +- 2.25% ) 0x172:PIN 5 2.86% 1.45% 1us 1us 1.11us ( +- 0.24% ) 0x172:POUT 5 2.86% 2.67% 1us 2us 2.04us ( +- 3.00% ) 0x173:PIN 5 2.86% 1.46% 1us 1us 1.11us ( +- 0.29% ) 0x173:POUT 5 2.86% 2.60% 1us 2us 1.99us ( +- 2.96% ) 0x174:PIN 5 2.86% 1.45% 1us 1us 1.11us ( +- 0.16% ) 0x174:POUT 5 2.86% 2.60% 1us 2us 1.99us ( +- 3.13% ) 0x175:PIN 5 2.86% 1.46% 1us 1us 1.12us ( +- 0.15% ) 0x175:POUT 5 2.86% 2.60% 1us 2us 1.98us ( +- 3.04% ) 0x176:PIN 5 2.86% 1.45% 1us 1us 1.11us ( +- 0.23% ) 0x177:POUT 5 2.86% 3.94% 2us 3us 3.01us ( +- 2.06% ) Total Samples:175, Total events handled time:381.58us. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html