]> Git Repo - linux.git/commitdiff
KVM: Move arm64's MMU notifier trace events to generic code
authorSean Christopherson <[email protected]>
Fri, 26 Mar 2021 02:19:48 +0000 (19:19 -0700)
committerPaolo Bonzini <[email protected]>
Sat, 17 Apr 2021 12:30:56 +0000 (08:30 -0400)
Move arm64's MMU notifier trace events into common code in preparation
for doing the hva->gfn lookup in common code.  The alternative would be
to trace the gfn instead of hva, but that's not obviously better and
could also be done in common code.  Tracing the notifiers is also quite
handy for debug regardless of architecture.

Remove a completely redundant tracepoint from PPC e500.

Signed-off-by: Sean Christopherson <[email protected]>
Message-Id: <20210326021957.1424875[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
arch/arm64/kvm/mmu.c
arch/arm64/kvm/trace_arm.h
arch/powerpc/kvm/e500_mmu_host.c
arch/powerpc/kvm/trace_booke.h
include/trace/events/kvm.h
virt/kvm/kvm_main.c

index 8711894db8c2248e3b9953d6550ec81230e490da..4b7e1e327337bdf5dea74ff28e3b3a257ca5bce3 100644 (file)
@@ -1111,7 +1111,6 @@ int kvm_unmap_hva_range(struct kvm *kvm,
        if (!kvm->arch.mmu.pgt)
                return 0;
 
-       trace_kvm_unmap_hva_range(start, end);
        handle_hva_to_gpa(kvm, start, end, &kvm_unmap_hva_handler, &flags);
        return 0;
 }
@@ -1141,8 +1140,6 @@ int kvm_set_spte_hva(struct kvm *kvm, unsigned long hva, pte_t pte)
        if (!kvm->arch.mmu.pgt)
                return 0;
 
-       trace_kvm_set_spte_hva(hva);
-
        /*
         * We've moved a page around, probably through CoW, so let's treat it
         * just like a translation fault and clean the cache to the PoC.
@@ -1173,7 +1170,7 @@ int kvm_age_hva(struct kvm *kvm, unsigned long start, unsigned long end)
 {
        if (!kvm->arch.mmu.pgt)
                return 0;
-       trace_kvm_age_hva(start, end);
+
        return handle_hva_to_gpa(kvm, start, end, kvm_age_hva_handler, NULL);
 }
 
@@ -1181,7 +1178,7 @@ int kvm_test_age_hva(struct kvm *kvm, unsigned long hva)
 {
        if (!kvm->arch.mmu.pgt)
                return 0;
-       trace_kvm_test_age_hva(hva);
+
        return handle_hva_to_gpa(kvm, hva, hva + PAGE_SIZE,
                                 kvm_test_age_hva_handler, NULL);
 }
index ff0444352bba3eea5dfe8f1634a3d615a552b0f3..33e4e7dd27199acb57822e5654d97d5e9ae0ca9c 100644 (file)
@@ -135,72 +135,6 @@ TRACE_EVENT(kvm_mmio_emulate,
                  __entry->vcpu_pc, __entry->instr, __entry->cpsr)
 );
 
-TRACE_EVENT(kvm_unmap_hva_range,
-       TP_PROTO(unsigned long start, unsigned long end),
-       TP_ARGS(start, end),
-
-       TP_STRUCT__entry(
-               __field(        unsigned long,  start           )
-               __field(        unsigned long,  end             )
-       ),
-
-       TP_fast_assign(
-               __entry->start          = start;
-               __entry->end            = end;
-       ),
-
-       TP_printk("mmu notifier unmap range: %#016lx -- %#016lx",
-                 __entry->start, __entry->end)
-);
-
-TRACE_EVENT(kvm_set_spte_hva,
-       TP_PROTO(unsigned long hva),
-       TP_ARGS(hva),
-
-       TP_STRUCT__entry(
-               __field(        unsigned long,  hva             )
-       ),
-
-       TP_fast_assign(
-               __entry->hva            = hva;
-       ),
-
-       TP_printk("mmu notifier set pte hva: %#016lx", __entry->hva)
-);
-
-TRACE_EVENT(kvm_age_hva,
-       TP_PROTO(unsigned long start, unsigned long end),
-       TP_ARGS(start, end),
-
-       TP_STRUCT__entry(
-               __field(        unsigned long,  start           )
-               __field(        unsigned long,  end             )
-       ),
-
-       TP_fast_assign(
-               __entry->start          = start;
-               __entry->end            = end;
-       ),
-
-       TP_printk("mmu notifier age hva: %#016lx -- %#016lx",
-                 __entry->start, __entry->end)
-);
-
-TRACE_EVENT(kvm_test_age_hva,
-       TP_PROTO(unsigned long hva),
-       TP_ARGS(hva),
-
-       TP_STRUCT__entry(
-               __field(        unsigned long,  hva             )
-       ),
-
-       TP_fast_assign(
-               __entry->hva            = hva;
-       ),
-
-       TP_printk("mmu notifier test age hva: %#016lx", __entry->hva)
-);
-
 TRACE_EVENT(kvm_set_way_flush,
            TP_PROTO(unsigned long vcpu_pc, bool cache),
            TP_ARGS(vcpu_pc, cache),
index ed0c9c43d0cf14cc8a4fd57d72cd74b36ff644ed..648aefe1a3e74392b75f5fa41c7fcc2bacf7cec4 100644 (file)
@@ -723,8 +723,6 @@ int kvmppc_load_last_inst(struct kvm_vcpu *vcpu,
 
 static int kvm_unmap_hva(struct kvm *kvm, unsigned long hva)
 {
-       trace_kvm_unmap_hva(hva);
-
        /*
         * Flush all shadow tlb entries everywhere. This is slow, but
         * we are 100% sure that we catch the to be unmapped page
index 3837842986aa46ee4ac80f4759d1051d9221c87c..eff6e82dbcd45443fde9ae21fa28380e0df01ba7 100644 (file)
@@ -69,21 +69,6 @@ TRACE_EVENT(kvm_exit,
                )
 );
 
-TRACE_EVENT(kvm_unmap_hva,
-       TP_PROTO(unsigned long hva),
-       TP_ARGS(hva),
-
-       TP_STRUCT__entry(
-               __field(        unsigned long,  hva             )
-       ),
-
-       TP_fast_assign(
-               __entry->hva            = hva;
-       ),
-
-       TP_printk("unmap hva 0x%lx\n", __entry->hva)
-);
-
 TRACE_EVENT(kvm_booke206_stlb_write,
        TP_PROTO(__u32 mas0, __u32 mas8, __u32 mas1, __u64 mas2, __u64 mas7_3),
        TP_ARGS(mas0, mas8, mas1, mas2, mas7_3),
index 49d7d0fe29f6fb875d701215047686e5df82fbd7..200eb7465530f6b74d4673c56328a32335b172bf 100644 (file)
@@ -462,6 +462,72 @@ TRACE_EVENT(kvm_dirty_ring_exit,
        TP_printk("vcpu %d", __entry->vcpu_id)
 );
 
+TRACE_EVENT(kvm_unmap_hva_range,
+       TP_PROTO(unsigned long start, unsigned long end),
+       TP_ARGS(start, end),
+
+       TP_STRUCT__entry(
+               __field(        unsigned long,  start           )
+               __field(        unsigned long,  end             )
+       ),
+
+       TP_fast_assign(
+               __entry->start          = start;
+               __entry->end            = end;
+       ),
+
+       TP_printk("mmu notifier unmap range: %#016lx -- %#016lx",
+                 __entry->start, __entry->end)
+);
+
+TRACE_EVENT(kvm_set_spte_hva,
+       TP_PROTO(unsigned long hva),
+       TP_ARGS(hva),
+
+       TP_STRUCT__entry(
+               __field(        unsigned long,  hva             )
+       ),
+
+       TP_fast_assign(
+               __entry->hva            = hva;
+       ),
+
+       TP_printk("mmu notifier set pte hva: %#016lx", __entry->hva)
+);
+
+TRACE_EVENT(kvm_age_hva,
+       TP_PROTO(unsigned long start, unsigned long end),
+       TP_ARGS(start, end),
+
+       TP_STRUCT__entry(
+               __field(        unsigned long,  start           )
+               __field(        unsigned long,  end             )
+       ),
+
+       TP_fast_assign(
+               __entry->start          = start;
+               __entry->end            = end;
+       ),
+
+       TP_printk("mmu notifier age hva: %#016lx -- %#016lx",
+                 __entry->start, __entry->end)
+);
+
+TRACE_EVENT(kvm_test_age_hva,
+       TP_PROTO(unsigned long hva),
+       TP_ARGS(hva),
+
+       TP_STRUCT__entry(
+               __field(        unsigned long,  hva             )
+       ),
+
+       TP_fast_assign(
+               __entry->hva            = hva;
+       ),
+
+       TP_printk("mmu notifier test age hva: %#016lx", __entry->hva)
+);
+
 #endif /* _TRACE_KVM_MAIN_H */
 
 /* This part must be outside protection */
index 383df23514b9390c467379ec9a739eda14a72bf2..d1de843b7618b5273bf35cc71a26ff6c83f2ded9 100644 (file)
@@ -459,6 +459,8 @@ static void kvm_mmu_notifier_change_pte(struct mmu_notifier *mn,
        struct kvm *kvm = mmu_notifier_to_kvm(mn);
        int idx;
 
+       trace_kvm_set_spte_hva(address);
+
        idx = srcu_read_lock(&kvm->srcu);
 
        KVM_MMU_LOCK(kvm);
@@ -478,6 +480,8 @@ static int kvm_mmu_notifier_invalidate_range_start(struct mmu_notifier *mn,
        struct kvm *kvm = mmu_notifier_to_kvm(mn);
        int need_tlb_flush = 0, idx;
 
+       trace_kvm_unmap_hva_range(range->start, range->end);
+
        idx = srcu_read_lock(&kvm->srcu);
        KVM_MMU_LOCK(kvm);
        /*
@@ -548,6 +552,8 @@ static int kvm_mmu_notifier_clear_flush_young(struct mmu_notifier *mn,
        struct kvm *kvm = mmu_notifier_to_kvm(mn);
        int young, idx;
 
+       trace_kvm_age_hva(start, end);
+
        idx = srcu_read_lock(&kvm->srcu);
        KVM_MMU_LOCK(kvm);
 
@@ -569,6 +575,8 @@ static int kvm_mmu_notifier_clear_young(struct mmu_notifier *mn,
        struct kvm *kvm = mmu_notifier_to_kvm(mn);
        int young, idx;
 
+       trace_kvm_age_hva(start, end);
+
        idx = srcu_read_lock(&kvm->srcu);
        KVM_MMU_LOCK(kvm);
        /*
@@ -598,6 +606,8 @@ static int kvm_mmu_notifier_test_young(struct mmu_notifier *mn,
        struct kvm *kvm = mmu_notifier_to_kvm(mn);
        int young, idx;
 
+       trace_kvm_test_age_hva(address);
+
        idx = srcu_read_lock(&kvm->srcu);
        KVM_MMU_LOCK(kvm);
        young = kvm_test_age_hva(kvm, address);
This page took 0.075371 seconds and 4 git commands to generate.