lkml.org 
[lkml]   [2008]   [Sep]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 22/40] KVM: ppc: adds trace points for ppc tlb activity
    Date
    From: Jerone Young <jyoung5@us.ibm.com>

    This patch adds trace points to track powerpc TLB activities using the
    KVM_TRACE infrastructure.

    Signed-off-by: Jerone Young <jyoung5@us.ibm.com>
    Signed-off-by: Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>
    Signed-off-by: Avi Kivity <avi@qumranet.com>
    ---
    arch/powerpc/kvm/44x_tlb.c | 15 ++++++++++++++-
    arch/powerpc/kvm/emulate.c | 4 ++++
    include/linux/kvm.h | 3 +++
    3 files changed, 21 insertions(+), 1 deletions(-)

    diff --git a/arch/powerpc/kvm/44x_tlb.c b/arch/powerpc/kvm/44x_tlb.c
    index 5a5602d..a207d16 100644
    --- a/arch/powerpc/kvm/44x_tlb.c
    +++ b/arch/powerpc/kvm/44x_tlb.c
    @@ -19,6 +19,7 @@

    #include <linux/types.h>
    #include <linux/string.h>
    +#include <linux/kvm.h>
    #include <linux/kvm_host.h>
    #include <linux/highmem.h>
    #include <asm/mmu-44x.h>
    @@ -175,6 +176,10 @@ void kvmppc_mmu_map(struct kvm_vcpu *vcpu, u64 gvaddr, gfn_t gfn, u64 asid,
    stlbe->word1 = (hpaddr & 0xfffffc00) | ((hpaddr >> 32) & 0xf);
    stlbe->word2 = kvmppc_44x_tlb_shadow_attrib(flags,
    vcpu->arch.msr & MSR_PR);
    +
    + KVMTRACE_5D(STLB_WRITE, vcpu, victim,
    + stlbe->tid, stlbe->word0, stlbe->word1, stlbe->word2,
    + handler);
    }

    void kvmppc_mmu_invalidate(struct kvm_vcpu *vcpu, gva_t eaddr,
    @@ -204,6 +209,9 @@ void kvmppc_mmu_invalidate(struct kvm_vcpu *vcpu, gva_t eaddr,

    kvmppc_44x_shadow_release(vcpu, i);
    stlbe->word0 = 0;
    + KVMTRACE_5D(STLB_INVAL, vcpu, i,
    + stlbe->tid, stlbe->word0, stlbe->word1,
    + stlbe->word2, handler);
    }
    up_write(&current->mm->mmap_sem);
    }
    @@ -217,8 +225,13 @@ void kvmppc_mmu_priv_switch(struct kvm_vcpu *vcpu, int usermode)
    /* XXX Replace loop with fancy data structures. */
    down_write(&current->mm->mmap_sem);
    for (i = 0; i <= tlb_44x_hwater; i++) {
    + struct tlbe *stlbe = &vcpu->arch.shadow_tlb[i];
    +
    kvmppc_44x_shadow_release(vcpu, i);
    - vcpu->arch.shadow_tlb[i].word0 = 0;
    + stlbe->word0 = 0;
    + KVMTRACE_5D(STLB_INVAL, vcpu, i,
    + stlbe->tid, stlbe->word0, stlbe->word1,
    + stlbe->word2, handler);
    }
    up_write(&current->mm->mmap_sem);
    }
    diff --git a/arch/powerpc/kvm/emulate.c b/arch/powerpc/kvm/emulate.c
    index 8c605d0..4a3e274 100644
    --- a/arch/powerpc/kvm/emulate.c
    +++ b/arch/powerpc/kvm/emulate.c
    @@ -170,6 +170,10 @@ static int kvmppc_emul_tlbwe(struct kvm_vcpu *vcpu, u32 inst)
    kvmppc_mmu_map(vcpu, eaddr, raddr >> PAGE_SHIFT, asid, flags);
    }

    + KVMTRACE_5D(GTLB_WRITE, vcpu, index,
    + tlbe->tid, tlbe->word0, tlbe->word1, tlbe->word2,
    + handler);
    +
    return EMULATE_DONE;
    }

    diff --git a/include/linux/kvm.h b/include/linux/kvm.h
    index 5d08f11..e21a505 100644
    --- a/include/linux/kvm.h
    +++ b/include/linux/kvm.h
    @@ -471,5 +471,8 @@ struct kvm_trace_rec {
    #define KVM_TRC_LMSW (KVM_TRC_HANDLER + 0x13)
    #define KVM_TRC_APIC_ACCESS (KVM_TRC_HANDLER + 0x14)
    #define KVM_TRC_TDP_FAULT (KVM_TRC_HANDLER + 0x15)
    +#define KVM_TRC_GTLB_WRITE (KVM_TRC_HANDLER + 0x16)
    +#define KVM_TRC_STLB_WRITE (KVM_TRC_HANDLER + 0x17)
    +#define KVM_TRC_STLB_INVAL (KVM_TRC_HANDLER + 0x18)

    #endif
    --
    1.6.0.1


    \
     
     \ /
      Last update: 2008-09-23 15:59    [W:0.025 / U:118.340 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site