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

From: Paolo Bonzini
Date: Fri Sep 16 2016 - 11:00:41 EST




On 16/09/2016 16:59, Luiz Capitulino wrote:
> 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).

That's what kvm/queue is for. :)

Paolo

>>
>> 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
>>>
>>
>