diff mbox

[v6,1/2] perf,kvm/powerpc: Add kvm_perf.h for powerpc

Message ID 1441003681-10259-1-git-send-email-hemant@linux.vnet.ibm.com (mailing list archive)
State Not Applicable
Delegated to: Michael Ellerman
Headers show

Commit Message

Hemant Kumar Aug. 31, 2015, 6:48 a.m. UTC
To analyze the exit events with perf, we need to export the related
tracepoints through kvm_perf.h. kvm_perf.h is to be added in the
arch/powerpc directory, where the kvm tracepoints needed to trace the
KVM exit events are defined.

To indicate that the tracepoints are book3s_hv specific, suffix _HV has
been added to the tracepoint macros. Additionally, we also need to
define the generic macros (albeit, with null strings) suffix, because
the preprocessor looks for them in the generic code in builtin-kvm.c.

Signed-off-by: Hemant Kumar <hemant@linux.vnet.ibm.com>
---
Changes since v5:
- Moved back the tracepoint definitions from kvm_perf_book3s.h to kvm_perf.h

 arch/powerpc/include/uapi/asm/kvm_perf.h | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)
 create mode 100644 arch/powerpc/include/uapi/asm/kvm_perf.h

Comments

Arnaldo Carvalho de Melo Aug. 31, 2015, 8:13 p.m. UTC | #1
Em Mon, Aug 31, 2015 at 12:18:00PM +0530, Hemant Kumar escreveu:
> To analyze the exit events with perf, we need to export the related
> tracepoints through kvm_perf.h. kvm_perf.h is to be added in the
> arch/powerpc directory, where the kvm tracepoints needed to trace the
> KVM exit events are defined.
> 
> To indicate that the tracepoints are book3s_hv specific, suffix _HV has
> been added to the tracepoint macros. Additionally, we also need to
> define the generic macros (albeit, with null strings) suffix, because
> the preprocessor looks for them in the generic code in builtin-kvm.c.
> 
> Signed-off-by: Hemant Kumar <hemant@linux.vnet.ibm.com>

humm, there are two patchkits, this one with two patches, the other with
3, this one for the kernel, the other one for tools/, but for the tools/
part to work, does this one needs to be applied first?

Should I try to process the 5 together, applying thest two first?

I see there are no acks from powerpc arch maintainers, how should we
proceed here? If there are no problems with the arch bits, and if it is
just to enable the tooling part, again, should I process the 5 as just
one series?

- Arnaldo

