Robert.
Patch finally applied. Sorry about the delay.
Thanks.
On Fri, Apr 11, 2008 at 12:48 PM, Robert Richter <[EMAIL PROTECTED]> wrote:
> Signed-off-by: Robert Richter <[EMAIL PROTECTED]>
> ---
> docs/man3/libpfm_amd64.3 | 153
> ++++++++++++++++++++++++++++++++++++---------
> 1 files changed, 122 insertions(+), 31 deletions(-)
>
> diff --git a/docs/man3/libpfm_amd64.3 b/docs/man3/libpfm_amd64.3
> index 1c29ce3..c30c7f9 100644
> --- a/docs/man3/libpfm_amd64.3
> +++ b/docs/man3/libpfm_amd64.3
> @@ -1,43 +1,75 @@
> -.TH LIBPFM 3 "October, 2007" "" "Linux Programmer's Manual"
> +.TH LIBPFM 3 "April, 2008" "" "Linux Programmer's Manual"
> .SH NAME
> -libpfm_x86_64 - support for AMD64 processors
> +libpfm_amd64 - support for AMD64 processors
> .SH SYNOPSIS
> .nf
> .B #include <perfmon/pfmlib.h>
> .B #include <perfmon/pfmlib_amd64.h>
> .sp
> .SH DESCRIPTION
> -The libpfm library provides full support for the AMD64 processor family 15
> and 16 when
> -running in either 32 or 64 bit mode. The interface is defined in
> \fBpfmlib_amd64.h\fR. It consists
> -of a set of functions and structures which describe and allow access to the
> -AMD64 specific PMU features. Note that it does not support Intel EM64T
> processors.
> +The libpfm library provides full support for the AMD64 processor
> +families 0Fh and 10H (K8, Barcelona, Phenom) when running in either
> +32-bit or 64-bit mode. The interface is defined in
> +\fBpfmlib_amd64.h\fR. It consists of a set of functions and structures
> +which describe and allow access to the AMD64 specific PMU
> +features. Note that it only supports AMD processors.
> .sp
> -When AMD64 processor-specific features are needed to support a measurement
> their descriptions must be passed
> -as model-specific input arguments to the \fBpfm_dispatch_events()\fR
> function. The AMD64 processor-specific
> -input arguments are described in the \fBpfmlib_amd64_input_param_t\fR
> structure and the output
> -parameters in \fBpfmlib_amd64_output_param_t\fR. They are defined as
> follows:
> +When AMD64 processor-specific features are needed to support a
> +measurement, their descriptions must be passed as model-specific input
> +arguments to the \fBpfm_dispatch_events()\fR function. The AMD64
> +processor-specific input arguments are described in the
> +\fBpfmlib_amd64_input_param_t\fR structure and the output parameters
> +in \fBpfmlib_amd64_output_param_t\fR. They are defined as follows:
> .sp
> .nf
> typedef struct {
> - unsigned int cnt_mask;
> - unsigned int flags;
> + uint32_t cnt_mask;
> + uint32_t flags;
> } pfmlib_amd64_counter_t;
>
> typedef struct {
> - pfmlib_amd64_counter_t pfp_amd64_counters[PMU_AMD64_NUM_COUNTERS];
> - uint64_t reserved[4];
> + unsigned int maxcnt;
> + unsigned int options;
> +} ibs_param_t;
> +
> +typedef struct {
> + pfmlib_amd64_counter_t pfp_amd64_counters[PMU_AMD64_MAX_COUNTERS];
> + uint32_t flags;
> + uint32_t reserved1;
> + ibs_param_t ibsfetch;
> + ibs_param_t ibsop;
> + uint64_t reserved2;
> } pfmlib_amd64_input_param_t;
>
> typedef struct {
> - uint64_t reserved[8];
> + uint32_t ibsfetch_base;
> + uint32_t ibsop_base;
> + uint64_t reserved[7];
> } pfmlib_amd64_output_param_t;
> .fi
> -.sp
> -.sp
> -The X86-64 processor provides a few additional per-event features for
> -counters: thresholding, inversion, edge detection. They can be set using the
> -\fBpfp_amd64_counters\fR data structure for each event. The \fBflags\fR
> -field can be initialized as follows:
> +.LP
> +The \fBflags\fR field of \fBpfmlib_amd64_input_param_t\fR describes
> +which features of the PMU to use. Following use flags exist:
> +.TP
> +.B PFMLIB_AMD64_USE_IBSFETCH
> +Profile IBS fetch performance (see below under \fBINSTRUCTION BASED
> +SAMPLING\fR)
> +.TP
> +.B PFMLIB_AMD64_USE_IBSOP
> +Profile IBS execution performance (see below under \fBINSTRUCTION BASED
> +SAMPLING\fR)
> +.LP
> +Multiple features can be selected. Note that there are no use flags
> +needed for \fBADDITIONAL PER-EVENT FEATURES\fR.
> +.LP
> +Various typedefs for MSR encoding and decoding are available. See
> +\fBpfmlib_amd64.h\fR for details.
> +.SS ADDITIONAL PER-EVENT FEATURES
> +AMD64 processors provide a few additional per-event features for
> +counters: thresholding, inversion, edge detection,
> +virtualization. They can be set using the \fBpfp_amd64_counters\fR
> +data structure for each event. The \fBflags\fR field of
> +\fBpfmlib_amd64_counter_t\fR can be initialized as follows:
> .TP
> .B PFMLIB_AMD64_SEL_INV
> Inverse the results of the \fBcnt_mask\fR comparison when set
> @@ -46,22 +78,81 @@ Inverse the results of the \fBcnt_mask\fR comparison
> when set
> Enables edge detection of events.
> .TP
> .B PFMLIB_AMD64_SEL_GUEST
> -On AMD64 Family 10h processors only. Event is only measured when processor
> is in guest mode.
> +On AMD64 Family 10h processors only. Event is only measured when
> +processor is in guest mode.
> .TP
> .B PFMLIB_AMD64_SEL_HOST
> -On AMD64 Family 10h processors only. Event is only measured when processor
> is in host mode.
> +On AMD64 Family 10h processors only. Event is only measured when
> +processor is in host mode.
> .LP
> -
> -The \fBcnt_mask\fR field contains is used to set the event threshold.
> -The value of the counter is incremented each time the number of occurrences
> -per cycle of the event is greater or equal to the value of the field. When
> -zero all occurrences are counted.
> -.sp
> +The \fBcnt_mask\fR field is used to set the event threshold. The
> +value of the counter is incremented each time the number of
> +occurrences per cycle of the event is greater or equal to the value of
> +the field. When zero all occurrences are counted.
> +.SS INSTRUCTION BASED SAMPLING (IBS)
> +The libpfm_amd64 provides access to the model specific feature
> +Instruction Based Sampling (IBS). IBS has been introduced with family
> +10h.
> .LP
> +The IBS setup is using the structures \fBpfmlib_amd64_input_param_t\fR
> +and \fBpfmlib_amd64_output_param_t\fR with its members \fBflags\fR,
> +\fBibsfetch\fR, \fBibsop\fR, \fBibsfetch_base\fR,
> +\fBibsop_base\fR. The input arguments \fBibsop\fR and \fBibsfetch\fR
> +can be set in inp_mod (type \fBpfmlib_amd64_input_param_t\fR). The
> +corresponding \fBflags\fR must be set to enable a feature.
> +.LP
> +Both, IBS execution profiling and IBS fetch profiling, require a
> +maximum count value of the periodic counter (\fBmaxcnt\fR) as
> +parameter. This is a 20 bit value, bits 3:0 are always set to
> +zero. Additionally, there is an option (\fBoptions\fR) to enable
> +randomization (\fBIBS_OPTIONS_RANDEN\fR) for IBS fetch profiling.
> +.LP
> +The IBS registers IbsFetchCtl (0xC0011030) and IbsOpCtl (0xC0011033)
> +are available as PMC and PMD in Perfmon. The function
> +\fBpfm_dispatch_events()\fR initializes these registers according to
> +the input parameters in \fBpfmlib_amd64_input_param_t\fR.
> +.LP
> +Also, \fBpfm_dispatch_events()\fR passes back the index in pfp_pmds[]
> +of the IbsOpCtl and IbsFetchCtl register. For this there are the
> +entires \fBibsfetch_base\fR and \fBibsop_base\fR in
> +\fBpfmlib_amd64_output_param_t\fR. The index may vary depending on
> +other PMU settings, especially counter settings. If using the PMU with
> +only one IBS feature and no counters, the index of the base register
> +is 0.
> +.LP
> +Example code:
> +.LP
> +.nf
> + /* initialize IBS */
> + inp_mod.ibsop.maxcnt = 0xFFFF0;
> + inp_mod.flags |= PFMLIB_AMD64_USE_IBSOP;
> + ret = pfm_dispatch_events(NULL, &inp_mod, &outp, &outp_mod);
> + if (ret != PFMLIB_SUCCESS) { ... }
> +
> + /* setup PMU */
> + /* PMC_IBSOPCTL */
> + pc[0].reg_num = outp.pfp_pmcs[0].reg_num;
> + pc[0].reg_value = outp.pfp_pmcs[0].reg_value;
> + /* PMD_IBSOPCTL */
> + pd[0].reg_num = outp.pfp_pmds[0].reg_num;
> + pd[0].reg_value = 0;
> +
> + /* setup sampling */
> + pd[0].reg_flags = PFM_REGFL_OVFL_NOTIFY;
> + /* add range check here */
> + pd[0].reg_smpl_pmds[0] =
> + ((1UL << PMD_IBSOP_NUM) - 1) << outp.pfp_pmds[0].reg_num;
> +
> + /* write pc and pd to PMU */
> + ...
> +.fi
> .SH ERRORS
> Refer to the description of the \fBpfm_dispatch_events()\fR function for
> errors.
> .SH SEE ALSO
> pfm_dispatch_events(3) and set of examples shipped with the library
> -.SH AUTHOR
> -Stephane Eranian <[EMAIL PROTECTED]>
> +.SH AUTHORS
> +.nf
> +Stephane Eranian <[EMAIL PROTECTED]>
> +Robert Richter <[EMAIL PROTECTED]>
> +.if
> .PP
> --
> 1.5.3.7
>
>
>
-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Don't miss this year's exciting event. There's still time to save $100.
Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
perfmon2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/perfmon2-devel