lkml.org 
[lkml]   [2009]   [Oct]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 7/9] KVM: SVM: Add tracepoint for invlpga instruction
    Date
    This patch adds a tracepoint for the event that the guest
    executed the INVLPGA instruction.

    Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
    ---
    arch/x86/kvm/svm.c | 3 +++
    arch/x86/kvm/trace.h | 23 +++++++++++++++++++++++
    arch/x86/kvm/x86.c | 1 +
    3 files changed, 27 insertions(+), 0 deletions(-)

    diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
    index 78a391c..ba18fb7 100644
    --- a/arch/x86/kvm/svm.c
    +++ b/arch/x86/kvm/svm.c
    @@ -1976,6 +1976,9 @@ static int invlpga_interception(struct vcpu_svm *svm)
    struct kvm_vcpu *vcpu = &svm->vcpu;
    nsvm_printk("INVLPGA\n");

    + trace_kvm_invlpga(svm->vmcb->save.rip, vcpu->arch.regs[VCPU_REGS_RCX],
    + vcpu->arch.regs[VCPU_REGS_RAX]);
    +
    /* Let's treat INVLPGA the same as INVLPG (can be optimized!) */
    kvm_mmu_invlpg(vcpu, vcpu->arch.regs[VCPU_REGS_RAX]);

    diff --git a/arch/x86/kvm/trace.h b/arch/x86/kvm/trace.h
    index 3cc8f44..7e1f08e 100644
    --- a/arch/x86/kvm/trace.h
    +++ b/arch/x86/kvm/trace.h
    @@ -469,6 +469,29 @@ TRACE_EVENT(kvm_nested_intr_vmexit,

    TP_printk("rip: 0x%016llx\n", __entry->rip)
    );
    +
    +/*
    + * Tracepoint for nested #vmexit because of interrupt pending
    + */
    +TRACE_EVENT(kvm_invlpga,
    + TP_PROTO(__u64 rip, int asid, u64 address),
    + TP_ARGS(rip, asid, address),
    +
    + TP_STRUCT__entry(
    + __field( __u64, rip )
    + __field( int, asid )
    + __field( __u64, address )
    + ),
    +
    + TP_fast_assign(
    + __entry->rip = rip;
    + __entry->asid = asid;
    + __entry->address = address;
    + ),
    +
    + TP_printk("rip: 0x%016llx asid: %d address: 0x%016llx\n",
    + __entry->rip, __entry->asid, __entry->address)
    +);
    #endif /* _TRACE_KVM_H */

    /* This part must be outside protection */
    diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
    index 877f910..1153d92 100644
    --- a/arch/x86/kvm/x86.c
    +++ b/arch/x86/kvm/x86.c
    @@ -4984,3 +4984,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_nested_vmrun);
    EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_nested_vmexit);
    EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_nested_vmexit_inject);
    EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_nested_intr_vmexit);
    +EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_invlpga);
    --
    1.6.4.3



    \
     
     \ /
      Last update: 2009-10-09 16:17    [W:0.053 / U:61.256 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site