[rfc 1/3] perf, x86: P4 PMU - describe config format

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Cyrill Gorcunov
Date: Tuesday, November 23, 2010 - 3:46 pm

Add description of .config in a sake of RAW events.
At least this should bring some light to those who
will be reading this code.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
CC: Lin Ming <ming.m.lin@intel.com>
CC: Stephane Eranian <eranian@google.com>
CC: Peter Zijlstra <peterz@infradead.org>
---
 arch/x86/include/asm/perf_event_p4.h |   62 ++++++++++++++++++++++++++++++-----
 1 file changed, 54 insertions(+), 8 deletions(-)

Index: linux-2.6.git/arch/x86/include/asm/perf_event_p4.h
=====================================================================
--- linux-2.6.git.orig/arch/x86/include/asm/perf_event_p4.h
+++ linux-2.6.git/arch/x86/include/asm/perf_event_p4.h
@@ -744,14 +744,6 @@ enum P4_ESCR_EMASKS {
 };
 
 /*
- * P4 PEBS specifics (Replay Event only)
- *
- * Format (bits):
- *   0-6: metric from P4_PEBS_METRIC enum
- *    7 : reserved
- *    8 : reserved
- * 9-11 : reserved
- *
  * Note we have UOP and PEBS bits reserved for now
  * just in case if we will need them once
  */
@@ -788,5 +780,59 @@ enum P4_PEBS_METRIC {
 	P4_PEBS_METRIC__max
 };
 
+/*
+ * Notes on internal configuration of ESCR+CCCR tuples
+ *
+ * Since P4 has quite the different architecture of
+ * performance registers in compare with "architectural"
+ * once and we have on 64 bits to keep configuration
+ * of performance event, the following trick is used.
+ *
+ * 1) Since both ESCR and CCCR registers have only low
+ *    32 bits valuable, we pack them into a single 64 bit
+ *    configuration. Low 32 bits of such config correspond
+ *    to low 32 bits of CCCR register and high 32 bits
+ *    correspond to low 32 bits of ESCR register.
+ *
+ * 2) The meaning of every bit of such config field can
+ *    be found in Intel SDM but it should be noted that
+ *    we "borrow" some reserved bits for own usage and
+ *    clean them or set to a proper value when we do
+ *    a real write to hardware registers.
+ *
+ * 3) The format of bits of config is the following
+ *    and should be either 0 or set to some predefined
+ *    values:
+ *
+ *    Low 32 bits
+ *    -----------
+ *      0-6: P4_PEBS_METRIC enum
+ *     7-11:                    reserved
+ *       12: Active thread
+ *    13-15:                    reserved (ESCR select)
+ *    16-17: Compare
+ *       18: Complement
+ *    20-23: Threshold
+ *       24: Edge
+ *       25:                    reserved (FORCE_OVF)
+ *       26:                    reserved (OVF_PMI_T0)
+ *       27:                    reserved (OVF_PMI_T1)
+ *    28-29:                    reserved
+ *       30:                    reserved (Cascade)
+ *       31:                    reserved (OVF)
+ *
+ *    High 32 bits
+ *    ------------
+ *        0:                    reserved (T1_USR)
+ *        1:                    reserved (T1_OS)
+ *        2:                    reserved (T0_USR)
+ *        3:                    reserved (T0_OS)
+ *        4: Tag Enable
+ *      5-8: Tag Value
+ *     9-24: Event Mask (may use P4_ESCR_EMASK_BIT helper)
+ *    25-30: enum P4_EVENTS
+ *       31:                    reserved (HT thread)
+ */
+
 #endif /* PERF_EVENT_P4_H */
 

--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[rfc 0/3] perf,x86: p4 pmu series, Cyrill Gorcunov, (Tue Nov 23, 3:46 pm)
[rfc 1/3] perf, x86: P4 PMU - describe config format, Cyrill Gorcunov, (Tue Nov 23, 3:46 pm)
Re: [rfc 1/3] perf, x86: P4 PMU - describe config format, Stephane Eranian, (Fri Nov 26, 3:57 am)
Re: [rfc 1/3] perf, x86: P4 PMU - describe config format, Cyrill Gorcunov, (Fri Nov 26, 4:14 am)
Re: [rfc 1/3] perf, x86: P4 PMU - describe config format, Cyrill Gorcunov, (Fri Nov 26, 4:32 am)
Re: [rfc 1/3] perf, x86: P4 PMU - describe config format, Stephane Eranian, (Fri Nov 26, 4:35 am)
Re: [rfc 1/3] perf, x86: P4 PMU - describe config format, Cyrill Gorcunov, (Fri Nov 26, 4:58 am)
Re: [rfc 1/3] perf, x86: P4 PMU - describe config format, Stephane Eranian, (Fri Nov 26, 5:46 am)
Re: [rfc 1/3] perf, x86: P4 PMU - describe config format, Stephane Eranian, (Fri Nov 26, 5:48 am)
Re: [rfc 1/3] perf, x86: P4 PMU - describe config format, Peter Zijlstra, (Fri Nov 26, 5:59 am)
Re: [rfc 1/3] perf, x86: P4 PMU - describe config format, Cyrill Gorcunov, (Fri Nov 26, 6:04 am)
Re: [rfc 1/3] perf, x86: P4 PMU - describe config format, Peter Zijlstra, (Fri Nov 26, 6:06 am)
Re: [rfc 1/3] perf, x86: P4 PMU - describe config format, Stephane Eranian, (Fri Nov 26, 6:07 am)
Re: [rfc 1/3] perf, x86: P4 PMU - describe config format, Cyrill Gorcunov, (Fri Nov 26, 6:07 am)
Re: [rfc 1/3] perf, x86: P4 PMU - describe config format, Stephane Eranian, (Fri Nov 26, 6:10 am)
Re: [rfc 1/3] perf, x86: P4 PMU - describe config format, Cyrill Gorcunov, (Fri Nov 26, 6:47 am)
Re: [rfc 1/3] perf, x86: P4 PMU - describe config format, Cyrill Gorcunov, (Fri Nov 26, 6:50 am)
Re: [rfc 1/3] perf, x86: P4 PMU - describe config format, Stephane Eranian, (Fri Nov 26, 6:54 am)
Re: [rfc 1/3] perf, x86: P4 PMU - describe config format, Cyrill Gorcunov, (Fri Nov 26, 8:27 am)
Re: [rfc 1/3] perf, x86: P4 PMU - describe config format, Stephane Eranian, (Fri Nov 26, 9:22 am)
Re: [rfc 1/3] perf, x86: P4 PMU - describe config format, Cyrill Gorcunov, (Fri Nov 26, 10:16 am)
Re: [rfc 1/3] perf, x86: P4 PMU - describe config format, Stephane Eranian, (Fri Nov 26, 11:05 am)
Re: [rfc 1/3] perf, x86: P4 PMU - describe config format, Cyrill Gorcunov, (Fri Nov 26, 1:11 pm)