Symbol: etm
drivers/clk/mxs/clk-imx23.c
151
clks[etm] = mxs_clk_gate("etm", "etm_div", ETM, 31);
drivers/clk/mxs/clk-imx28.c
223
clks[etm] = mxs_clk_gate("etm", "etm_div", ETM, 31);
drivers/pinctrl/nomadik/pinctrl-nomadik-db8500.c
920
DB8500_FUNC_GROUPS(etm, "etmr4_oc2_1", "etmr4_oc3_1");
drivers/pinctrl/nomadik/pinctrl-nomadik-db8500.c
979
FUNCTION(etm),
tools/perf/util/cs-etm.c
1055
return &etmq->etm->session->machines.host;
tools/perf/util/cs-etm.c
1067
return machines__find_guest(&etmq->etm->session->machines,
tools/perf/util/cs-etm.c
1074
return &etmq->etm->session->machines.host;
tools/perf/util/cs-etm.c
114
struct cs_etm_auxtrace *etm;
tools/perf/util/cs-etm.c
1225
static int cs_etm__setup_queue(struct cs_etm_auxtrace *etm,
tools/perf/util/cs-etm.c
1240
etmq->etm = etm;
tools/perf/util/cs-etm.c
1249
static int cs_etm__queue_first_cs_timestamp(struct cs_etm_auxtrace *etm,
tools/perf/util/cs-etm.c
1315
ret = auxtrace_heap__add(&etm->heap, cs_queue_nr, cs_timestamp);
tools/perf/util/cs-etm.c
1345
nr = etmq->etm->synth_opts.last_branch_sz - tidq->last_branch_pos;
tools/perf/util/cs-etm.c
1357
if (bs_src->nr >= etmq->etm->synth_opts.last_branch_sz) {
tools/perf/util/cs-etm.c
136
static int cs_etm__process_timestamped_queues(struct cs_etm_auxtrace *etm);
tools/perf/util/cs-etm.c
137
static int cs_etm__process_timeless_queues(struct cs_etm_auxtrace *etm,
tools/perf/util/cs-etm.c
142
static u64 *get_cpu_data(struct cs_etm_auxtrace *etm, int cpu);
tools/perf/util/cs-etm.c
1443
tidq->last_branch_pos = etmq->etm->synth_opts.last_branch_sz;
tools/perf/util/cs-etm.c
1458
if (bs->nr < etmq->etm->synth_opts.last_branch_sz)
tools/perf/util/cs-etm.c
1462
static int cs_etm__inject_event(struct cs_etm_auxtrace *etm, union perf_event *event,
tools/perf/util/cs-etm.c
1469
if (!evsel && etm->session && etm->session->evlist)
tools/perf/util/cs-etm.c
1470
evsel = evlist__id2evsel(etm->session->evlist, sample->id);
tools/perf/util/cs-etm.c
1495
queue = &etmq->etm->queues.queue_array[etmq->queue_nr];
tools/perf/util/cs-etm.c
1512
int fd = perf_data__fd(etmq->etm->session->data);
tools/perf/util/cs-etm.c
1580
return !!etmq->etm->timeless_decoding;
tools/perf/util/cs-etm.c
1614
struct cs_etm_auxtrace *etm = etmq->etm;
tools/perf/util/cs-etm.c
1616
if (etm->has_virtual_ts)
tools/perf/util/cs-etm.c
1617
return tsc_to_perf_time(cs_timestamp, &etm->tc);
tools/perf/util/cs-etm.c
1625
struct cs_etm_auxtrace *etm = etmq->etm;
tools/perf/util/cs-etm.c
1628
if (!etm->timeless_decoding && etm->has_virtual_ts)
tools/perf/util/cs-etm.c
1631
return etm->latest_kernel_timestamp;
tools/perf/util/cs-etm.c
1640
struct cs_etm_auxtrace *etm = etmq->etm;
tools/perf/util/cs-etm.c
1655
sample.id = etmq->etm->instructions_id;
tools/perf/util/cs-etm.c
1656
sample.stream_id = etmq->etm->instructions_id;
tools/perf/util/cs-etm.c
1664
if (etm->synth_opts.last_branch)
tools/perf/util/cs-etm.c
1667
if (etm->synth_opts.inject) {
tools/perf/util/cs-etm.c
1668
ret = cs_etm__inject_event(etm, event, &sample,
tools/perf/util/cs-etm.c
1669
etm->instructions_sample_type);
tools/perf/util/cs-etm.c
1674
ret = perf_session__deliver_synth_event(etm->session, event, &sample);
tools/perf/util/cs-etm.c
1693
struct cs_etm_auxtrace *etm = etmq->etm;
tools/perf/util/cs-etm.c
1717
sample.id = etmq->etm->branches_id;
tools/perf/util/cs-etm.c
1718
sample.stream_id = etmq->etm->branches_id;
tools/perf/util/cs-etm.c
1729
if (etm->synth_opts.last_branch) {
tools/perf/util/cs-etm.c
1741
if (etm->synth_opts.inject) {
tools/perf/util/cs-etm.c
1742
ret = cs_etm__inject_event(etm, event, &sample,
tools/perf/util/cs-etm.c
1743
etm->branches_sample_type);
tools/perf/util/cs-etm.c
1748
ret = perf_session__deliver_synth_event(etm->session, event, &sample);
tools/perf/util/cs-etm.c
1758
static int cs_etm__synth_events(struct cs_etm_auxtrace *etm,
tools/perf/util/cs-etm.c
1769
if (evsel->core.attr.type == etm->pmu_type) {
tools/perf/util/cs-etm.c
1786
if (etm->timeless_decoding)
tools/perf/util/cs-etm.c
1802
if (etm->synth_opts.branches) {
tools/perf/util/cs-etm.c
1809
etm->branches_sample_type = attr.sample_type;
tools/perf/util/cs-etm.c
1810
etm->branches_id = id;
tools/perf/util/cs-etm.c
1815
if (etm->synth_opts.last_branch) {
tools/perf/util/cs-etm.c
1825
if (etm->synth_opts.instructions) {
tools/perf/util/cs-etm.c
1827
attr.sample_period = etm->synth_opts.period;
tools/perf/util/cs-etm.c
1828
etm->instructions_sample_period = attr.sample_period;
tools/perf/util/cs-etm.c
1832
etm->instructions_sample_type = attr.sample_type;
tools/perf/util/cs-etm.c
1833
etm->instructions_id = id;
tools/perf/util/cs-etm.c
1843
struct cs_etm_auxtrace *etm = etmq->etm;
tools/perf/util/cs-etm.c
1856
if (etm->synth_opts.last_branch &&
tools/perf/util/cs-etm.c
1861
if (etm->synth_opts.instructions &&
tools/perf/util/cs-etm.c
1862
tidq->period_instructions >= etm->instructions_sample_period) {
tools/perf/util/cs-etm.c
1915
u64 offset = etm->instructions_sample_period - instrs_prev;
tools/perf/util/cs-etm.c
1919
if (etm->synth_opts.last_branch)
tools/perf/util/cs-etm.c
1923
etm->instructions_sample_period) {
tools/perf/util/cs-etm.c
1934
etm->instructions_sample_period);
tools/perf/util/cs-etm.c
1938
offset += etm->instructions_sample_period;
tools/perf/util/cs-etm.c
1940
etm->instructions_sample_period;
tools/perf/util/cs-etm.c
1944
if (etm->synth_opts.branches) {
tools/perf/util/cs-etm.c
1963
cs_etm__packet_swap(etm, tidq);
tools/perf/util/cs-etm.c
1991
struct cs_etm_auxtrace *etm = etmq->etm;
tools/perf/util/cs-etm.c
1997
if (etmq->etm->synth_opts.last_branch &&
tools/perf/util/cs-etm.c
1998
etmq->etm->synth_opts.instructions &&
tools/perf/util/cs-etm.c
2024
if (etm->synth_opts.branches &&
tools/perf/util/cs-etm.c
2032
cs_etm__packet_swap(etm, tidq);
tools/perf/util/cs-etm.c
2035
if (etm->synth_opts.last_branch)
tools/perf/util/cs-etm.c
2055
if (etmq->etm->synth_opts.last_branch &&
tools/perf/util/cs-etm.c
2056
etmq->etm->synth_opts.instructions &&
tools/perf/util/cs-etm.c
238
return etmq->etm->pid_fmt;
tools/perf/util/cs-etm.c
263
if (etmq->etm->per_thread_decoding)
tools/perf/util/cs-etm.c
2667
static int cs_etm__process_timeless_queues(struct cs_etm_auxtrace *etm,
tools/perf/util/cs-etm.c
2671
struct auxtrace_queues *queues = &etm->queues;
tools/perf/util/cs-etm.c
2674
struct auxtrace_queue *queue = &etm->queues.queue_array[i];
tools/perf/util/cs-etm.c
2681
if (etm->per_thread_decoding) {
tools/perf/util/cs-etm.c
2697
static int cs_etm__process_timestamped_queues(struct cs_etm_auxtrace *etm)
tools/perf/util/cs-etm.c
2711
for (i = 0; i < etm->queues.nr_queues; i++) {
tools/perf/util/cs-etm.c
2712
etmq = etm->queues.queue_array[i].priv;
tools/perf/util/cs-etm.c
2716
ret = cs_etm__queue_first_cs_timestamp(etm, etmq, i);
tools/perf/util/cs-etm.c
2722
if (!etm->heap.heap_cnt)
tools/perf/util/cs-etm.c
2726
cs_queue_nr = etm->heap.heap_array[0].queue_nr;
tools/perf/util/cs-etm.c
2729
queue = &etm->queues.queue_array[queue_nr];
tools/perf/util/cs-etm.c
2736
auxtrace_heap__pop(&etm->heap);
tools/perf/util/cs-etm.c
2803
ret = auxtrace_heap__add(&etm->heap, cs_queue_nr, cs_timestamp);
tools/perf/util/cs-etm.c
2806
for (i = 0; i < etm->queues.nr_queues; i++) {
tools/perf/util/cs-etm.c
2809
etmq = etm->queues.queue_array[i].priv;
tools/perf/util/cs-etm.c
2827
static int cs_etm__process_itrace_start(struct cs_etm_auxtrace *etm,
tools/perf/util/cs-etm.c
2832
if (etm->timeless_decoding)
tools/perf/util/cs-etm.c
2841
th = machine__findnew_thread(&etm->session->machines.host,
tools/perf/util/cs-etm.c
2852
static int cs_etm__process_switch_cpu_wide(struct cs_etm_auxtrace *etm,
tools/perf/util/cs-etm.c
2862
if (etm->timeless_decoding)
tools/perf/util/cs-etm.c
2879
th = machine__findnew_thread(&etm->session->machines.host,
tools/perf/util/cs-etm.c
2895
struct cs_etm_auxtrace *etm = container_of(session->auxtrace,
tools/perf/util/cs-etm.c
291
static struct cs_etm_queue *cs_etm__get_queue(struct cs_etm_auxtrace *etm, int cpu)
tools/perf/util/cs-etm.c
2917
if (etm->per_thread_decoding && etm->timeless_decoding)
tools/perf/util/cs-etm.c
2918
return cs_etm__process_timeless_queues(etm,
tools/perf/util/cs-etm.c
2923
return cs_etm__process_itrace_start(etm, event);
tools/perf/util/cs-etm.c
2926
return cs_etm__process_switch_cpu_wide(etm, event);
tools/perf/util/cs-etm.c
293
if (etm->per_thread_decoding)
tools/perf/util/cs-etm.c
2935
etm->latest_kernel_timestamp = sample->time;
tools/perf/util/cs-etm.c
294
return etm->queues.queue_array[0].priv;
tools/perf/util/cs-etm.c
2945
static void dump_queued_data(struct cs_etm_auxtrace *etm,
tools/perf/util/cs-etm.c
2955
for (i = 0; i < etm->queues.nr_queues; ++i)
tools/perf/util/cs-etm.c
2956
list_for_each_entry(buf, &etm->queues.queue_array[i].head, list)
tools/perf/util/cs-etm.c
2958
cs_etm__dump_event(etm->queues.queue_array[i].priv, buf);
tools/perf/util/cs-etm.c
296
if (cpu < 0 || cpu >= (int)etm->queues.nr_queues)
tools/perf/util/cs-etm.c
2965
struct cs_etm_auxtrace *etm = container_of(session->auxtrace,
tools/perf/util/cs-etm.c
2968
if (!etm->data_queued) {
tools/perf/util/cs-etm.c
2984
err = auxtrace_queues__add_event(&etm->queues, session,
tools/perf/util/cs-etm.c
299
return etm->queues.queue_array[cpu].priv;
tools/perf/util/cs-etm.c
2991
cs_etm__dump_event(etm->queues.queue_array[idx].priv, buffer);
tools/perf/util/cs-etm.c
2995
dump_queued_data(etm, &event->auxtrace);
tools/perf/util/cs-etm.c
3000
static void cs_etm__setup_timeless_decoding(struct cs_etm_auxtrace *etm)
tools/perf/util/cs-etm.c
3003
u64 *metadata = etm->metadata[0];
tools/perf/util/cs-etm.c
3006
if (etm->synth_opts.timeless_decoding) {
tools/perf/util/cs-etm.c
3007
etm->timeless_decoding = true;
tools/perf/util/cs-etm.c
3012
etm->timeless_decoding = !(metadata[CS_ETM_ETMCR] & ETMCR_TIMESTAMP_EN);
tools/perf/util/cs-etm.c
3014
etm->timeless_decoding = !(metadata[CS_ETMV4_TRCCONFIGR] & TRCCONFIGR_TS);
tools/perf/util/cs-etm.c
302
static int cs_etm__map_trace_id_v0(struct cs_etm_auxtrace *etm, u8 trace_chan_id,
tools/perf/util/cs-etm.c
3099
struct cs_etm_auxtrace *etm = container_of(session->auxtrace,
tools/perf/util/cs-etm.c
311
etmq = cs_etm__get_queue(etm, cpu_metadata[CS_ETM_CPU]);
tools/perf/util/cs-etm.c
3128
etm->per_thread_decoding = true;
tools/perf/util/cs-etm.c
3132
if (etm->per_thread_decoding) {
tools/perf/util/cs-etm.c
3163
struct cs_etm_queue *etmq = cs_etm__get_queue(etm, auxtrace_event->cpu);
tools/perf/util/cs-etm.c
3180
err = auxtrace_queues__add_event(&etm->queues, session, &auxtrace_fragment,
tools/perf/util/cs-etm.c
323
for (unsigned int i = 0; i < etm->queues.nr_queues; ++i) {
tools/perf/util/cs-etm.c
326
etmq = etm->queues.queue_array[i].priv;
tools/perf/util/cs-etm.c
3322
static int cs_etm__map_trace_ids_metadata(struct cs_etm_auxtrace *etm, int num_cpu,
tools/perf/util/cs-etm.c
3345
err = cs_etm__map_trace_id_v0(etm, trace_chan_id, metadata[i]);
tools/perf/util/cs-etm.c
339
static int cs_etm__process_trace_id_v0(struct cs_etm_auxtrace *etm, int cpu,
tools/perf/util/cs-etm.c
3412
static int cs_etm__create_decoders(struct cs_etm_auxtrace *etm)
tools/perf/util/cs-etm.c
3414
struct auxtrace_queues *queues = &etm->queues;
tools/perf/util/cs-etm.c
3440
struct cs_etm_auxtrace *etm = NULL;
tools/perf/util/cs-etm.c
346
cpu_data = get_cpu_data(etm, cpu);
tools/perf/util/cs-etm.c
350
err = cs_etm__map_trace_id_v0(etm, trace_chan_id, cpu_data);
tools/perf/util/cs-etm.c
3528
etm = zalloc(sizeof(*etm));
tools/perf/util/cs-etm.c
3530
if (!etm) {
tools/perf/util/cs-etm.c
3540
etm->pid_fmt = cs_etm__init_pid_fmt(metadata[0]);
tools/perf/util/cs-etm.c
3542
err = auxtrace_queues__init_nr(&etm->queues, max_cpu + 1);
tools/perf/util/cs-etm.c
3546
for (unsigned int j = 0; j < etm->queues.nr_queues; ++j) {
tools/perf/util/cs-etm.c
3547
err = cs_etm__setup_queue(etm, &etm->queues.queue_array[j], j);
tools/perf/util/cs-etm.c
3553
etm->synth_opts = *session->itrace_synth_opts;
tools/perf/util/cs-etm.c
3555
itrace_synth_opts__set_default(&etm->synth_opts,
tools/perf/util/cs-etm.c
3557
etm->synth_opts.callchain = false;
tools/perf/util/cs-etm.c
3560
etm->session = session;
tools/perf/util/cs-etm.c
3562
etm->num_cpu = num_cpu;
tools/perf/util/cs-etm.c
3563
etm->pmu_type = (unsigned int) ((ptr[CS_PMU_TYPE_CPUS] >> 32) & 0xffffffff);
tools/perf/util/cs-etm.c
3564
etm->snapshot_mode = (ptr[CS_ETM_SNAPSHOT] != 0);
tools/perf/util/cs-etm.c
3565
etm->metadata = metadata;
tools/perf/util/cs-etm.c
3566
etm->auxtrace_type = auxtrace_info->type;
tools/perf/util/cs-etm.c
3568
if (etm->synth_opts.use_timestamp)
tools/perf/util/cs-etm.c
3578
etm->has_virtual_ts = true;
tools/perf/util/cs-etm.c
3581
etm->has_virtual_ts = cs_etm__has_virtual_ts(metadata, num_cpu);
tools/perf/util/cs-etm.c
3583
if (!etm->has_virtual_ts)
tools/perf/util/cs-etm.c
3590
etm->auxtrace.process_event = cs_etm__process_event;
tools/perf/util/cs-etm.c
3591
etm->auxtrace.process_auxtrace_event = cs_etm__process_auxtrace_event;
tools/perf/util/cs-etm.c
3592
etm->auxtrace.flush_events = cs_etm__flush_events;
tools/perf/util/cs-etm.c
3593
etm->auxtrace.free_events = cs_etm__free_events;
tools/perf/util/cs-etm.c
3594
etm->auxtrace.free = cs_etm__free;
tools/perf/util/cs-etm.c
3595
etm->auxtrace.evsel_is_auxtrace = cs_etm__evsel_is_auxtrace;
tools/perf/util/cs-etm.c
3596
session->auxtrace = &etm->auxtrace;
tools/perf/util/cs-etm.c
3598
cs_etm__setup_timeless_decoding(etm);
tools/perf/util/cs-etm.c
3600
etm->tc.time_shift = tc->time_shift;
tools/perf/util/cs-etm.c
3601
etm->tc.time_mult = tc->time_mult;
tools/perf/util/cs-etm.c
3602
etm->tc.time_zero = tc->time_zero;
tools/perf/util/cs-etm.c
3604
etm->tc.time_cycles = tc->time_cycles;
tools/perf/util/cs-etm.c
3605
etm->tc.time_mask = tc->time_mask;
tools/perf/util/cs-etm.c
3606
etm->tc.cap_user_time_zero = tc->cap_user_time_zero;
tools/perf/util/cs-etm.c
3607
etm->tc.cap_user_time_short = tc->cap_user_time_short;
tools/perf/util/cs-etm.c
3609
err = cs_etm__synth_events(etm, session);
tools/perf/util/cs-etm.c
361
static int cs_etm__process_trace_id_v0_1(struct cs_etm_auxtrace *etm, int cpu,
tools/perf/util/cs-etm.c
364
struct cs_etm_queue *etmq = cs_etm__get_queue(etm, cpu);
tools/perf/util/cs-etm.c
3648
err = cs_etm__map_trace_ids_metadata(etm, num_cpu, metadata);
tools/perf/util/cs-etm.c
3653
err = cs_etm__create_decoders(etm);
tools/perf/util/cs-etm.c
3657
etm->data_queued = etm->queues.populated;
tools/perf/util/cs-etm.c
3661
auxtrace_queues__free(&etm->queues);
tools/perf/util/cs-etm.c
3664
zfree(&etm);
tools/perf/util/cs-etm.c
378
if (!etmq->etm->per_thread_decoding && etmq->sink_id != SINK_UNSET &&
tools/perf/util/cs-etm.c
387
for (unsigned int i = 0; i < etm->queues.nr_queues; ++i) {
tools/perf/util/cs-etm.c
388
struct cs_etm_queue *other_etmq = etm->queues.queue_array[i].priv;
tools/perf/util/cs-etm.c
413
cpu_data = get_cpu_data(etm, cpu);
tools/perf/util/cs-etm.c
474
static int get_cpu_data_idx(struct cs_etm_auxtrace *etm, int cpu)
tools/perf/util/cs-etm.c
478
for (i = 0; i < etm->num_cpu; i++) {
tools/perf/util/cs-etm.c
479
if (etm->metadata[i][CS_ETM_CPU] == (u64)cpu) {
tools/perf/util/cs-etm.c
491
static u64 *get_cpu_data(struct cs_etm_auxtrace *etm, int cpu)
tools/perf/util/cs-etm.c
493
int idx = get_cpu_data_idx(etm, cpu);
tools/perf/util/cs-etm.c
495
return (idx != -1) ? etm->metadata[idx] : NULL;
tools/perf/util/cs-etm.c
508
struct cs_etm_auxtrace *etm;
tools/perf/util/cs-etm.c
526
etm = container_of(session->auxtrace, struct cs_etm_auxtrace, auxtrace);
tools/perf/util/cs-etm.c
527
if (!etm || !etm->metadata)
tools/perf/util/cs-etm.c
547
err = cs_etm__process_trace_id_v0(etm, cpu, hw_id);
tools/perf/util/cs-etm.c
551
err = cs_etm__process_trace_id_v0_1(etm, cpu, hw_id);
tools/perf/util/cs-etm.c
637
struct cs_etm_auxtrace *etm = etmq->etm;
tools/perf/util/cs-etm.c
641
queue = &etmq->etm->queues.queue_array[etmq->queue_nr];
tools/perf/util/cs-etm.c
644
tidq->frontend_thread = machine__findnew_thread(&etm->session->machines.host, -1,
tools/perf/util/cs-etm.c
646
tidq->decode_thread = machine__findnew_thread(&etm->session->machines.host, -1,
tools/perf/util/cs-etm.c
657
if (etm->synth_opts.last_branch) {
tools/perf/util/cs-etm.c
660
sz += etm->synth_opts.last_branch_sz *
tools/perf/util/cs-etm.c
692
struct cs_etm_auxtrace *etm = etmq->etm;
tools/perf/util/cs-etm.c
694
if (etm->per_thread_decoding)
tools/perf/util/cs-etm.c
770
static void cs_etm__packet_swap(struct cs_etm_auxtrace *etm,
tools/perf/util/cs-etm.c
775
if (etm->synth_opts.branches || etm->synth_opts.last_branch ||
tools/perf/util/cs-etm.c
776
etm->synth_opts.instructions) {
tools/perf/util/cs-etm.c
922
struct cs_etm_auxtrace *etm = container_of(session->auxtrace,
tools/perf/util/cs-etm.c
931
if (etm->timeless_decoding) {
tools/perf/util/cs-etm.c
936
return cs_etm__process_timeless_queues(etm, -1);
tools/perf/util/cs-etm.c
939
return cs_etm__process_timestamped_queues(etm);