On Tue, 9 May 2023 13:12:02 +0200 Nico Boehr <nrb@xxxxxxxxxxxxx> wrote: > The gmap notifier is called whenever something in the gmap structures this is a little bit too oversimplified; the gmap notifier is only called for ptes (or pmds for hugetlbfs) that have the notifier bit set (used for prefix or vsie) > changes. 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@xxxxxxxxxxxxx> apart for the above nit, looks quite straightforward > --- > arch/s390/kvm/kvm-s390.c | 2 ++ > arch/s390/kvm/trace-s390.h | 23 +++++++++++++++++++++++ > 2 files changed, 25 insertions(+) > > diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c > index b012645a5a7c..f66953bdabe4 100644 > --- a/arch/s390/kvm/kvm-s390.c > +++ b/arch/s390/kvm/kvm-s390.c > @@ -3981,6 +3981,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) > diff --git a/arch/s390/kvm/trace-s390.h b/arch/s390/kvm/trace-s390.h > index 6f0209d45164..5dabd0b64d6e 100644 > --- a/arch/s390/kvm/trace-s390.h > +++ b/arch/s390/kvm/trace-s390.h > @@ -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 */ >