Re: [PATCH v2 0/6] kvm: x86: export TSC information to user-space

From: Luiz Capitulino
Date: Fri Sep 16 2016 - 10:59:18 EST


On Fri, 16 Sep 2016 16:56:34 +0200
Paolo Bonzini <pbonzini@xxxxxxxxxx> wrote:

> On 16/09/2016 16:27, Luiz Capitulino wrote:
> > [Introduction will follow]
> >
> > Changelog
> > ---------
> >
> > v2
> >
> > - add tsc_offset field to struct kvm_vcpu_arch
> > - drop read_tsc_offset()
> > - add per-vcpu dir entries in debugfs
> > - export TSC scaling info (besides TSC offset)
> > - export the TSC offset as a signed number
> > - drop patch that wrongly tried to improve error
> > handling in kvm_create_vm_debugfs()
>
> I've tested this patch on an AMD machine with TSC scaling, so I'm
> pushing it shortly to kvm/queue.

Thanks for the testing! Btw, I don't mind letting it sit on the
list for a few days for review (well, no submitter should mind
this).

>
> Paolo
>
> > Intro
> > -----
> >
> > This series exports a VM's TSC offset and TSC scaling
> > information to user-space via a new per-vcpu directory
> > in debugfs. For example:
> >
> > /sys/kernel/debug/kvm/66828-10/vcpu0/tsc-offset
> > /sys/kernel/debug/kvm/66828-10/vcpu0/tsc-scaling-ratio
> > /sys/kernel/debug/kvm/66828-10/vcpu0/tsc-scaling-ratio-frac-bits
> >
> > The TSC offset in particular is needed in user-space
> > in order for tracing tools, such as trace-cmd, to be
> > able to merge the host and guest traces using the
> > host TSC. This is explained in detail in this thread:
> >
> > [Qemu-devel] [RFC] host and guest kernel trace merging
> > https://lists.nongnu.org/archive/html/qemu-devel/2016-03/msg00887.html
> >
> > Luiz Capitulino (6):
> > kvm: x86: add tsc_offset field to struct kvm_vcpu_arch
> > kvm: x86: drop read_tsc_offset()
> > kvm: kvm_destroy_vm_debugfs(): check debugfs_stat_data pointer
> > kvm: add stubs for arch specific debugfs support
> > kvm: create per-vcpu dirs in debugfs
> > kvm: x86: export TSC information to user-space
> >
> > arch/arm/kvm/arm.c | 10 ++++++
> > arch/mips/kvm/mips.c | 10 ++++++
> > arch/powerpc/kvm/powerpc.c | 10 ++++++
> > arch/s390/kvm/kvm-s390.c | 10 ++++++
> > arch/x86/include/asm/kvm_host.h | 2 +-
> > arch/x86/kvm/Makefile | 2 +-
> > arch/x86/kvm/debugfs.c | 69 +++++++++++++++++++++++++++++++++++++++++
> > arch/x86/kvm/svm.c | 8 -----
> > arch/x86/kvm/vmx.c | 6 ----
> > arch/x86/kvm/x86.c | 12 +++++--
> > include/linux/kvm_host.h | 4 +++
> > virt/kvm/kvm_main.c | 40 ++++++++++++++++++++++--
> > 12 files changed, 161 insertions(+), 22 deletions(-)
> > create mode 100644 arch/x86/kvm/debugfs.c
> >
>