etmq 273 tools/perf/util/cs-etm-decoder/cs-etm-decoder.c cs_etm_decoder__do_soft_timestamp(struct cs_etm_queue *etmq, etmq 288 tools/perf/util/cs-etm-decoder/cs-etm-decoder.c cs_etm__etmq_set_traceid_queue_timestamp(etmq, trace_chan_id); etmq 294 tools/perf/util/cs-etm-decoder/cs-etm-decoder.c cs_etm_decoder__do_hard_timestamp(struct cs_etm_queue *etmq, etmq 301 tools/perf/util/cs-etm-decoder/cs-etm-decoder.c packet_queue = cs_etm__etmq_get_packet_queue(etmq, trace_chan_id); etmq 327 tools/perf/util/cs-etm-decoder/cs-etm-decoder.c cs_etm__etmq_set_traceid_queue_timestamp(etmq, trace_chan_id); etmq 382 tools/perf/util/cs-etm-decoder/cs-etm-decoder.c cs_etm_decoder__buffer_range(struct cs_etm_queue *etmq, etmq 439 tools/perf/util/cs-etm-decoder/cs-etm-decoder.c if (cs_etm__etmq_is_timeless(etmq)) etmq 452 tools/perf/util/cs-etm-decoder/cs-etm-decoder.c ret = cs_etm_decoder__do_soft_timestamp(etmq, packet_queue, etmq 498 tools/perf/util/cs-etm-decoder/cs-etm-decoder.c cs_etm_decoder__set_tid(struct cs_etm_queue *etmq, etmq 510 tools/perf/util/cs-etm-decoder/cs-etm-decoder.c if (cs_etm__etmq_set_tid(etmq, tid, trace_chan_id)) etmq 530 tools/perf/util/cs-etm-decoder/cs-etm-decoder.c struct cs_etm_queue *etmq = decoder->data; etmq 534 tools/perf/util/cs-etm-decoder/cs-etm-decoder.c packet_queue = cs_etm__etmq_get_packet_queue(etmq, trace_chan_id); etmq 548 tools/perf/util/cs-etm-decoder/cs-etm-decoder.c resp = cs_etm_decoder__buffer_range(etmq, packet_queue, elem, etmq 560 tools/perf/util/cs-etm-decoder/cs-etm-decoder.c resp = cs_etm_decoder__do_hard_timestamp(etmq, elem, etmq 564 tools/perf/util/cs-etm-decoder/cs-etm-decoder.c resp = cs_etm_decoder__set_tid(etmq, packet_queue, etmq 101 tools/perf/util/cs-etm.c static int cs_etm__get_data_block(struct cs_etm_queue *etmq); etmq 102 tools/perf/util/cs-etm.c static int cs_etm__decode_data_block(struct cs_etm_queue *etmq); etmq 156 tools/perf/util/cs-etm.c void cs_etm__etmq_set_traceid_queue_timestamp(struct cs_etm_queue *etmq, etmq 166 tools/perf/util/cs-etm.c etmq->pending_timestamp = trace_chan_id; etmq 169 tools/perf/util/cs-etm.c static u64 cs_etm__etmq_get_timestamp(struct cs_etm_queue *etmq, etmq 174 tools/perf/util/cs-etm.c if (!etmq->pending_timestamp) etmq 178 tools/perf/util/cs-etm.c *trace_chan_id = etmq->pending_timestamp; etmq 180 tools/perf/util/cs-etm.c packet_queue = cs_etm__etmq_get_packet_queue(etmq, etmq 181 tools/perf/util/cs-etm.c etmq->pending_timestamp); etmq 186 tools/perf/util/cs-etm.c etmq->pending_timestamp = 0; etmq 216 tools/perf/util/cs-etm.c static void cs_etm__clear_all_packet_queues(struct cs_etm_queue *etmq) etmq 221 tools/perf/util/cs-etm.c struct intlist *traceid_queues_list = etmq->traceid_queues_list; etmq 225 tools/perf/util/cs-etm.c tidq = etmq->traceid_queues[idx]; etmq 230 tools/perf/util/cs-etm.c static int cs_etm__init_traceid_queue(struct cs_etm_queue *etmq, etmq 236 tools/perf/util/cs-etm.c struct cs_etm_auxtrace *etm = etmq->etm; etmq 240 tools/perf/util/cs-etm.c queue = &etmq->etm->queues.queue_array[etmq->queue_nr]; etmq 282 tools/perf/util/cs-etm.c *cs_etm__etmq_get_traceid_queue(struct cs_etm_queue *etmq, u8 trace_chan_id) etmq 288 tools/perf/util/cs-etm.c struct cs_etm_auxtrace *etm = etmq->etm; etmq 293 tools/perf/util/cs-etm.c traceid_queues_list = etmq->traceid_queues_list; etmq 302 tools/perf/util/cs-etm.c return etmq->traceid_queues[idx]; etmq 322 tools/perf/util/cs-etm.c if (cs_etm__init_traceid_queue(etmq, tidq, trace_chan_id)) etmq 326 tools/perf/util/cs-etm.c traceid_queues = etmq->traceid_queues; etmq 339 tools/perf/util/cs-etm.c etmq->traceid_queues = traceid_queues; etmq 341 tools/perf/util/cs-etm.c return etmq->traceid_queues[idx]; etmq 355 tools/perf/util/cs-etm.c *cs_etm__etmq_get_packet_queue(struct cs_etm_queue *etmq, u8 trace_chan_id) etmq 359 tools/perf/util/cs-etm.c tidq = cs_etm__etmq_get_traceid_queue(etmq, trace_chan_id); etmq 431 tools/perf/util/cs-etm.c struct cs_etm_queue *etmq, etmq 441 tools/perf/util/cs-etm.c d_params->data = etmq; etmq 528 tools/perf/util/cs-etm.c static void cs_etm__free_traceid_queues(struct cs_etm_queue *etmq) etmq 534 tools/perf/util/cs-etm.c struct intlist *traceid_queues_list = etmq->traceid_queues_list; etmq 541 tools/perf/util/cs-etm.c tidq = etmq->traceid_queues[idx]; etmq 559 tools/perf/util/cs-etm.c etmq->traceid_queues_list = NULL; etmq 562 tools/perf/util/cs-etm.c zfree(&etmq->traceid_queues); etmq 567 tools/perf/util/cs-etm.c struct cs_etm_queue *etmq = priv; etmq 569 tools/perf/util/cs-etm.c if (!etmq) etmq 572 tools/perf/util/cs-etm.c cs_etm_decoder__free(etmq->decoder); etmq 573 tools/perf/util/cs-etm.c cs_etm__free_traceid_queues(etmq); etmq 574 tools/perf/util/cs-etm.c free(etmq); etmq 617 tools/perf/util/cs-etm.c static u8 cs_etm__cpu_mode(struct cs_etm_queue *etmq, u64 address) etmq 621 tools/perf/util/cs-etm.c machine = etmq->etm->machine; etmq 623 tools/perf/util/cs-etm.c if (address >= etmq->etm->kernel_start) { etmq 638 tools/perf/util/cs-etm.c static u32 cs_etm__mem_access(struct cs_etm_queue *etmq, u8 trace_chan_id, etmq 649 tools/perf/util/cs-etm.c if (!etmq) etmq 652 tools/perf/util/cs-etm.c machine = etmq->etm->machine; etmq 653 tools/perf/util/cs-etm.c cpumode = cs_etm__cpu_mode(etmq, address); etmq 654 tools/perf/util/cs-etm.c tidq = cs_etm__etmq_get_traceid_queue(etmq, trace_chan_id); etmq 662 tools/perf/util/cs-etm.c thread = etmq->etm->unknown_thread; etmq 688 tools/perf/util/cs-etm.c struct cs_etm_queue *etmq; etmq 690 tools/perf/util/cs-etm.c etmq = zalloc(sizeof(*etmq)); etmq 691 tools/perf/util/cs-etm.c if (!etmq) etmq 694 tools/perf/util/cs-etm.c etmq->traceid_queues_list = intlist__new(NULL); etmq 695 tools/perf/util/cs-etm.c if (!etmq->traceid_queues_list) etmq 708 tools/perf/util/cs-etm.c if (cs_etm__init_decoder_params(&d_params, etmq, etmq 712 tools/perf/util/cs-etm.c etmq->decoder = cs_etm_decoder__new(etm->num_cpu, &d_params, t_params); etmq 714 tools/perf/util/cs-etm.c if (!etmq->decoder) etmq 721 tools/perf/util/cs-etm.c if (cs_etm_decoder__add_mem_access_cb(etmq->decoder, etmq 727 tools/perf/util/cs-etm.c return etmq; etmq 730 tools/perf/util/cs-etm.c cs_etm_decoder__free(etmq->decoder); etmq 732 tools/perf/util/cs-etm.c intlist__delete(etmq->traceid_queues_list); etmq 733 tools/perf/util/cs-etm.c free(etmq); etmq 746 tools/perf/util/cs-etm.c struct cs_etm_queue *etmq = queue->priv; etmq 748 tools/perf/util/cs-etm.c if (list_empty(&queue->head) || etmq) etmq 751 tools/perf/util/cs-etm.c etmq = cs_etm__alloc_queue(etm); etmq 753 tools/perf/util/cs-etm.c if (!etmq) { etmq 758 tools/perf/util/cs-etm.c queue->priv = etmq; etmq 759 tools/perf/util/cs-etm.c etmq->etm = etm; etmq 760 tools/perf/util/cs-etm.c etmq->queue_nr = queue_nr; etmq 761 tools/perf/util/cs-etm.c etmq->offset = 0; etmq 779 tools/perf/util/cs-etm.c ret = cs_etm__get_data_block(etmq); etmq 788 tools/perf/util/cs-etm.c ret = cs_etm__decode_data_block(etmq); etmq 796 tools/perf/util/cs-etm.c timestamp = cs_etm__etmq_get_timestamp(etmq, &trace_chan_id); etmq 809 tools/perf/util/cs-etm.c cs_etm__clear_all_packet_queues(etmq); etmq 856 tools/perf/util/cs-etm.c void cs_etm__copy_last_branch_rb(struct cs_etm_queue *etmq, etmq 880 tools/perf/util/cs-etm.c nr = etmq->etm->synth_opts.last_branch_sz - tidq->last_branch_pos; etmq 892 tools/perf/util/cs-etm.c if (bs_src->nr >= etmq->etm->synth_opts.last_branch_sz) { etmq 906 tools/perf/util/cs-etm.c static inline int cs_etm__t32_instr_size(struct cs_etm_queue *etmq, etmq 911 tools/perf/util/cs-etm.c cs_etm__mem_access(etmq, trace_chan_id, addr, etmq 940 tools/perf/util/cs-etm.c static inline u64 cs_etm__instr_addr(struct cs_etm_queue *etmq, etmq 949 tools/perf/util/cs-etm.c addr += cs_etm__t32_instr_size(etmq, etmq 960 tools/perf/util/cs-etm.c static void cs_etm__update_last_branch_rb(struct cs_etm_queue *etmq, etmq 973 tools/perf/util/cs-etm.c tidq->last_branch_pos = etmq->etm->synth_opts.last_branch_sz; etmq 988 tools/perf/util/cs-etm.c if (bs->nr < etmq->etm->synth_opts.last_branch_sz) etmq 1001 tools/perf/util/cs-etm.c cs_etm__get_trace(struct cs_etm_queue *etmq) etmq 1003 tools/perf/util/cs-etm.c struct auxtrace_buffer *aux_buffer = etmq->buffer; etmq 1007 tools/perf/util/cs-etm.c queue = &etmq->etm->queues.queue_array[etmq->queue_nr]; etmq 1015 tools/perf/util/cs-etm.c etmq->buf_len = 0; etmq 1019 tools/perf/util/cs-etm.c etmq->buffer = aux_buffer; etmq 1024 tools/perf/util/cs-etm.c int fd = perf_data__fd(etmq->etm->session->data); etmq 1035 tools/perf/util/cs-etm.c etmq->buf_used = 0; etmq 1036 tools/perf/util/cs-etm.c etmq->buf_len = aux_buffer->size; etmq 1037 tools/perf/util/cs-etm.c etmq->buf = aux_buffer->data; etmq 1039 tools/perf/util/cs-etm.c return etmq->buf_len; etmq 1053 tools/perf/util/cs-etm.c int cs_etm__etmq_set_tid(struct cs_etm_queue *etmq, etmq 1057 tools/perf/util/cs-etm.c struct cs_etm_auxtrace *etm = etmq->etm; etmq 1060 tools/perf/util/cs-etm.c tidq = cs_etm__etmq_get_traceid_queue(etmq, trace_chan_id); etmq 1078 tools/perf/util/cs-etm.c bool cs_etm__etmq_is_timeless(struct cs_etm_queue *etmq) etmq 1080 tools/perf/util/cs-etm.c return !!etmq->etm->timeless_decoding; etmq 1083 tools/perf/util/cs-etm.c static void cs_etm__copy_insn(struct cs_etm_queue *etmq, etmq 1102 tools/perf/util/cs-etm.c sample->insn_len = cs_etm__t32_instr_size(etmq, trace_chan_id, etmq 1108 tools/perf/util/cs-etm.c cs_etm__mem_access(etmq, trace_chan_id, sample->ip, etmq 1112 tools/perf/util/cs-etm.c static int cs_etm__synth_instruction_sample(struct cs_etm_queue *etmq, etmq 1117 tools/perf/util/cs-etm.c struct cs_etm_auxtrace *etm = etmq->etm; etmq 1122 tools/perf/util/cs-etm.c event->sample.header.misc = cs_etm__cpu_mode(etmq, addr); etmq 1128 tools/perf/util/cs-etm.c sample.id = etmq->etm->instructions_id; etmq 1129 tools/perf/util/cs-etm.c sample.stream_id = etmq->etm->instructions_id; etmq 1135 tools/perf/util/cs-etm.c cs_etm__copy_insn(etmq, tidq->trace_chan_id, tidq->packet, &sample); etmq 1138 tools/perf/util/cs-etm.c cs_etm__copy_last_branch_rb(etmq, tidq); etmq 1166 tools/perf/util/cs-etm.c static int cs_etm__synth_branch_sample(struct cs_etm_queue *etmq, etmq 1170 tools/perf/util/cs-etm.c struct cs_etm_auxtrace *etm = etmq->etm; etmq 1182 tools/perf/util/cs-etm.c event->sample.header.misc = cs_etm__cpu_mode(etmq, ip); etmq 1189 tools/perf/util/cs-etm.c sample.id = etmq->etm->branches_id; etmq 1190 tools/perf/util/cs-etm.c sample.stream_id = etmq->etm->branches_id; etmq 1196 tools/perf/util/cs-etm.c cs_etm__copy_insn(etmq, tidq->trace_chan_id, tidq->prev_packet, etmq 1339 tools/perf/util/cs-etm.c static int cs_etm__sample(struct cs_etm_queue *etmq, etmq 1342 tools/perf/util/cs-etm.c struct cs_etm_auxtrace *etm = etmq->etm; etmq 1357 tools/perf/util/cs-etm.c cs_etm__update_last_branch_rb(etmq, tidq); etmq 1376 tools/perf/util/cs-etm.c u64 addr = cs_etm__instr_addr(etmq, trace_chan_id, etmq 1380 tools/perf/util/cs-etm.c etmq, tidq, addr, etm->instructions_sample_period); etmq 1401 tools/perf/util/cs-etm.c ret = cs_etm__synth_branch_sample(etmq, tidq); etmq 1439 tools/perf/util/cs-etm.c static int cs_etm__flush(struct cs_etm_queue *etmq, etmq 1443 tools/perf/util/cs-etm.c struct cs_etm_auxtrace *etm = etmq->etm; etmq 1450 tools/perf/util/cs-etm.c if (etmq->etm->synth_opts.last_branch && etmq 1462 tools/perf/util/cs-etm.c etmq, tidq, addr, etmq 1473 tools/perf/util/cs-etm.c err = cs_etm__synth_branch_sample(etmq, tidq); etmq 1492 tools/perf/util/cs-etm.c static int cs_etm__end_block(struct cs_etm_queue *etmq, etmq 1506 tools/perf/util/cs-etm.c if (etmq->etm->synth_opts.last_branch && etmq 1515 tools/perf/util/cs-etm.c etmq, tidq, addr, etmq 1532 tools/perf/util/cs-etm.c static int cs_etm__get_data_block(struct cs_etm_queue *etmq) etmq 1536 tools/perf/util/cs-etm.c if (!etmq->buf_len) { etmq 1537 tools/perf/util/cs-etm.c ret = cs_etm__get_trace(etmq); etmq 1544 tools/perf/util/cs-etm.c ret = cs_etm_decoder__reset(etmq->decoder); etmq 1549 tools/perf/util/cs-etm.c return etmq->buf_len; etmq 1552 tools/perf/util/cs-etm.c static bool cs_etm__is_svc_instr(struct cs_etm_queue *etmq, u8 trace_chan_id, etmq 1576 tools/perf/util/cs-etm.c cs_etm__mem_access(etmq, trace_chan_id, addr, etmq 1592 tools/perf/util/cs-etm.c cs_etm__mem_access(etmq, trace_chan_id, addr, etmq 1609 tools/perf/util/cs-etm.c cs_etm__mem_access(etmq, trace_chan_id, addr, etmq 1623 tools/perf/util/cs-etm.c static bool cs_etm__is_syscall(struct cs_etm_queue *etmq, etmq 1641 tools/perf/util/cs-etm.c cs_etm__is_svc_instr(etmq, trace_chan_id, prev_packet, etmq 1675 tools/perf/util/cs-etm.c static bool cs_etm__is_sync_exception(struct cs_etm_queue *etmq, etmq 1705 tools/perf/util/cs-etm.c !cs_etm__is_svc_instr(etmq, trace_chan_id, prev_packet, etmq 1724 tools/perf/util/cs-etm.c static int cs_etm__set_sample_flags(struct cs_etm_queue *etmq, etmq 1810 tools/perf/util/cs-etm.c cs_etm__is_svc_instr(etmq, trace_chan_id, etmq 1832 tools/perf/util/cs-etm.c if (cs_etm__is_syscall(etmq, tidq, magic)) etmq 1849 tools/perf/util/cs-etm.c else if (cs_etm__is_sync_exception(etmq, tidq, magic)) etmq 1903 tools/perf/util/cs-etm.c static int cs_etm__decode_data_block(struct cs_etm_queue *etmq) etmq 1915 tools/perf/util/cs-etm.c ret = cs_etm_decoder__process_data_block(etmq->decoder, etmq 1916 tools/perf/util/cs-etm.c etmq->offset, etmq 1917 tools/perf/util/cs-etm.c &etmq->buf[etmq->buf_used], etmq 1918 tools/perf/util/cs-etm.c etmq->buf_len, etmq 1923 tools/perf/util/cs-etm.c etmq->offset += processed; etmq 1924 tools/perf/util/cs-etm.c etmq->buf_used += processed; etmq 1925 tools/perf/util/cs-etm.c etmq->buf_len -= processed; etmq 1931 tools/perf/util/cs-etm.c static int cs_etm__process_traceid_queue(struct cs_etm_queue *etmq, etmq 1957 tools/perf/util/cs-etm.c ret = cs_etm__set_sample_flags(etmq, tidq); etmq 1968 tools/perf/util/cs-etm.c cs_etm__sample(etmq, tidq); etmq 1984 tools/perf/util/cs-etm.c cs_etm__flush(etmq, tidq); etmq 2001 tools/perf/util/cs-etm.c static void cs_etm__clear_all_traceid_queues(struct cs_etm_queue *etmq) etmq 2006 tools/perf/util/cs-etm.c struct intlist *traceid_queues_list = etmq->traceid_queues_list; etmq 2010 tools/perf/util/cs-etm.c tidq = etmq->traceid_queues[idx]; etmq 2013 tools/perf/util/cs-etm.c cs_etm__process_traceid_queue(etmq, tidq); etmq 2019 tools/perf/util/cs-etm.c cs_etm__flush(etmq, tidq); etmq 2023 tools/perf/util/cs-etm.c static int cs_etm__run_decoder(struct cs_etm_queue *etmq) etmq 2028 tools/perf/util/cs-etm.c tidq = cs_etm__etmq_get_traceid_queue(etmq, CS_ETM_PER_THREAD_TRACEID); etmq 2034 tools/perf/util/cs-etm.c err = cs_etm__get_data_block(etmq); etmq 2040 tools/perf/util/cs-etm.c err = cs_etm__decode_data_block(etmq); etmq 2049 tools/perf/util/cs-etm.c err = cs_etm__process_traceid_queue(etmq, tidq); etmq 2051 tools/perf/util/cs-etm.c } while (etmq->buf_len); etmq 2055 tools/perf/util/cs-etm.c err = cs_etm__end_block(etmq, tidq); etmq 2069 tools/perf/util/cs-etm.c struct cs_etm_queue *etmq = queue->priv; etmq 2072 tools/perf/util/cs-etm.c if (!etmq) etmq 2075 tools/perf/util/cs-etm.c tidq = cs_etm__etmq_get_traceid_queue(etmq, etmq 2083 tools/perf/util/cs-etm.c cs_etm__run_decoder(etmq); etmq 2097 tools/perf/util/cs-etm.c struct cs_etm_queue *etmq; etmq 2109 tools/perf/util/cs-etm.c etmq = queue->priv; etmq 2117 tools/perf/util/cs-etm.c tidq = cs_etm__etmq_get_traceid_queue(etmq, trace_chan_id); etmq 2132 tools/perf/util/cs-etm.c ret = cs_etm__process_traceid_queue(etmq, tidq); etmq 2142 tools/perf/util/cs-etm.c ret = cs_etm__get_data_block(etmq); etmq 2153 tools/perf/util/cs-etm.c ret = cs_etm__decode_data_block(etmq); etmq 2157 tools/perf/util/cs-etm.c timestamp = cs_etm__etmq_get_timestamp(etmq, &trace_chan_id); etmq 2169 tools/perf/util/cs-etm.c cs_etm__clear_all_traceid_queues(etmq); etmq 179 tools/perf/util/cs-etm.h int cs_etm__etmq_set_tid(struct cs_etm_queue *etmq, etmq 181 tools/perf/util/cs-etm.h bool cs_etm__etmq_is_timeless(struct cs_etm_queue *etmq); etmq 182 tools/perf/util/cs-etm.h void cs_etm__etmq_set_traceid_queue_timestamp(struct cs_etm_queue *etmq, etmq 185 tools/perf/util/cs-etm.h *cs_etm__etmq_get_packet_queue(struct cs_etm_queue *etmq, u8 trace_chan_id); etmq 201 tools/perf/util/cs-etm.h struct cs_etm_queue *etmq __maybe_unused, etmq 209 tools/perf/util/cs-etm.h struct cs_etm_queue *etmq __maybe_unused) etmq 216 tools/perf/util/cs-etm.h struct cs_etm_queue *etmq __maybe_unused, etmq 220 tools/perf/util/cs-etm.h struct cs_etm_queue *etmq __maybe_unused,