> ---
> Changes since v5:
> - Moved back the tracepoint definitions from kvm_perf_book3s.h to kvm_perf.h
> 
>  arch/powerpc/include/uapi/asm/kvm_perf.h | 21 +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
>  create mode 100644 arch/powerpc/include/uapi/asm/kvm_perf.h
> 
> diff --git a/arch/powerpc/include/uapi/asm/kvm_perf.h b/arch/powerpc/include/uapi/asm/kvm_perf.h
> new file mode 100644
> index 0000000..68f105e
> --- /dev/null
> +++ b/arch/powerpc/include/uapi/asm/kvm_perf.h
> @@ -0,0 +1,21 @@
> +#ifndef _ASM_POWERPC_KVM_PERF_H
> +#define _ASM_POWERPC_KVM_PERF_H
> +
> +#include <asm/kvm.h>
> +
> +#define DECODE_STR_LEN 40
> +
> +#define VCPU_ID "vcpu_id"
> +
> +/* For Book3S_HV machines */
> +#define KVM_ENTRY_TRACE_HV "kvm_hv:kvm_guest_enter"
> +#define KVM_EXIT_TRACE_HV "kvm_hv:kvm_guest_exit"
> +#define KVM_EXIT_REASON_HV "trap"
> +
> +/* This is to shut the compiler up */
> +#define KVM_ENTRY_TRACE ""
> +#define KVM_EXIT_TRACE ""
> +#define KVM_EXIT_REASON ""
> +
> +
> +#endif /* _ASM_POWERPC_KVM_PERF_H */
> -- 
> 1.9.3
Hemant Kumar Sept. 1, 2015, 6:48 a.m. UTC | #2
(cc'ing Michael Ellerman with this reply)

Hi Arnaldo,

On 09/01/2015 01:43 AM, Arnaldo Carvalho de Melo wrote:
> Em Mon, Aug 31, 2015 at 12:18:00PM +0530, Hemant Kumar escreveu:
>> To analyze the exit events with perf, we need to export the related
>> tracepoints through kvm_perf.h. kvm_perf.h is to be added in the
>> arch/powerpc directory, where the kvm tracepoints needed to trace the
>> KVM exit events are defined.
>>
>> To indicate that the tracepoints are book3s_hv specific, suffix _HV has
>> been added to the tracepoint macros. Additionally, we also need to
>> define the generic macros (albeit, with null strings) suffix, because
>> the preprocessor looks for them in the generic code in builtin-kvm.c.
>>
>> Signed-off-by: Hemant Kumar <hemant@linux.vnet.ibm.com>
> humm, there are two patchkits, this one with two patches, the other with
> 3, this one for the kernel, the other one for tools/, but for the tools/
> part to work, does this one needs to be applied first?
>
> Should I try to process the 5 together, applying thest two first?

Yes, this patchset needs to be applied before applying the other patchset,
since there is a direct dependency on these two for the tooling part to
work.

> I see there are no acks from powerpc arch maintainers, how should we
> proceed here? If there are no problems with the arch bits, and if it is
> just to enable the tooling part, again, should I process the 5 as just
> one series?

The reason to split the earlier patchset into two was to separate the
tooling/perf/ and arch/powerpc/ side patches, as asked by Michael..

Here is the link to that discussion :
http://www.mail-archive.com/linuxppc-dev@lists.ozlabs.org/msg86916.html

If Michael is ok with the patches, you can process all the 5 patches 
together. Michael?


> - Arnaldo
>
>> ---
>> Changes since v5:
>> - Moved back the tracepoint definitions from kvm_perf_book3s.h to kvm_perf.h
>>
>>   arch/powerpc/include/uapi/asm/kvm_perf.h | 21 +++++++++++++++++++++
>>   1 file changed, 21 insertions(+)
>>   create mode 100644 arch/powerpc/include/uapi/asm/kvm_perf.h
>>
>> diff --git a/arch/powerpc/include/uapi/asm/kvm_perf.h b/arch/powerpc/include/uapi/asm/kvm_perf.h
>> new file mode 100644
>> index 0000000..68f105e
>> --- /dev/null
>> +++ b/arch/powerpc/include/uapi/asm/kvm_perf.h
>> @@ -0,0 +1,21 @@
>> +#ifndef _ASM_POWERPC_KVM_PERF_H
>> +#define _ASM_POWERPC_KVM_PERF_H
>> +
>> +#include <asm/kvm.h>
>> +
>> +#define DECODE_STR_LEN 40
>> +
>> +#define VCPU_ID "vcpu_id"
>> +
>> +/* For Book3S_HV machines */
>> +#define KVM_ENTRY_TRACE_HV "kvm_hv:kvm_guest_enter"
>> +#define KVM_EXIT_TRACE_HV "kvm_hv:kvm_guest_exit"
>> +#define KVM_EXIT_REASON_HV "trap"
>> +
>> +/* This is to shut the compiler up */
>> +#define KVM_ENTRY_TRACE ""
>> +#define KVM_EXIT_TRACE ""
>> +#define KVM_EXIT_REASON ""
>> +
>> +
>> +#endif /* _ASM_POWERPC_KVM_PERF_H */
>> -- 
>> 1.9.3
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev
Arnaldo Carvalho de Melo Sept. 4, 2015, 8:51 p.m. UTC | #3
Em Tue, Sep 01, 2015 at 12:18:47PM +0530, Hemant Kumar escreveu:
> >Should I try to process the 5 together, applying thest two first?
 
> Yes, this patchset needs to be applied before applying the other patchset,
> since there is a direct dependency on these two for the tooling part to
> work.
 
> >I see there are no acks from powerpc arch maintainers, how should we
> >proceed here? If there are no problems with the arch bits, and if it is
> >just to enable the tooling part, again, should I process the 5 as just
> >one series?
 
> The reason to split the earlier patchset into two was to separate the
> tooling/perf/ and arch/powerpc/ side patches, as asked by Michael..
 
> Here is the link to that discussion :
> http://www.mail-archive.com/linuxppc-dev@lists.ozlabs.org/msg86916.html
 
> If Michael is ok with the patches, you can process all the 5 patches
> together. Michael?

Michael?

- Arnaldo
Michael Ellerman Sept. 7, 2015, 5:10 a.m. UTC | #4
On Fri, 2015-09-04 at 17:51 -0300, Arnaldo Carvalho de Melo wrote:
> Em Tue, Sep 01, 2015 at 12:18:47PM +0530, Hemant Kumar escreveu:
> > >Should I try to process the 5 together, applying thest two first?
>  
> > Yes, this patchset needs to be applied before applying the other patchset,
> > since there is a direct dependency on these two for the tooling part to
> > work.
>  
> > >I see there are no acks from powerpc arch maintainers, how should we
> > >proceed here? If there are no problems with the arch bits, and if it is
> > >just to enable the tooling part, again, should I process the 5 as just
> > >one series?
>  
> > The reason to split the earlier patchset into two was to separate the
> > tooling/perf/ and arch/powerpc/ side patches, as asked by Michael..
>  
> > Here is the link to that discussion :
> > http://www.mail-archive.com/linuxppc-dev@lists.ozlabs.org/msg86916.html
>  
> > If Michael is ok with the patches, you can process all the 5 patches
> > together. Michael?
> 
> Michael?

I'm not particularly happy with it.

Can we at least remove this hunk from the uapi header:

+/* This is to shut the compiler up */
+#define KVM_ENTRY_TRACE ""
+#define KVM_EXIT_TRACE ""
+#define KVM_EXIT_REASON ""


cheers
Hemant Kumar Sept. 8, 2015, 4:56 a.m. UTC | #5
On 09/07/2015 10:40 AM, Michael Ellerman wrote:
> On Fri, 2015-09-04 at 17:51 -0300, Arnaldo Carvalho de Melo wrote:
>> Em Tue, Sep 01, 2015 at 12:18:47PM +0530, Hemant Kumar escreveu:
>>>> Should I try to process the 5 together, applying thest two first?
>>   
>>> Yes, this patchset needs to be applied before applying the other patchset,
>>> since there is a direct dependency on these two for the tooling part to
>>> work.
>>   
>>>> I see there are no acks from powerpc arch maintainers, how should we
>>>> proceed here? If there are no problems with the arch bits, and if it is
>>>> just to enable the tooling part, again, should I process the 5 as just
>>>> one series?
>>   
>>> The reason to split the earlier patchset into two was to separate the
>>> tooling/perf/ and arch/powerpc/ side patches, as asked by Michael..
>>   
>>> Here is the link to that discussion :
>>> http://www.mail-archive.com/linuxppc-dev@lists.ozlabs.org/msg86916.html
>>   
>>> If Michael is ok with the patches, you can process all the 5 patches
>>> together. Michael?
>> Michael?
> I'm not particularly happy with it.
>
> Can we at least remove this hunk from the uapi header:
>
> +/* This is to shut the compiler up */
> +#define KVM_ENTRY_TRACE ""
> +#define KVM_EXIT_TRACE ""
> +#define KVM_EXIT_REASON ""
>

Agreed, I didn't like this too, but I kept this because of the generic
perf userspace code that looks for KVM_{ENTRY,EXIT}_TRACE and
KVM_EXIT_REASON. We can remove this and put this hunk in the
userspace side.

Arnaldo,
Can we remove the dependency on uapi altogether (also suggested
by Scott) because it doesn't seem to fulfill much purpose? Rather,
hardcode the events in the userspace completely (since, tracepoint
event names are unlikely to change) ? Some of what is being done
by x86 already in kvm-stat.c where its defining kvm_events_tp[] and
its not using the macros, rather, the tracepoints directly. Macros are
only being used in builtin-kvm.c where the tracepoint names are
matched with KVM_{ENTRY,EXIT}_TRACE and when we are looking
for the key KVM_EXIT_REASON.
Michael Ellerman Sept. 8, 2015, 8:33 a.m. UTC | #6
On Tue, 2015-09-08 at 10:26 +0530, Hemant Kumar wrote:
> 
> On 09/07/2015 10:40 AM, Michael Ellerman wrote:
> > On Fri, 2015-09-04 at 17:51 -0300, Arnaldo Carvalho de Melo wrote:
> >> Em Tue, Sep 01, 2015 at 12:18:47PM +0530, Hemant Kumar escreveu:
> >>>> Should I try to process the 5 together, applying thest two first?
> >>   
> >>> Yes, this patchset needs to be applied before applying the other patchset,
> >>> since there is a direct dependency on these two for the tooling part to
> >>> work.
> >>   
> >>>> I see there are no acks from powerpc arch maintainers, how should we
> >>>> proceed here? If there are no problems with the arch bits, and if it is
> >>>> just to enable the tooling part, again, should I process the 5 as just
> >>>> one series?
> >>   
> >>> The reason to split the earlier patchset into two was to separate the
> >>> tooling/perf/ and arch/powerpc/ side patches, as asked by Michael..
> >>   
> >>> Here is the link to that discussion :
> >>> http://www.mail-archive.com/linuxppc-dev@lists.ozlabs.org/msg86916.html
> >>   
> >>> If Michael is ok with the patches, you can process all the 5 patches
> >>> together. Michael?
> >> Michael?
> > I'm not particularly happy with it.
> >
> > Can we at least remove this hunk from the uapi header:
> >
> > +/* This is to shut the compiler up */
> > +#define KVM_ENTRY_TRACE ""
> > +#define KVM_EXIT_TRACE ""
> > +#define KVM_EXIT_REASON ""
> >
> 
> Agreed, I didn't like this too, but I kept this because of the generic
> perf userspace code that looks for KVM_{ENTRY,EXIT}_TRACE and
> KVM_EXIT_REASON. We can remove this and put this hunk in the
> userspace side.

Yes please.

> Arnaldo,
> Can we remove the dependency on uapi altogether (also suggested
> by Scott) because it doesn't seem to fulfill much purpose? Rather,
> hardcode the events in the userspace completely (since, tracepoint
> event names are unlikely to change) ? Some of what is being done
> by x86 already in kvm-stat.c where its defining kvm_events_tp[] and
> its not using the macros, rather, the tracepoints directly. Macros are
> only being used in builtin-kvm.c where the tracepoint names are
> matched with KVM_{ENTRY,EXIT}_TRACE and when we are looking
> for the key KVM_EXIT_REASON.

That would certainly make me a lot happier with it.

Also think about what would happen if the tracepoint names *did* change. The
perf code would want to try and work with both the old and new names, so at
that point you'd end up hard coding the names in the perf code anyway.

cheers
Arnaldo Carvalho de Melo Sept. 8, 2015, 3:10 p.m. UTC | #7
Em Tue, Sep 08, 2015 at 06:33:45PM +1000, Michael Ellerman escreveu:
> On Tue, 2015-09-08 at 10:26 +0530, Hemant Kumar wrote:
> > 
> > On 09/07/2015 10:40 AM, Michael Ellerman wrote:
> > > On Fri, 2015-09-04 at 17:51 -0300, Arnaldo Carvalho de Melo wrote:
> > >> Em Tue, Sep 01, 2015 at 12:18:47PM +0530, Hemant Kumar escreveu:
> > >>>> Should I try to process the 5 together, applying thest two first?
> > >>   
> > >>> Yes, this patchset needs to be applied before applying the other patchset,
> > >>> since there is a direct dependency on these two for the tooling part to
> > >>> work.
> > >>   
> > >>>> I see there are no acks from powerpc arch maintainers, how should we
> > >>>> proceed here? If there are no problems with the arch bits, and if it is
> > >>>> just to enable the tooling part, again, should I process the 5 as just
> > >>>> one series?
> > >>   
> > >>> The reason to split the earlier patchset into two was to separate the
> > >>> tooling/perf/ and arch/powerpc/ side patches, as asked by Michael..
> > >>   
> > >>> Here is the link to that discussion :
> > >>> http://www.mail-archive.com/linuxppc-dev@lists.ozlabs.org/msg86916.html
> > >>   
> > >>> If Michael is ok with the patches, you can process all the 5 patches
> > >>> together. Michael?
> > >> Michael?
> > > I'm not particularly happy with it.
> > >
> > > Can we at least remove this hunk from the uapi header:
> > >
> > > +/* This is to shut the compiler up */
> > > +#define KVM_ENTRY_TRACE ""
> > > +#define KVM_EXIT_TRACE ""
> > > +#define KVM_EXIT_REASON ""
> > >
> > 
> > Agreed, I didn't like this too, but I kept this because of the generic
> > perf userspace code that looks for KVM_{ENTRY,EXIT}_TRACE and
> > KVM_EXIT_REASON. We can remove this and put this hunk in the
> > userspace side.
> 
> Yes please.
> 
> > Arnaldo,
> > Can we remove the dependency on uapi altogether (also suggested
> > by Scott) because it doesn't seem to fulfill much purpose? Rather,
> > hardcode the events in the userspace completely (since, tracepoint
> > event names are unlikely to change) ? Some of what is being done
> > by x86 already in kvm-stat.c where its defining kvm_events_tp[] and
> > its not using the macros, rather, the tracepoints directly. Macros are
> > only being used in builtin-kvm.c where the tracepoint names are
> > matched with KVM_{ENTRY,EXIT}_TRACE and when we are looking
> > for the key KVM_EXIT_REASON.
> 
> That would certainly make me a lot happier with it.
> 
> Also think about what would happen if the tracepoint names *did* change. The
> perf code would want to try and work with both the old and new names, so at
> that point you'd end up hard coding the names in the perf code anyway.

Yeah, seems like we have a plan :-)

- Arnaldo
diff mbox

Patch

diff --git a/arch/powerpc/include/uapi/asm/kvm_perf.h b/arch/powerpc/include/uapi/asm/kvm_perf.h
new file mode 100644
index 0000000..68f105e
--- /dev/null
+++ b/arch/powerpc/include/uapi/asm/kvm_perf.h
@@ -0,0 +1,21 @@ 
+#ifndef _ASM_POWERPC_KVM_PERF_H
+#define _ASM_POWERPC_KVM_PERF_H
+
+#include <asm/kvm.h>
+
+#define DECODE_STR_LEN 40
+
+#define VCPU_ID "vcpu_id"
+
+/* For Book3S_HV machines */
+#define KVM_ENTRY_TRACE_HV "kvm_hv:kvm_guest_enter"
+#define KVM_EXIT_TRACE_HV "kvm_hv:kvm_guest_exit"
+#define KVM_EXIT_REASON_HV "trap"
+
+/* This is to shut the compiler up */
+#define KVM_ENTRY_TRACE ""
+#define KVM_EXIT_TRACE ""
+#define KVM_EXIT_REASON ""
+
+
+#endif /* _ASM_POWERPC_KVM_PERF_H */