[PATCH v7 09/15] perf: cs-etm: Move mapping of Trace ID and cpu into helper function

Suzuki K Poulose suzuki.poulose at arm.com
Tue Jan 17 04:04:21 PST 2023


Hi Mike


On 16/01/2023 12:49, Mike Leach wrote:
> The information to associate Trace ID and CPU will be changing.
> 
> Drivers will start outputting this as a hardware ID packet in the data
> file which if present will be used in preference to the AUXINFO values.
> 
> To prepare for this we provide a helper functions to do the individual ID
> mapping, and one to extract the IDs from the completed metadata blocks.
> 
> Signed-off-by: Mike Leach <mike.leach at linaro.org>
> Reviewed-by: James Clark <james.clark at arm.com>
> Acked-by: Suzuki K Poulose <suzuki.poulose at arm.com>
> ---
>   tools/include/linux/coresight-pmu.h |  5 ++
>   tools/perf/util/cs-etm.c            | 91 +++++++++++++++++++----------
>   tools/perf/util/cs-etm.h            | 14 ++++-
>   3 files changed, 77 insertions(+), 33 deletions(-)
> 

...

> diff --git a/tools/perf/util/cs-etm.c b/tools/perf/util/cs-etm.c
> index 33303d03c2fa..f77260b9253e 100644
> --- a/tools/perf/util/cs-etm.c
> +++ b/tools/perf/util/cs-etm.c

...

>   int cs_etm__process_auxtrace_info_full(union perf_event *event,
>   				       struct perf_session *session)
>   {
> @@ -2755,7 +2809,7 @@ int cs_etm__process_auxtrace_info_full(union perf_event *event,
>   	int event_header_size = sizeof(struct perf_event_header);
>   	int total_size = auxtrace_info->header.size;
>   	int priv_size = 0;
> -	int num_cpu, trcidr_idx;
> +	int num_cpu;
>   	int err = 0;
>   	int i, j;
>   	u64 *ptr = NULL;
> @@ -2794,23 +2848,13 @@ int cs_etm__process_auxtrace_info_full(union perf_event *event,
>   				cs_etm__create_meta_blk(ptr, &i,
>   							CS_ETM_PRIV_MAX,
>   							CS_ETM_NR_TRC_PARAMS_V0);
> -
> -			/* The traceID is our handle */
> -			trcidr_idx = CS_ETM_ETMTRACEIDR;
> -
>   		} else if (ptr[i] == __perf_cs_etmv4_magic) {
>   			metadata[j] =
>   				cs_etm__create_meta_blk(ptr, &i,
>   							CS_ETMV4_PRIV_MAX,
>   							CS_ETMV4_NR_TRC_PARAMS_V0);
> -
> -			/* The traceID is our handle */
> -			trcidr_idx = CS_ETMV4_TRCTRACEIDR;
>   		} else if (ptr[i] == __perf_cs_ete_magic) {
>   			metadata[j] = cs_etm__create_meta_blk(ptr, &i, CS_ETE_PRIV_MAX, -1);
> -
> -			/* ETE shares first part of metadata with ETMv4 */
> -			trcidr_idx = CS_ETMV4_TRCTRACEIDR;
>   		} else {
>   			ui__error("CS ETM Trace: Unrecognised magic number %#"PRIx64". File could be from a newer version of perf.\n",
>   				  ptr[i]);
> @@ -2822,26 +2866,6 @@ int cs_etm__process_auxtrace_info_full(union perf_event *event,
>   			err = -ENOMEM;
>   			goto err_free_metadata;
>   		}
> -
> -		/* Get an RB node for this CPU */
> -		inode = intlist__findnew(traceid_list, metadata[j][trcidr_idx]);
> -
> -		/* Something went wrong, no need to continue */
> -		if (!inode) {
> -			err = -ENOMEM;
> -			goto err_free_metadata;
> -		}
> -
> -		/*
> -		 * The node for that CPU should not be taken.
> -		 * Back out if that's the case.
> -		 */
> -		if (inode->priv) {
> -			err = -EINVAL;
> -			goto err_free_metadata;
> -		}
> -		/* All good, associate the traceID with the metadata pointer */
> -		inode->priv = metadata[j];


This gives me a build error as below :

util/cs-etm.c: In function ‘cs_etm__process_auxtrace_info_full’:
util/cs-etm.c:2808:19: error: unused variable ‘inode’ 
[-Werror=unused-variable]
  2808 |  struct int_node *inode;
       |                   ^~~~~


I have folded the following fix in:

diff --git a/tools/perf/util/cs-etm.c b/tools/perf/util/cs-etm.c
index f77260b9253e..413a89b22fec 100644
--- a/tools/perf/util/cs-etm.c
+++ b/tools/perf/util/cs-etm.c
@@ -2805,7 +2805,6 @@ int cs_etm__process_auxtrace_info_full(union 
perf_event *event,
  {
         struct perf_record_auxtrace_info *auxtrace_info = 
&event->auxtrace_info;
         struct cs_etm_auxtrace *etm = NULL;
-       struct int_node *inode;
         int event_header_size = sizeof(struct perf_event_header);
         int total_size = auxtrace_info->header.size;
         int priv_size = 0;


Thanks
Suzuki




More information about the linux-arm-kernel mailing list