Re: [PATCH v1 3/3] KVM: s390: add tracepoint in gmap notifier

Claudio Imbrenda
2023-05-09T11:49:02Z

On Tue, 9 May 2023 13:12:02 +0200
Nico Boehr <nrb@linux.ibm.com> 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@linux.ibm.com>

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 */
>