Lines Matching full:metadata
79 u64 **metadata; member
114 /* RB tree for quick conversion between traceID and metadata pointers */
150 u64 *metadata; in cs_etm__get_magic() local
156 metadata = inode->priv; in cs_etm__get_magic()
157 *magic = metadata[CS_ETM_MAGIC]; in cs_etm__get_magic()
164 u64 *metadata; in cs_etm__get_cpu() local
170 metadata = inode->priv; in cs_etm__get_cpu()
171 *cpu = (int)metadata[CS_ETM_CPU]; in cs_etm__get_cpu()
191 static enum cs_etm_pid_fmt cs_etm__init_pid_fmt(u64 *metadata) in cs_etm__init_pid_fmt() argument
195 if (metadata[CS_ETM_MAGIC] == __perf_cs_etmv3_magic) { in cs_etm__init_pid_fmt()
196 val = metadata[CS_ETM_ETMCR]; in cs_etm__init_pid_fmt()
201 val = metadata[CS_ETMV4_TRCCONFIGR]; in cs_etm__init_pid_fmt()
236 /* All good, associate the traceID with the metadata pointer */ in cs_etm__map_trace_id()
263 * update metadata trace ID from the value found in the AUX_HW_INFO packet.
286 * Get a metadata for a specific cpu from an array.
292 u64 *metadata = NULL; in get_cpu_data() local
295 if (etm->metadata[i][CS_ETM_CPU] == (u64)cpu) { in get_cpu_data()
296 metadata = etm->metadata[i]; in get_cpu_data()
301 return metadata; in get_cpu_data()
332 /* get access to the etm metadata */ in cs_etm__process_aux_output_hw_id()
334 if (!etm || !etm->metadata) in cs_etm__process_aux_output_hw_id()
384 * the correct trace ID into the metadata for setting up decoders later. in cs_etm__process_aux_output_hw_id()
647 u64 **metadata = etm->metadata; in cs_etm__set_trace_param_etmv3() local
650 t_params[idx].etmv3.reg_ctrl = metadata[idx][CS_ETM_ETMCR]; in cs_etm__set_trace_param_etmv3()
651 t_params[idx].etmv3.reg_trc_id = metadata[idx][CS_ETM_ETMTRACEIDR]; in cs_etm__set_trace_param_etmv3()
657 u64 **metadata = etm->metadata; in cs_etm__set_trace_param_etmv4() local
660 t_params[idx].etmv4.reg_idr0 = metadata[idx][CS_ETMV4_TRCIDR0]; in cs_etm__set_trace_param_etmv4()
661 t_params[idx].etmv4.reg_idr1 = metadata[idx][CS_ETMV4_TRCIDR1]; in cs_etm__set_trace_param_etmv4()
662 t_params[idx].etmv4.reg_idr2 = metadata[idx][CS_ETMV4_TRCIDR2]; in cs_etm__set_trace_param_etmv4()
663 t_params[idx].etmv4.reg_idr8 = metadata[idx][CS_ETMV4_TRCIDR8]; in cs_etm__set_trace_param_etmv4()
664 t_params[idx].etmv4.reg_configr = metadata[idx][CS_ETMV4_TRCCONFIGR]; in cs_etm__set_trace_param_etmv4()
665 t_params[idx].etmv4.reg_traceidr = metadata[idx][CS_ETMV4_TRCTRACEIDR]; in cs_etm__set_trace_param_etmv4()
671 u64 **metadata = etm->metadata; in cs_etm__set_trace_param_ete() local
674 t_params[idx].ete.reg_idr0 = metadata[idx][CS_ETE_TRCIDR0]; in cs_etm__set_trace_param_ete()
675 t_params[idx].ete.reg_idr1 = metadata[idx][CS_ETE_TRCIDR1]; in cs_etm__set_trace_param_ete()
676 t_params[idx].ete.reg_idr2 = metadata[idx][CS_ETE_TRCIDR2]; in cs_etm__set_trace_param_ete()
677 t_params[idx].ete.reg_idr8 = metadata[idx][CS_ETE_TRCIDR8]; in cs_etm__set_trace_param_ete()
678 t_params[idx].ete.reg_configr = metadata[idx][CS_ETE_TRCCONFIGR]; in cs_etm__set_trace_param_ete()
679 t_params[idx].ete.reg_traceidr = metadata[idx][CS_ETE_TRCTRACEIDR]; in cs_etm__set_trace_param_ete()
680 t_params[idx].ete.reg_devarch = metadata[idx][CS_ETE_TRCDEVARCH]; in cs_etm__set_trace_param_ete()
692 architecture = etm->metadata[i][CS_ETM_MAGIC]; in cs_etm__init_trace_params()
696 etmidr = etm->metadata[i][CS_ETM_ETMIDR]; in cs_etm__init_trace_params()
863 /* First remove all traceID/metadata nodes for the RB tree */ in cs_etm__free()
870 zfree(&aux->metadata[i]); in cs_etm__free()
872 zfree(&aux->metadata); in cs_etm__free()
1038 /* Use metadata to fill in trace parameters for trace decoder */ in cs_etm__alloc_queue()
2867 * fill out the nr_param value in the metadata we create.
2872 u64 *metadata = NULL; in cs_etm__create_meta_blk() local
2877 metadata = zalloc(sizeof(*metadata) * out_blk_size); in cs_etm__create_meta_blk()
2878 if (!metadata) in cs_etm__create_meta_blk()
2886 /* read version 0 info block into a version 1 metadata block */ in cs_etm__create_meta_blk()
2888 metadata[CS_ETM_MAGIC] = buff_in[i + CS_ETM_MAGIC]; in cs_etm__create_meta_blk()
2889 metadata[CS_ETM_CPU] = buff_in[i + CS_ETM_CPU]; in cs_etm__create_meta_blk()
2890 metadata[CS_ETM_NR_TRC_PARAMS] = nr_in_params; in cs_etm__create_meta_blk()
2893 metadata[k + 1] = buff_in[i + k]; in cs_etm__create_meta_blk()
2908 metadata[k] = buff_in[i + k]; in cs_etm__create_meta_blk()
2911 metadata[CS_ETM_NR_TRC_PARAMS] = nr_out_params - nr_cmn_params; in cs_etm__create_meta_blk()
2917 return metadata; in cs_etm__create_meta_blk()
3121 #define HAS_PARAM(j, type, param) (metadata[(j)][CS_ETM_NR_TRC_PARAMS] <= \
3128 static bool cs_etm__has_virtual_ts(u64 **metadata, int num_cpu) in cs_etm__has_virtual_ts() argument
3133 switch (metadata[j][CS_ETM_MAGIC]) { in cs_etm__has_virtual_ts()
3135 if (HAS_PARAM(j, ETMV4, TS_SOURCE) || metadata[j][CS_ETMV4_TS_SOURCE] != 1) in cs_etm__has_virtual_ts()
3139 if (HAS_PARAM(j, ETE, TS_SOURCE) || metadata[j][CS_ETE_TS_SOURCE] != 1) in cs_etm__has_virtual_ts()
3150 /* map trace ids to correct metadata block, from information in metadata */
3151 static int cs_etm__map_trace_ids_metadata(int num_cpu, u64 **metadata) in cs_etm__map_trace_ids_metadata() argument
3158 cs_etm_magic = metadata[i][CS_ETM_MAGIC]; in cs_etm__map_trace_ids_metadata()
3161 metadata[i][CS_ETM_ETMTRACEIDR] &= CORESIGHT_TRACE_ID_VAL_MASK; in cs_etm__map_trace_ids_metadata()
3162 trace_chan_id = (u8)(metadata[i][CS_ETM_ETMTRACEIDR]); in cs_etm__map_trace_ids_metadata()
3166 metadata[i][CS_ETMV4_TRCTRACEIDR] &= CORESIGHT_TRACE_ID_VAL_MASK; in cs_etm__map_trace_ids_metadata()
3167 trace_chan_id = (u8)(metadata[i][CS_ETMV4_TRCTRACEIDR]); in cs_etm__map_trace_ids_metadata()
3173 err = cs_etm__map_trace_id(trace_chan_id, metadata[i]); in cs_etm__map_trace_ids_metadata()
3181 * If we found AUX_HW_ID packets, then set any metadata marked as unused to the
3184 static int cs_etm__clear_unused_trace_ids_metadata(int num_cpu, u64 **metadata) in cs_etm__clear_unused_trace_ids_metadata() argument
3190 cs_etm_magic = metadata[i][CS_ETM_MAGIC]; in cs_etm__clear_unused_trace_ids_metadata()
3193 if (metadata[i][CS_ETM_ETMTRACEIDR] & CORESIGHT_TRACE_ID_UNUSED_FLAG) in cs_etm__clear_unused_trace_ids_metadata()
3194 metadata[i][CS_ETM_ETMTRACEIDR] = CORESIGHT_TRACE_ID_UNUSED_VAL; in cs_etm__clear_unused_trace_ids_metadata()
3198 if (metadata[i][CS_ETMV4_TRCTRACEIDR] & CORESIGHT_TRACE_ID_UNUSED_FLAG) in cs_etm__clear_unused_trace_ids_metadata()
3199 metadata[i][CS_ETMV4_TRCTRACEIDR] = CORESIGHT_TRACE_ID_UNUSED_VAL; in cs_etm__clear_unused_trace_ids_metadata()
3223 u64 **metadata = NULL; in cs_etm__process_auxtrace_info_full() local
3226 * Create an RB tree for traceID-metadata tuple. Since the conversion in cs_etm__process_auxtrace_info_full()
3237 metadata = zalloc(sizeof(*metadata) * num_cpu); in cs_etm__process_auxtrace_info_full()
3238 if (!metadata) { in cs_etm__process_auxtrace_info_full()
3247 * The metadata is stored in the auxtrace_info section and encodes in cs_etm__process_auxtrace_info_full()
3254 metadata[j] = in cs_etm__process_auxtrace_info_full()
3259 metadata[j] = in cs_etm__process_auxtrace_info_full()
3264 metadata[j] = cs_etm__create_meta_blk(ptr, &i, CS_ETE_PRIV_MAX, -1); in cs_etm__process_auxtrace_info_full()
3272 if (!metadata[j]) { in cs_etm__process_auxtrace_info_full()
3281 * global metadata, and each cpu's metadata respectively. in cs_etm__process_auxtrace_info_full()
3303 etm->pid_fmt = cs_etm__init_pid_fmt(metadata[0]); in cs_etm__process_auxtrace_info_full()
3322 etm->metadata = metadata; in cs_etm__process_auxtrace_info_full()
3326 etm->has_virtual_ts = cs_etm__has_virtual_ts(metadata, num_cpu); in cs_etm__process_auxtrace_info_full()
3358 * Map Trace ID values to CPU metadata. in cs_etm__process_auxtrace_info_full()
3360 * Trace metadata will always contain Trace ID values from the legacy algorithm. If the in cs_etm__process_auxtrace_info_full()
3361 * files has been recorded by a "new" perf updated to handle AUX_HW_ID then the metadata in cs_etm__process_auxtrace_info_full()
3371 * the metadata. We then set any remaining metadata values with the used flag to a in cs_etm__process_auxtrace_info_full()
3375 * then we map Trace ID values to CPU directly from the metadata - clearing any unused in cs_etm__process_auxtrace_info_full()
3379 /* first scan for AUX_OUTPUT_HW_ID records to map trace ID values to CPU metadata */ in cs_etm__process_auxtrace_info_full()
3387 /* if HW ID found then clear any unused metadata ID values */ in cs_etm__process_auxtrace_info_full()
3389 err = cs_etm__clear_unused_trace_ids_metadata(num_cpu, metadata); in cs_etm__process_auxtrace_info_full()
3390 /* otherwise, this is a file with metadata values only, map from metadata */ in cs_etm__process_auxtrace_info_full()
3392 err = cs_etm__map_trace_ids_metadata(num_cpu, metadata); in cs_etm__process_auxtrace_info_full()
3410 /* No need to check @metadata[j], free(NULL) is supported */ in cs_etm__process_auxtrace_info_full()
3412 zfree(&metadata[j]); in cs_etm__process_auxtrace_info_full()
3413 zfree(&metadata); in cs_etm__process_auxtrace_info_full()