]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
KVM: s390: add tracepoint in gmap notifier
authorNico Boehr <nrb@linux.ibm.com>
Mon, 9 Oct 2023 09:32:53 +0000 (11:32 +0200)
committerJanosch Frank <frankja@linux.ibm.com>
Mon, 16 Oct 2023 12:54:29 +0000 (14:54 +0200)
The gmap notifier is called for changes in table entries with the
notifier bit set. To diagnose performance issues, it can be useful to
see what causes certain changes in the gmap.

Hence, add a tracepoint in the gmap notifier.

Signed-off-by: Nico Boehr <nrb@linux.ibm.com>
Acked-by: David Hildenbrand <david@redhat.com>
Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
Acked-by: Janosch Frank <frankja@linux.ibm.com>
Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
Link: https://lore.kernel.org/r/20231009093304.2555344-3-nrb@linux.ibm.com
Message-Id: <20231009093304.2555344-3-nrb@linux.ibm.com>

arch/s390/kvm/kvm-s390.c
arch/s390/kvm/trace-s390.h

index b42493110d766686ba59857a9f328fcc4aaab56d..11676b81e6bf57a03a01bdddf1f6df6175cd36a9 100644 (file)
@@ -4060,6 +4060,8 @@ static void kvm_gmap_notifier(struct gmap *gmap, unsigned long start,
        unsigned long prefix;
        unsigned long i;
 
+       trace_kvm_s390_gmap_notifier(start, end, gmap_is_shadow(gmap));
+
        if (gmap_is_shadow(gmap))
                return;
        if (start >= 1UL << 31)
index 6f0209d45164f0a6793288a883742f6b52f037d2..9ac92dbf680dbbe7703dd63945968b1cda46cf13 100644 (file)
@@ -333,6 +333,29 @@ TRACE_EVENT(kvm_s390_airq_suppressed,
                      __entry->id, __entry->isc)
        );
 
+/*
+ * Trace point for gmap notifier calls.
+ */
+TRACE_EVENT(kvm_s390_gmap_notifier,
+           TP_PROTO(unsigned long start, unsigned long end, unsigned int shadow),
+           TP_ARGS(start, end, shadow),
+
+           TP_STRUCT__entry(
+                   __field(unsigned long, start)
+                   __field(unsigned long, end)
+                   __field(unsigned int, shadow)
+                   ),
+
+           TP_fast_assign(
+                   __entry->start = start;
+                   __entry->end = end;
+                   __entry->shadow = shadow;
+                   ),
+
+           TP_printk("gmap notified (start:0x%lx end:0x%lx shadow:%d)",
+                     __entry->start, __entry->end, __entry->shadow)
+       );
+
 
 #endif /* _TRACE_KVMS390_H */