Lines Matching full:decoder

48  * The packet @decoder must be synchronized onto the trace stream at the
60 struct pt_packet_decoder *decoder) in pt_qry_find_header_fup() argument
62 if (!packet || !decoder) in pt_qry_find_header_fup()
68 errcode = pt_pkt_next(decoder, packet, sizeof(*packet)); in pt_qry_find_header_fup()
88 int pt_qry_decoder_init(struct pt_query_decoder *decoder, in pt_qry_decoder_init() argument
93 if (!decoder) in pt_qry_decoder_init()
96 memset(decoder, 0, sizeof(*decoder)); in pt_qry_decoder_init()
98 errcode = pt_config_from_user(&decoder->config, config); in pt_qry_decoder_init()
102 pt_last_ip_init(&decoder->ip); in pt_qry_decoder_init()
103 pt_tnt_cache_init(&decoder->tnt); in pt_qry_decoder_init()
104 pt_time_init(&decoder->time); in pt_qry_decoder_init()
105 pt_time_init(&decoder->last_time); in pt_qry_decoder_init()
106 pt_tcal_init(&decoder->tcal); in pt_qry_decoder_init()
107 pt_evq_init(&decoder->evq); in pt_qry_decoder_init()
114 struct pt_query_decoder *decoder; in pt_qry_alloc_decoder() local
117 decoder = malloc(sizeof(*decoder)); in pt_qry_alloc_decoder()
118 if (!decoder) in pt_qry_alloc_decoder()
121 errcode = pt_qry_decoder_init(decoder, config); in pt_qry_alloc_decoder()
123 free(decoder); in pt_qry_alloc_decoder()
127 return decoder; in pt_qry_alloc_decoder()
130 void pt_qry_decoder_fini(struct pt_query_decoder *decoder) in pt_qry_decoder_fini() argument
132 (void) decoder; in pt_qry_decoder_fini()
137 void pt_qry_free_decoder(struct pt_query_decoder *decoder) in pt_qry_free_decoder() argument
139 pt_qry_decoder_fini(decoder); in pt_qry_free_decoder()
140 free(decoder); in pt_qry_free_decoder()
143 static void pt_qry_reset(struct pt_query_decoder *decoder) in pt_qry_reset() argument
145 if (!decoder) in pt_qry_reset()
148 decoder->enabled = 0; in pt_qry_reset()
149 decoder->consume_packet = 0; in pt_qry_reset()
150 decoder->event = NULL; in pt_qry_reset()
152 pt_last_ip_init(&decoder->ip); in pt_qry_reset()
153 pt_tnt_cache_init(&decoder->tnt); in pt_qry_reset()
154 pt_time_init(&decoder->time); in pt_qry_reset()
155 pt_time_init(&decoder->last_time); in pt_qry_reset()
156 pt_tcal_init(&decoder->tcal); in pt_qry_reset()
157 pt_evq_init(&decoder->evq); in pt_qry_reset()
160 static int pt_qry_will_event(const struct pt_query_decoder *decoder) in pt_qry_will_event() argument
164 if (!decoder) in pt_qry_will_event()
167 dfun = decoder->next; in pt_qry_will_event()
175 return pt_evq_pending(&decoder->evq, evb_psbend); in pt_qry_will_event()
178 return pt_evq_pending(&decoder->evq, evb_tip); in pt_qry_will_event()
181 return pt_evq_pending(&decoder->evq, evb_fup); in pt_qry_will_event()
186 static int pt_qry_will_eos(const struct pt_query_decoder *decoder) in pt_qry_will_eos() argument
191 if (!decoder) in pt_qry_will_eos()
194 dfun = decoder->next; in pt_qry_will_eos()
205 errcode = pt_df_fetch(&dfun, decoder->pos, &decoder->config); in pt_qry_will_eos()
209 static int pt_qry_status_flags(const struct pt_query_decoder *decoder) in pt_qry_status_flags() argument
213 if (!decoder) in pt_qry_status_flags()
230 if (pt_tnt_cache_is_empty(&decoder->tnt)) { in pt_qry_status_flags()
231 if (pt_qry_will_event(decoder)) in pt_qry_status_flags()
234 if (pt_qry_will_eos(decoder)) in pt_qry_status_flags()
241 static int pt_qry_provoke_fetch_error(const struct pt_query_decoder *decoder) in pt_qry_provoke_fetch_error() argument
246 if (!decoder) in pt_qry_provoke_fetch_error()
249 /* Repeat the decoder fetch to reproduce the error. */ in pt_qry_provoke_fetch_error()
250 errcode = pt_df_fetch(&dfun, decoder->pos, &decoder->config); in pt_qry_provoke_fetch_error()
258 static int pt_qry_read_ahead(struct pt_query_decoder *decoder) in pt_qry_read_ahead() argument
260 if (!decoder) in pt_qry_read_ahead()
267 errcode = pt_df_fetch(&decoder->next, decoder->pos, in pt_qry_read_ahead()
268 &decoder->config); in pt_qry_read_ahead()
272 dfun = decoder->next; in pt_qry_read_ahead()
286 if (pt_qry_will_event(decoder)) in pt_qry_read_ahead()
290 errcode = dfun->decode(decoder); in pt_qry_read_ahead()
294 * Move beyond the packet and clear @decoder->next to in pt_qry_read_ahead()
299 decoder->pos = decoder->config.end; in pt_qry_read_ahead()
300 decoder->next = NULL; in pt_qry_read_ahead()
308 static int pt_qry_start(struct pt_query_decoder *decoder, const uint8_t *pos, in pt_qry_start() argument
314 if (!decoder || !pos) in pt_qry_start()
317 pt_qry_reset(decoder); in pt_qry_start()
319 decoder->sync = pos; in pt_qry_start()
320 decoder->pos = pos; in pt_qry_start()
322 errcode = pt_df_fetch(&decoder->next, pos, &decoder->config); in pt_qry_start()
326 dfun = decoder->next; in pt_qry_start()
333 errcode = dfun->decode(decoder); in pt_qry_start()
339 * adjacent PSB+ that might change the decoder's IP, causing us in pt_qry_start()
343 status = pt_last_ip_query(addr, &decoder->ip); in pt_qry_start()
351 errcode = pt_qry_read_ahead(decoder); in pt_qry_start()
355 /* We return the current decoder status. */ in pt_qry_start()
356 status = pt_qry_status_flags(decoder); in pt_qry_start()
360 errcode = pt_last_ip_query(addr, &decoder->ip); in pt_qry_start()
561 int pt_qry_sync_forward(struct pt_query_decoder *decoder, uint64_t *ip) in pt_qry_sync_forward() argument
567 if (!decoder) in pt_qry_sync_forward()
570 begin = decoder->config.begin; in pt_qry_sync_forward()
571 sync = decoder->sync; in pt_qry_sync_forward()
572 pos = decoder->pos; in pt_qry_sync_forward()
591 errcode = pt_sync_forward(&sync, pos, &decoder->config); in pt_qry_sync_forward()
595 return pt_qry_start(decoder, sync, ip); in pt_qry_sync_forward()
598 int pt_qry_sync_backward(struct pt_query_decoder *decoder, uint64_t *ip) in pt_qry_sync_backward() argument
603 if (!decoder) in pt_qry_sync_backward()
606 start = decoder->pos; in pt_qry_sync_backward()
608 start = decoder->config.end; in pt_qry_sync_backward()
612 errcode = pt_sync_backward(&sync, sync, &decoder->config); in pt_qry_sync_backward()
616 errcode = pt_qry_start(decoder, sync, ip); in pt_qry_sync_backward()
632 if (decoder->pos != start) in pt_qry_sync_backward()
639 int pt_qry_sync_set(struct pt_query_decoder *decoder, uint64_t *ip, in pt_qry_sync_set() argument
645 if (!decoder) in pt_qry_sync_set()
648 pos = decoder->config.begin + offset; in pt_qry_sync_set()
650 errcode = pt_sync_set(&sync, pos, &decoder->config); in pt_qry_sync_set()
654 return pt_qry_start(decoder, sync, ip); in pt_qry_sync_set()
657 int pt_qry_get_offset(const struct pt_query_decoder *decoder, uint64_t *offset) in pt_qry_get_offset() argument
661 if (!decoder || !offset) in pt_qry_get_offset()
664 begin = decoder->config.begin; in pt_qry_get_offset()
665 pos = decoder->pos; in pt_qry_get_offset()
674 int pt_qry_get_sync_offset(const struct pt_query_decoder *decoder, in pt_qry_get_sync_offset() argument
679 if (!decoder || !offset) in pt_qry_get_sync_offset()
682 begin = decoder->config.begin; in pt_qry_get_sync_offset()
683 sync = decoder->sync; in pt_qry_get_sync_offset()
693 pt_qry_get_config(const struct pt_query_decoder *decoder) in pt_qry_get_config() argument
695 if (!decoder) in pt_qry_get_config()
698 return &decoder->config; in pt_qry_get_config()
701 static int pt_qry_cache_tnt(struct pt_query_decoder *decoder) in pt_qry_cache_tnt() argument
705 if (!decoder) in pt_qry_cache_tnt()
711 dfun = decoder->next; in pt_qry_cache_tnt()
713 return pt_qry_provoke_fetch_error(decoder); in pt_qry_cache_tnt()
719 if (pt_qry_will_event(decoder)) in pt_qry_cache_tnt()
726 /* Clear the decoder's current event so we know when we in pt_qry_cache_tnt()
729 decoder->event = NULL; in pt_qry_cache_tnt()
731 /* Apply the decoder function. */ in pt_qry_cache_tnt()
732 errcode = dfun->decode(decoder); in pt_qry_cache_tnt()
737 if (decoder->event) in pt_qry_cache_tnt()
745 errcode = pt_qry_read_ahead(decoder); in pt_qry_cache_tnt()
751 decoder->last_time = decoder->time; in pt_qry_cache_tnt()
754 errcode = pt_qry_read_ahead(decoder); in pt_qry_cache_tnt()
761 int pt_qry_cond_branch(struct pt_query_decoder *decoder, int *taken) in pt_qry_cond_branch() argument
765 if (!decoder || !taken) in pt_qry_cond_branch()
768 /* We cache the latest tnt packet in the decoder. Let's re-fill the in pt_qry_cond_branch()
771 if (pt_tnt_cache_is_empty(&decoder->tnt)) { in pt_qry_cond_branch()
772 errcode = pt_qry_cache_tnt(decoder); in pt_qry_cond_branch()
777 query = pt_tnt_cache_query(&decoder->tnt); in pt_qry_cond_branch()
783 return pt_qry_status_flags(decoder); in pt_qry_cond_branch()
786 int pt_qry_indirect_branch(struct pt_query_decoder *decoder, uint64_t *addr) in pt_qry_indirect_branch() argument
790 if (!decoder || !addr) in pt_qry_indirect_branch()
797 dfun = decoder->next; in pt_qry_indirect_branch()
799 return pt_qry_provoke_fetch_error(decoder); in pt_qry_indirect_branch()
805 if (pt_qry_will_event(decoder)) in pt_qry_indirect_branch()
808 /* Clear the decoder's current event so we know when we in pt_qry_indirect_branch()
811 decoder->event = NULL; in pt_qry_indirect_branch()
820 !pt_tnt_cache_is_empty(&decoder->tnt)) in pt_qry_indirect_branch()
823 /* Apply the decoder function. */ in pt_qry_indirect_branch()
824 errcode = dfun->decode(decoder); in pt_qry_indirect_branch()
829 if (decoder->event) in pt_qry_indirect_branch()
839 * is stored in the decoder's last ip. in pt_qry_indirect_branch()
841 errcode = pt_last_ip_query(&ip, &decoder->ip); in pt_qry_indirect_branch()
851 errcode = pt_qry_read_ahead(decoder); in pt_qry_indirect_branch()
857 decoder->last_time = decoder->time; in pt_qry_indirect_branch()
860 errcode = pt_qry_read_ahead(decoder); in pt_qry_indirect_branch()
864 flags |= pt_qry_status_flags(decoder); in pt_qry_indirect_branch()
869 int pt_qry_event(struct pt_query_decoder *decoder, struct pt_event *event, in pt_qry_event() argument
874 if (!decoder || !event) in pt_qry_event()
883 if (!pt_tnt_cache_is_empty(&decoder->tnt)) in pt_qry_event()
894 dfun = decoder->next; in pt_qry_event()
896 return pt_qry_provoke_fetch_error(decoder); in pt_qry_event()
909 !pt_qry_will_event(decoder)) in pt_qry_event()
912 /* Clear the decoder's current event so we know when decoding in pt_qry_event()
915 decoder->event = NULL; in pt_qry_event()
917 /* Apply any other decoder function. */ in pt_qry_event()
918 errcode = dfun->decode(decoder); in pt_qry_event()
927 if (decoder->event) { in pt_qry_event()
928 (void) memcpy(event, decoder->event, size); in pt_qry_event()
933 errcode = pt_qry_read_ahead(decoder); in pt_qry_event()
939 decoder->last_time = decoder->time; in pt_qry_event()
942 errcode = pt_qry_read_ahead(decoder); in pt_qry_event()
946 flags |= pt_qry_status_flags(decoder); in pt_qry_event()
951 int pt_qry_time(struct pt_query_decoder *decoder, uint64_t *time, in pt_qry_time() argument
954 if (!decoder || !time) in pt_qry_time()
957 return pt_time_query_tsc(time, lost_mtc, lost_cyc, &decoder->last_time); in pt_qry_time()
960 int pt_qry_core_bus_ratio(struct pt_query_decoder *decoder, uint32_t *cbr) in pt_qry_core_bus_ratio() argument
962 if (!decoder || !cbr) in pt_qry_core_bus_ratio()
965 return pt_time_query_cbr(cbr, &decoder->last_time); in pt_qry_core_bus_ratio()
969 const struct pt_query_decoder *decoder) in pt_qry_event_time() argument
973 if (!event || !decoder) in pt_qry_event_time()
977 &event->lost_cyc, &decoder->time); in pt_qry_event_time()
987 int pt_qry_decode_unknown(struct pt_query_decoder *decoder) in pt_qry_decode_unknown() argument
992 if (!decoder) in pt_qry_decode_unknown()
995 size = pt_pkt_read_unknown(&packet, decoder->pos, &decoder->config); in pt_qry_decode_unknown()
999 decoder->pos += size; in pt_qry_decode_unknown()
1003 int pt_qry_decode_pad(struct pt_query_decoder *decoder) in pt_qry_decode_pad() argument
1005 if (!decoder) in pt_qry_decode_pad()
1008 decoder->pos += ptps_pad; in pt_qry_decode_pad()
1013 static int pt_qry_read_psb_header(struct pt_query_decoder *decoder) in pt_qry_read_psb_header() argument
1015 if (!decoder) in pt_qry_read_psb_header()
1018 pt_last_ip_init(&decoder->ip); in pt_qry_read_psb_header()
1024 errcode = pt_df_fetch(&decoder->next, decoder->pos, in pt_qry_read_psb_header()
1025 &decoder->config); in pt_qry_read_psb_header()
1029 dfun = decoder->next; in pt_qry_read_psb_header()
1040 errcode = dfun->header(decoder); in pt_qry_read_psb_header()
1046 int pt_qry_decode_psb(struct pt_query_decoder *decoder) in pt_qry_decode_psb() argument
1051 if (!decoder) in pt_qry_decode_psb()
1054 pos = decoder->pos; in pt_qry_decode_psb()
1056 size = pt_pkt_read_psb(pos, &decoder->config); in pt_qry_decode_psb()
1060 errcode = pt_tcal_update_psb(&decoder->tcal, &decoder->config); in pt_qry_decode_psb()
1064 decoder->pos += size; in pt_qry_decode_psb()
1066 errcode = pt_qry_read_psb_header(decoder); in pt_qry_decode_psb()
1071 decoder->pos = pos; in pt_qry_decode_psb()
1074 (void) pt_evq_clear(&decoder->evq, evb_psbend); in pt_qry_decode_psb()
1076 /* Reset the decoder's decode function. */ in pt_qry_decode_psb()
1077 decoder->next = &pt_decode_psb; in pt_qry_decode_psb()
1091 const struct pt_query_decoder *decoder) in pt_qry_event_ip() argument
1095 if (!decoder) in pt_qry_event_ip()
1098 errcode = pt_last_ip_query(ip, &decoder->ip); in pt_qry_event_ip()
1120 static int pt_qry_decode_ip(struct pt_query_decoder *decoder) in pt_qry_decode_ip() argument
1125 if (!decoder) in pt_qry_decode_ip()
1128 size = pt_pkt_read_ip(&packet, decoder->pos, &decoder->config); in pt_qry_decode_ip()
1132 errcode = pt_last_ip_update_ip(&decoder->ip, &packet, &decoder->config); in pt_qry_decode_ip()
1136 /* We do not update the decoder's position, yet. */ in pt_qry_decode_ip()
1141 static int pt_qry_consume_tip(struct pt_query_decoder *decoder, int size) in pt_qry_consume_tip() argument
1143 if (!decoder) in pt_qry_consume_tip()
1146 decoder->pos += size; in pt_qry_consume_tip()
1151 struct pt_query_decoder *decoder) in pt_qry_event_tip() argument
1153 if (!ev || !decoder) in pt_qry_event_tip()
1158 decoder->consume_packet = 1; in pt_qry_event_tip()
1161 decoder); in pt_qry_event_tip()
1165 decoder); in pt_qry_event_tip()
1169 decoder); in pt_qry_event_tip()
1173 decoder); in pt_qry_event_tip()
1182 int pt_qry_decode_tip(struct pt_query_decoder *decoder) in pt_qry_decode_tip() argument
1187 if (!decoder) in pt_qry_decode_tip()
1190 size = pt_qry_decode_ip(decoder); in pt_qry_decode_tip()
1195 ev = pt_evq_dequeue(&decoder->evq, evb_tip); in pt_qry_decode_tip()
1197 errcode = pt_qry_event_tip(ev, decoder); in pt_qry_decode_tip()
1202 decoder->event = ev; in pt_qry_decode_tip()
1205 if (pt_evq_pending(&decoder->evq, evb_tip)) in pt_qry_decode_tip()
1212 if (!decoder->consume_packet) in pt_qry_decode_tip()
1218 decoder->consume_packet = 0; in pt_qry_decode_tip()
1221 return pt_qry_consume_tip(decoder, size); in pt_qry_decode_tip()
1224 int pt_qry_decode_tnt_8(struct pt_query_decoder *decoder) in pt_qry_decode_tnt_8() argument
1229 if (!decoder) in pt_qry_decode_tnt_8()
1232 size = pt_pkt_read_tnt_8(&packet, decoder->pos, &decoder->config); in pt_qry_decode_tnt_8()
1236 errcode = pt_tnt_cache_update_tnt(&decoder->tnt, &packet, in pt_qry_decode_tnt_8()
1237 &decoder->config); in pt_qry_decode_tnt_8()
1241 decoder->pos += size; in pt_qry_decode_tnt_8()
1245 int pt_qry_decode_tnt_64(struct pt_query_decoder *decoder) in pt_qry_decode_tnt_64() argument
1250 if (!decoder) in pt_qry_decode_tnt_64()
1253 size = pt_pkt_read_tnt_64(&packet, decoder->pos, &decoder->config); in pt_qry_decode_tnt_64()
1257 errcode = pt_tnt_cache_update_tnt(&decoder->tnt, &packet, in pt_qry_decode_tnt_64()
1258 &decoder->config); in pt_qry_decode_tnt_64()
1262 decoder->pos += size; in pt_qry_decode_tnt_64()
1266 static int pt_qry_consume_tip_pge(struct pt_query_decoder *decoder, int size) in pt_qry_consume_tip_pge() argument
1268 if (!decoder) in pt_qry_consume_tip_pge()
1271 decoder->pos += size; in pt_qry_consume_tip_pge()
1276 const struct pt_query_decoder *decoder) in pt_qry_event_tip_pge() argument
1283 return pt_qry_event_ip(&ev->variant.exec_mode.ip, ev, decoder); in pt_qry_event_tip_pge()
1292 int pt_qry_decode_tip_pge(struct pt_query_decoder *decoder) in pt_qry_decode_tip_pge() argument
1297 if (!decoder) in pt_qry_decode_tip_pge()
1300 size = pt_qry_decode_ip(decoder); in pt_qry_decode_tip_pge()
1308 * We use the consume packet decoder flag to indicate this. in pt_qry_decode_tip_pge()
1310 if (!decoder->consume_packet) { in pt_qry_decode_tip_pge()
1312 ev = pt_evq_standalone(&decoder->evq); in pt_qry_decode_tip_pge()
1320 &decoder->ip); in pt_qry_decode_tip_pge()
1324 errcode = pt_qry_event_time(ev, decoder); in pt_qry_decode_tip_pge()
1334 pt_tnt_cache_init(&decoder->tnt); in pt_qry_decode_tip_pge()
1337 decoder->consume_packet = 1; in pt_qry_decode_tip_pge()
1338 decoder->enabled = 1; in pt_qry_decode_tip_pge()
1341 ev = pt_evq_dequeue(&decoder->evq, evb_tip); in pt_qry_decode_tip_pge()
1343 errcode = pt_qry_event_tip_pge(ev, decoder); in pt_qry_decode_tip_pge()
1356 decoder->event = ev; in pt_qry_decode_tip_pge()
1359 if (pt_evq_pending(&decoder->evq, evb_tip)) in pt_qry_decode_tip_pge()
1363 if (!decoder->consume_packet) in pt_qry_decode_tip_pge()
1366 decoder->consume_packet = 0; in pt_qry_decode_tip_pge()
1368 return pt_qry_consume_tip_pge(decoder, size); in pt_qry_decode_tip_pge()
1371 static int pt_qry_consume_tip_pgd(struct pt_query_decoder *decoder, int size) in pt_qry_consume_tip_pgd() argument
1373 if (!decoder) in pt_qry_consume_tip_pgd()
1376 decoder->enabled = 0; in pt_qry_consume_tip_pgd()
1377 decoder->pos += size; in pt_qry_consume_tip_pgd()
1382 const struct pt_query_decoder *decoder) in pt_qry_event_tip_pgd() argument
1398 decoder); in pt_qry_event_tip_pgd()
1430 int pt_qry_decode_tip_pgd(struct pt_query_decoder *decoder) in pt_qry_decode_tip_pgd() argument
1435 if (!decoder) in pt_qry_decode_tip_pgd()
1438 size = pt_qry_decode_ip(decoder); in pt_qry_decode_tip_pgd()
1443 ev = pt_evq_dequeue(&decoder->evq, evb_tip); in pt_qry_decode_tip_pgd()
1445 errcode = pt_qry_event_tip_pgd(ev, decoder); in pt_qry_decode_tip_pgd()
1450 ev = pt_evq_standalone(&decoder->evq); in pt_qry_decode_tip_pgd()
1456 decoder); in pt_qry_decode_tip_pgd()
1460 errcode = pt_qry_event_time(ev, decoder); in pt_qry_decode_tip_pgd()
1472 decoder->event = ev; in pt_qry_decode_tip_pgd()
1475 if (pt_evq_pending(&decoder->evq, evb_tip)) in pt_qry_decode_tip_pgd()
1478 return pt_qry_consume_tip_pgd(decoder, size); in pt_qry_decode_tip_pgd()
1481 static int pt_qry_consume_fup(struct pt_query_decoder *decoder, int size) in pt_qry_consume_fup() argument
1483 if (!decoder) in pt_qry_consume_fup()
1486 decoder->pos += size; in pt_qry_consume_fup()
1490 static int scan_for_erratum_bdm70(struct pt_packet_decoder *decoder) in scan_for_erratum_bdm70() argument
1496 errcode = pt_pkt_next(decoder, &packet, sizeof(packet)); in scan_for_erratum_bdm70()
1538 struct pt_packet_decoder decoder; in check_erratum_bdm70() local
1544 errcode = pt_pkt_decoder_init(&decoder, config); in check_erratum_bdm70()
1548 errcode = pt_pkt_sync_set(&decoder, (uint64_t) (pos - config->begin)); in check_erratum_bdm70()
1550 errcode = scan_for_erratum_bdm70(&decoder); in check_erratum_bdm70()
1552 pt_pkt_decoder_fini(&decoder); in check_erratum_bdm70()
1556 int pt_qry_header_fup(struct pt_query_decoder *decoder) in pt_qry_header_fup() argument
1561 if (!decoder) in pt_qry_header_fup()
1564 size = pt_pkt_read_ip(&packet, decoder->pos, &decoder->config); in pt_qry_header_fup()
1568 if (decoder->config.errata.bdm70 && !decoder->enabled) { in pt_qry_header_fup()
1569 errcode = check_erratum_bdm70(decoder->pos + size, in pt_qry_header_fup()
1570 &decoder->config); in pt_qry_header_fup()
1575 return pt_qry_consume_fup(decoder, size); in pt_qry_header_fup()
1578 errcode = pt_last_ip_update_ip(&decoder->ip, &packet, &decoder->config); in pt_qry_header_fup()
1584 decoder->enabled = 1; in pt_qry_header_fup()
1586 return pt_qry_consume_fup(decoder, size); in pt_qry_header_fup()
1590 struct pt_query_decoder *decoder) in pt_qry_event_fup() argument
1592 if (!ev || !decoder) in pt_qry_event_fup()
1597 decoder->consume_packet = 1; in pt_qry_event_fup()
1601 &decoder->ip); in pt_qry_event_fup()
1605 decoder->consume_packet = 1; in pt_qry_event_fup()
1607 return pt_qry_event_ip(&ev->variant.tsx.ip, ev, decoder); in pt_qry_event_fup()
1610 decoder->consume_packet = 1; in pt_qry_event_fup()
1612 return pt_qry_event_ip(&ev->variant.exstop.ip, ev, decoder); in pt_qry_event_fup()
1615 decoder->consume_packet = 1; in pt_qry_event_fup()
1617 return pt_qry_event_ip(&ev->variant.mwait.ip, ev, decoder); in pt_qry_event_fup()
1620 decoder->consume_packet = 1; in pt_qry_event_fup()
1622 return pt_qry_event_ip(&ev->variant.ptwrite.ip, ev, decoder); in pt_qry_event_fup()
1631 int pt_qry_decode_fup(struct pt_query_decoder *decoder) in pt_qry_decode_fup() argument
1636 if (!decoder) in pt_qry_decode_fup()
1639 size = pt_qry_decode_ip(decoder); in pt_qry_decode_fup()
1644 ev = pt_evq_dequeue(&decoder->evq, evb_fup); in pt_qry_decode_fup()
1646 errcode = pt_qry_event_fup(ev, decoder); in pt_qry_decode_fup()
1651 decoder->event = ev; in pt_qry_decode_fup()
1654 if (pt_evq_pending(&decoder->evq, evb_fup)) in pt_qry_decode_fup()
1661 if (!decoder->consume_packet) in pt_qry_decode_fup()
1667 decoder->consume_packet = 0; in pt_qry_decode_fup()
1675 errcode = pt_last_ip_query(&ip, &decoder->ip); in pt_qry_decode_fup()
1679 ev = pt_evq_enqueue(&decoder->evq, evb_tip); in pt_qry_decode_fup()
1686 errcode = pt_qry_event_time(ev, decoder); in pt_qry_decode_fup()
1691 return pt_qry_consume_fup(decoder, size); in pt_qry_decode_fup()
1694 int pt_qry_decode_pip(struct pt_query_decoder *decoder) in pt_qry_decode_pip() argument
1700 if (!decoder) in pt_qry_decode_pip()
1703 size = pt_pkt_read_pip(&packet, decoder->pos, &decoder->config); in pt_qry_decode_pip()
1710 event = pt_evq_find(&decoder->evq, evb_tip, ptev_async_branch); in pt_qry_decode_pip()
1712 event = pt_evq_standalone(&decoder->evq); in pt_qry_decode_pip()
1719 decoder->event = event; in pt_qry_decode_pip()
1721 event = pt_evq_enqueue(&decoder->evq, evb_tip); in pt_qry_decode_pip()
1730 errcode = pt_qry_event_time(event, decoder); in pt_qry_decode_pip()
1734 decoder->pos += size; in pt_qry_decode_pip()
1738 int pt_qry_header_pip(struct pt_query_decoder *decoder) in pt_qry_header_pip() argument
1744 if (!decoder) in pt_qry_header_pip()
1747 size = pt_pkt_read_pip(&packet, decoder->pos, &decoder->config); in pt_qry_header_pip()
1752 event = pt_evq_enqueue(&decoder->evq, evb_psbend); in pt_qry_header_pip()
1760 decoder->pos += size; in pt_qry_header_pip()
1765 struct pt_query_decoder *decoder) in pt_qry_event_psbend() argument
1769 if (!ev || !decoder) in pt_qry_event_psbend()
1775 errcode = pt_qry_event_time(ev, decoder); in pt_qry_event_psbend()
1782 decoder); in pt_qry_event_psbend()
1785 return pt_qry_event_ip(&ev->variant.exec_mode.ip, ev, decoder); in pt_qry_event_psbend()
1788 return pt_qry_event_ip(&ev->variant.tsx.ip, ev, decoder); in pt_qry_event_psbend()
1792 decoder); in pt_qry_event_psbend()
1811 static int pt_qry_process_pending_psb_events(struct pt_query_decoder *decoder) in pt_qry_process_pending_psb_events() argument
1816 if (!decoder) in pt_qry_process_pending_psb_events()
1819 ev = pt_evq_dequeue(&decoder->evq, evb_psbend); in pt_qry_process_pending_psb_events()
1823 errcode = pt_qry_event_psbend(ev, decoder); in pt_qry_process_pending_psb_events()
1828 decoder->event = ev; in pt_qry_process_pending_psb_events()
1836 * Creates and published the event and disables tracing in @decoder.
1840 static int pt_qry_event_ovf_disabled(struct pt_query_decoder *decoder) in pt_qry_event_ovf_disabled() argument
1844 if (!decoder) in pt_qry_event_ovf_disabled()
1847 ev = pt_evq_standalone(&decoder->evq); in pt_qry_event_ovf_disabled()
1859 decoder->enabled = 0; in pt_qry_event_ovf_disabled()
1860 decoder->event = ev; in pt_qry_event_ovf_disabled()
1862 return pt_qry_event_time(ev, decoder); in pt_qry_event_ovf_disabled()
1867 * Creates and enqueues the event and enables tracing in @decoder.
1871 static int pt_qry_event_ovf_enabled(struct pt_query_decoder *decoder) in pt_qry_event_ovf_enabled() argument
1875 if (!decoder) in pt_qry_event_ovf_enabled()
1878 ev = pt_evq_enqueue(&decoder->evq, evb_fup); in pt_qry_event_ovf_enabled()
1884 decoder->enabled = 1; in pt_qry_event_ovf_enabled()
1886 return pt_qry_event_time(ev, decoder); in pt_qry_event_ovf_enabled()
1893 * Further updates @decoder as follows:
1902 static int skd010_recover(struct pt_query_decoder *decoder, in skd010_recover() argument
1911 if (!decoder || !packet || !tcal || !time) in skd010_recover()
1914 /* We use the decoder's IP. It should be newly initialized. */ in skd010_recover()
1915 ip = decoder->ip; in skd010_recover()
1918 errcode = pt_last_ip_update_ip(&ip, packet, &decoder->config); in skd010_recover()
1923 ev = pt_evq_standalone(&decoder->evq); in skd010_recover()
1935 decoder->pos = decoder->config.begin + offset; in skd010_recover()
1938 decoder->enabled = 1; in skd010_recover()
1939 decoder->ip = ip; in skd010_recover()
1941 decoder->time = *time; in skd010_recover()
1942 decoder->tcal = *tcal; in skd010_recover()
1945 decoder->event = ev; in skd010_recover()
1947 return pt_qry_event_time(ev, decoder); in skd010_recover()
1954 * Further updates @decoder as follows:
1962 static int skd010_recover_disabled(struct pt_query_decoder *decoder, in skd010_recover_disabled() argument
1966 if (!decoder || !tcal || !time) in skd010_recover_disabled()
1969 decoder->time = *time; in skd010_recover_disabled()
1970 decoder->tcal = *tcal; in skd010_recover_disabled()
1973 decoder->pos = decoder->config.begin + offset; in skd010_recover_disabled()
1975 return pt_qry_event_ovf_disabled(decoder); in skd010_recover_disabled()
2002 struct pt_query_decoder *decoder) in skd010_scan_for_ovf_resume() argument
2013 if (!decoder) in skd010_scan_for_ovf_resume()
2017 time = decoder->time; in skd010_scan_for_ovf_resume()
2018 tcal = decoder->tcal; in skd010_scan_for_ovf_resume()
2053 return skd010_recover_disabled(decoder, &tcal, &time, in skd010_scan_for_ovf_resume()
2142 return skd010_recover(decoder, in skd010_scan_for_ovf_resume()
2152 return skd010_recover(decoder, &packet.payload.ip, in skd010_scan_for_ovf_resume()
2159 return skd010_recover(decoder, &packet.payload.ip, in skd010_scan_for_ovf_resume()
2191 return skd010_recover(decoder, &packet.payload.ip, in skd010_scan_for_ovf_resume()
2243 &decoder->config); in skd010_scan_for_ovf_resume()
2253 &decoder->config); in skd010_scan_for_ovf_resume()
2263 &decoder->config); in skd010_scan_for_ovf_resume()
2273 &decoder->config); in skd010_scan_for_ovf_resume()
2283 &decoder->config); in skd010_scan_for_ovf_resume()
2292 static int pt_qry_handle_skd010(struct pt_query_decoder *decoder) in pt_qry_handle_skd010() argument
2298 if (!decoder) in pt_qry_handle_skd010()
2301 errcode = pt_qry_get_offset(decoder, &offset); in pt_qry_handle_skd010()
2305 errcode = pt_pkt_decoder_init(&pkt, &decoder->config); in pt_qry_handle_skd010()
2311 errcode = skd010_scan_for_ovf_resume(&pkt, decoder); in pt_qry_handle_skd010()
2323 static int apl12_tracing_is_disabled(struct pt_packet_decoder *decoder) in apl12_tracing_is_disabled() argument
2325 if (!decoder) in apl12_tracing_is_disabled()
2332 status = pt_pkt_next(decoder, &packet, sizeof(packet)); in apl12_tracing_is_disabled()
2367 status = pt_qry_find_header_fup(&packet, decoder); in apl12_tracing_is_disabled()
2393 * We resume from @offset (relative to @decoder->pos) with tracing disabled. On
2400 static int apl12_resume_disabled(struct pt_query_decoder *decoder, in apl12_resume_disabled() argument
2407 if (!decoder) in apl12_resume_disabled()
2410 errcode = pt_qry_get_offset(decoder, &begin); in apl12_resume_disabled()
2468 errcode = pt_qry_apply_tsc(&decoder->time, in apl12_resume_disabled()
2469 &decoder->tcal, in apl12_resume_disabled()
2471 &decoder->config); in apl12_resume_disabled()
2479 errcode = pt_qry_apply_cbr(&decoder->time, in apl12_resume_disabled()
2480 &decoder->tcal, in apl12_resume_disabled()
2482 &decoder->config); in apl12_resume_disabled()
2490 errcode = pt_qry_apply_tma(&decoder->time, in apl12_resume_disabled()
2491 &decoder->tcal, in apl12_resume_disabled()
2493 &decoder->config); in apl12_resume_disabled()
2501 errcode = pt_qry_apply_mtc(&decoder->time, in apl12_resume_disabled()
2502 &decoder->tcal, in apl12_resume_disabled()
2504 &decoder->config); in apl12_resume_disabled()
2512 errcode = pt_qry_apply_cyc(&decoder->time, in apl12_resume_disabled()
2513 &decoder->tcal, in apl12_resume_disabled()
2515 &decoder->config); in apl12_resume_disabled()
2523 decoder->pos += offset; in apl12_resume_disabled()
2525 return pt_qry_event_ovf_disabled(decoder); in apl12_resume_disabled()
2531 * argument gives the relative offset from @decoder->pos to after the FUP.
2540 * This will drop any CBR or MTC events. We will update @decoder's timing state
2547 static int pt_qry_handle_apl12(struct pt_query_decoder *decoder, in pt_qry_handle_apl12() argument
2554 if (!decoder) in pt_qry_handle_apl12()
2557 status = pt_qry_get_offset(decoder, &here); in pt_qry_handle_apl12()
2561 status = pt_pkt_decoder_init(&pkt, &decoder->config); in pt_qry_handle_apl12()
2569 status = apl12_resume_disabled(decoder, &pkt, offset); in pt_qry_handle_apl12()
2591 static int apl11_apply(struct pt_query_decoder *decoder, in apl11_apply() argument
2597 if (!decoder) in apl11_apply()
2600 time = decoder->time; in apl11_apply()
2601 tcal = decoder->tcal; in apl11_apply()
2622 decoder->time = time; in apl11_apply()
2623 decoder->tcal = tcal; in apl11_apply()
2624 decoder->pos = decoder->config.begin + offset; in apl11_apply()
2626 return pt_qry_event_ovf_disabled(decoder); in apl11_apply()
2665 &decoder->config); in apl11_apply()
2675 &decoder->config); in apl11_apply()
2685 &decoder->config); in apl11_apply()
2695 &decoder->config); in apl11_apply()
2705 &decoder->config); in apl11_apply()
2722 * This will drop any CBR or MTC events. We will update @decoder's timing state
2729 static int pt_qry_handle_apl11(struct pt_query_decoder *decoder) in pt_qry_handle_apl11() argument
2735 if (!decoder) in pt_qry_handle_apl11()
2738 status = pt_qry_get_offset(decoder, &offset); in pt_qry_handle_apl11()
2742 status = pt_pkt_decoder_init(&pkt, &decoder->config); in pt_qry_handle_apl11()
2748 status = apl11_apply(decoder, &pkt); in pt_qry_handle_apl11()
2754 static int pt_pkt_find_ovf_fup(struct pt_packet_decoder *decoder) in pt_pkt_find_ovf_fup() argument
2760 errcode = pt_pkt_next(decoder, &packet, sizeof(packet)); in pt_pkt_find_ovf_fup()
2814 static int pt_qry_find_ovf_fup(const struct pt_query_decoder *decoder) in pt_qry_find_ovf_fup() argument
2820 if (!decoder) in pt_qry_find_ovf_fup()
2823 status = pt_qry_get_offset(decoder, &begin); in pt_qry_find_ovf_fup()
2827 status = pt_pkt_decoder_init(&pkt, &decoder->config); in pt_qry_find_ovf_fup()
2854 int pt_qry_decode_ovf(struct pt_query_decoder *decoder) in pt_qry_decode_ovf() argument
2860 if (!decoder) in pt_qry_decode_ovf()
2863 status = pt_qry_process_pending_psb_events(decoder); in pt_qry_decode_ovf()
2871 /* Reset the decoder state but preserve timing. */ in pt_qry_decode_ovf()
2872 time = decoder->time; in pt_qry_decode_ovf()
2873 tcal = decoder->tcal; in pt_qry_decode_ovf()
2875 pt_qry_reset(decoder); in pt_qry_decode_ovf()
2877 decoder->time = time; in pt_qry_decode_ovf()
2878 if (decoder->config.flags.variant.query.keep_tcal_on_ovf) { in pt_qry_decode_ovf()
2879 status = pt_tcal_update_ovf(&tcal, &decoder->config); in pt_qry_decode_ovf()
2883 decoder->tcal = tcal; in pt_qry_decode_ovf()
2887 decoder->pos += ptps_ovf; in pt_qry_decode_ovf()
2902 offset = pt_qry_find_ovf_fup(decoder); in pt_qry_decode_ovf()
2910 if (decoder->config.errata.skd010) { in pt_qry_decode_ovf()
2911 status = pt_qry_handle_skd010(decoder); in pt_qry_decode_ovf()
2921 if (decoder->config.errata.apl11 && in pt_qry_decode_ovf()
2923 status = pt_qry_handle_apl11(decoder); in pt_qry_decode_ovf()
2936 return pt_qry_event_ovf_disabled(decoder); in pt_qry_decode_ovf()
2943 if (decoder->config.errata.apl12) { in pt_qry_decode_ovf()
2944 status = pt_qry_handle_apl12(decoder, in pt_qry_decode_ovf()
2950 return pt_qry_event_ovf_enabled(decoder); in pt_qry_decode_ovf()
2954 static int pt_qry_decode_mode_exec(struct pt_query_decoder *decoder, in pt_qry_decode_mode_exec() argument
2959 if (!decoder || !packet) in pt_qry_decode_mode_exec()
2963 event = pt_evq_enqueue(&decoder->evq, evb_tip); in pt_qry_decode_mode_exec()
2970 return pt_qry_event_time(event, decoder); in pt_qry_decode_mode_exec()
2973 static int pt_qry_decode_mode_tsx(struct pt_query_decoder *decoder, in pt_qry_decode_mode_tsx() argument
2978 if (!decoder || !packet) in pt_qry_decode_mode_tsx()
2982 if (!decoder->enabled) { in pt_qry_decode_mode_tsx()
2983 event = pt_evq_standalone(&decoder->evq); in pt_qry_decode_mode_tsx()
2992 decoder->event = event; in pt_qry_decode_mode_tsx()
2995 event = pt_evq_enqueue(&decoder->evq, evb_fup); in pt_qry_decode_mode_tsx()
3004 return pt_qry_event_time(event, decoder); in pt_qry_decode_mode_tsx()
3007 int pt_qry_decode_mode(struct pt_query_decoder *decoder) in pt_qry_decode_mode() argument
3012 if (!decoder) in pt_qry_decode_mode()
3015 size = pt_pkt_read_mode(&packet, decoder->pos, &decoder->config); in pt_qry_decode_mode()
3022 errcode = pt_qry_decode_mode_exec(decoder, &packet.bits.exec); in pt_qry_decode_mode()
3026 errcode = pt_qry_decode_mode_tsx(decoder, &packet.bits.tsx); in pt_qry_decode_mode()
3033 decoder->pos += size; in pt_qry_decode_mode()
3037 int pt_qry_header_mode(struct pt_query_decoder *decoder) in pt_qry_header_mode() argument
3043 if (!decoder) in pt_qry_header_mode()
3046 size = pt_pkt_read_mode(&packet, decoder->pos, &decoder->config); in pt_qry_header_mode()
3051 event = pt_evq_enqueue(&decoder->evq, evb_psbend); in pt_qry_header_mode()
3069 decoder->pos += size; in pt_qry_header_mode()
3073 int pt_qry_decode_psbend(struct pt_query_decoder *decoder) in pt_qry_decode_psbend() argument
3077 if (!decoder) in pt_qry_decode_psbend()
3080 status = pt_qry_process_pending_psb_events(decoder); in pt_qry_decode_psbend()
3091 decoder->pos += ptps_psbend; in pt_qry_decode_psbend()
3095 int pt_qry_decode_tsc(struct pt_query_decoder *decoder) in pt_qry_decode_tsc() argument
3100 if (!decoder) in pt_qry_decode_tsc()
3103 size = pt_pkt_read_tsc(&packet, decoder->pos, &decoder->config); in pt_qry_decode_tsc()
3107 errcode = pt_qry_apply_tsc(&decoder->time, &decoder->tcal, in pt_qry_decode_tsc()
3108 &packet, &decoder->config); in pt_qry_decode_tsc()
3112 decoder->pos += size; in pt_qry_decode_tsc()
3116 int pt_qry_header_tsc(struct pt_query_decoder *decoder) in pt_qry_header_tsc() argument
3121 if (!decoder) in pt_qry_header_tsc()
3124 size = pt_pkt_read_tsc(&packet, decoder->pos, &decoder->config); in pt_qry_header_tsc()
3128 errcode = pt_qry_apply_header_tsc(&decoder->time, &decoder->tcal, in pt_qry_header_tsc()
3129 &packet, &decoder->config); in pt_qry_header_tsc()
3133 decoder->pos += size; in pt_qry_header_tsc()
3137 int pt_qry_decode_cbr(struct pt_query_decoder *decoder) in pt_qry_decode_cbr() argument
3143 if (!decoder) in pt_qry_decode_cbr()
3146 size = pt_pkt_read_cbr(&packet, decoder->pos, &decoder->config); in pt_qry_decode_cbr()
3150 errcode = pt_qry_apply_cbr(&decoder->time, &decoder->tcal, in pt_qry_decode_cbr()
3151 &packet, &decoder->config); in pt_qry_decode_cbr()
3155 event = pt_evq_standalone(&decoder->evq); in pt_qry_decode_cbr()
3162 decoder->event = event; in pt_qry_decode_cbr()
3164 errcode = pt_qry_event_time(event, decoder); in pt_qry_decode_cbr()
3168 decoder->pos += size; in pt_qry_decode_cbr()
3172 int pt_qry_header_cbr(struct pt_query_decoder *decoder) in pt_qry_header_cbr() argument
3178 if (!decoder) in pt_qry_header_cbr()
3181 size = pt_pkt_read_cbr(&packet, decoder->pos, &decoder->config); in pt_qry_header_cbr()
3185 errcode = pt_qry_apply_header_cbr(&decoder->time, &decoder->tcal, in pt_qry_header_cbr()
3186 &packet, &decoder->config); in pt_qry_header_cbr()
3190 event = pt_evq_enqueue(&decoder->evq, evb_psbend); in pt_qry_header_cbr()
3197 decoder->pos += size; in pt_qry_header_cbr()
3201 int pt_qry_decode_tma(struct pt_query_decoder *decoder) in pt_qry_decode_tma() argument
3206 if (!decoder) in pt_qry_decode_tma()
3209 size = pt_pkt_read_tma(&packet, decoder->pos, &decoder->config); in pt_qry_decode_tma()
3213 errcode = pt_qry_apply_tma(&decoder->time, &decoder->tcal, in pt_qry_decode_tma()
3214 &packet, &decoder->config); in pt_qry_decode_tma()
3218 decoder->pos += size; in pt_qry_decode_tma()
3222 int pt_qry_decode_mtc(struct pt_query_decoder *decoder) in pt_qry_decode_mtc() argument
3227 if (!decoder) in pt_qry_decode_mtc()
3230 size = pt_pkt_read_mtc(&packet, decoder->pos, &decoder->config); in pt_qry_decode_mtc()
3234 errcode = pt_qry_apply_mtc(&decoder->time, &decoder->tcal, in pt_qry_decode_mtc()
3235 &packet, &decoder->config); in pt_qry_decode_mtc()
3239 decoder->pos += size; in pt_qry_decode_mtc()
3243 static int check_erratum_skd007(struct pt_query_decoder *decoder, in check_erratum_skd007() argument
3249 if (!decoder || !packet || size < 0) in check_erratum_skd007()
3263 pos = decoder->pos + size; in check_erratum_skd007()
3264 if (decoder->config.end <= pos) in check_erratum_skd007()
3280 int pt_qry_decode_cyc(struct pt_query_decoder *decoder) in pt_qry_decode_cyc() argument
3286 if (!decoder) in pt_qry_decode_cyc()
3289 config = &decoder->config; in pt_qry_decode_cyc()
3291 size = pt_pkt_read_cyc(&packet, decoder->pos, config); in pt_qry_decode_cyc()
3296 errcode = check_erratum_skd007(decoder, &packet, size); in pt_qry_decode_cyc()
3307 decoder->pos += 1; in pt_qry_decode_cyc()
3312 errcode = pt_qry_apply_cyc(&decoder->time, &decoder->tcal, in pt_qry_decode_cyc()
3317 decoder->pos += size; in pt_qry_decode_cyc()
3321 int pt_qry_decode_stop(struct pt_query_decoder *decoder) in pt_qry_decode_stop() argument
3326 if (!decoder) in pt_qry_decode_stop()
3330 event = pt_evq_standalone(&decoder->evq); in pt_qry_decode_stop()
3336 decoder->event = event; in pt_qry_decode_stop()
3338 errcode = pt_qry_event_time(event, decoder); in pt_qry_decode_stop()
3342 decoder->pos += ptps_stop; in pt_qry_decode_stop()
3346 int pt_qry_header_vmcs(struct pt_query_decoder *decoder) in pt_qry_header_vmcs() argument
3352 if (!decoder) in pt_qry_header_vmcs()
3355 size = pt_pkt_read_vmcs(&packet, decoder->pos, &decoder->config); in pt_qry_header_vmcs()
3359 event = pt_evq_enqueue(&decoder->evq, evb_psbend); in pt_qry_header_vmcs()
3366 decoder->pos += size; in pt_qry_header_vmcs()
3370 int pt_qry_decode_vmcs(struct pt_query_decoder *decoder) in pt_qry_decode_vmcs() argument
3376 if (!decoder) in pt_qry_decode_vmcs()
3379 size = pt_pkt_read_vmcs(&packet, decoder->pos, &decoder->config); in pt_qry_decode_vmcs()
3388 event = pt_evq_find(&decoder->evq, evb_tip, ptev_async_paging); in pt_qry_decode_vmcs()
3392 paging = pt_evq_enqueue(&decoder->evq, evb_tip); in pt_qry_decode_vmcs()
3401 decoder->pos += size; in pt_qry_decode_vmcs()
3408 event = pt_evq_find(&decoder->evq, evb_tip, ptev_async_branch); in pt_qry_decode_vmcs()
3410 event = pt_evq_enqueue(&decoder->evq, evb_tip); in pt_qry_decode_vmcs()
3417 decoder->pos += size; in pt_qry_decode_vmcs()
3424 event = pt_evq_standalone(&decoder->evq); in pt_qry_decode_vmcs()
3431 decoder->event = event; in pt_qry_decode_vmcs()
3433 errcode = pt_qry_event_time(event, decoder); in pt_qry_decode_vmcs()
3437 decoder->pos += size; in pt_qry_decode_vmcs()
3441 int pt_qry_decode_mnt(struct pt_query_decoder *decoder) in pt_qry_decode_mnt() argument
3447 if (!decoder) in pt_qry_decode_mnt()
3450 size = pt_pkt_read_mnt(&packet, decoder->pos, &decoder->config); in pt_qry_decode_mnt()
3454 event = pt_evq_standalone(&decoder->evq); in pt_qry_decode_mnt()
3461 decoder->event = event; in pt_qry_decode_mnt()
3463 errcode = pt_qry_event_time(event, decoder); in pt_qry_decode_mnt()
3467 decoder->pos += size; in pt_qry_decode_mnt()
3472 int pt_qry_header_mnt(struct pt_query_decoder *decoder) in pt_qry_header_mnt() argument
3478 if (!decoder) in pt_qry_header_mnt()
3481 size = pt_pkt_read_mnt(&packet, decoder->pos, &decoder->config); in pt_qry_header_mnt()
3485 event = pt_evq_enqueue(&decoder->evq, evb_psbend); in pt_qry_header_mnt()
3492 decoder->pos += size; in pt_qry_header_mnt()
3497 int pt_qry_decode_exstop(struct pt_query_decoder *decoder) in pt_qry_decode_exstop() argument
3503 if (!decoder) in pt_qry_decode_exstop()
3506 size = pt_pkt_read_exstop(&packet, decoder->pos, &decoder->config); in pt_qry_decode_exstop()
3511 event = pt_evq_enqueue(&decoder->evq, evb_fup); in pt_qry_decode_exstop()
3517 event = pt_evq_standalone(&decoder->evq); in pt_qry_decode_exstop()
3526 decoder->event = event; in pt_qry_decode_exstop()
3529 decoder->pos += size; in pt_qry_decode_exstop()
3533 int pt_qry_decode_mwait(struct pt_query_decoder *decoder) in pt_qry_decode_mwait() argument
3539 if (!decoder) in pt_qry_decode_mwait()
3542 size = pt_pkt_read_mwait(&packet, decoder->pos, &decoder->config); in pt_qry_decode_mwait()
3546 event = pt_evq_enqueue(&decoder->evq, evb_fup); in pt_qry_decode_mwait()
3554 decoder->pos += size; in pt_qry_decode_mwait()
3558 int pt_qry_decode_pwre(struct pt_query_decoder *decoder) in pt_qry_decode_pwre() argument
3564 if (!decoder) in pt_qry_decode_pwre()
3567 size = pt_pkt_read_pwre(&packet, decoder->pos, &decoder->config); in pt_qry_decode_pwre()
3571 event = pt_evq_standalone(&decoder->evq); in pt_qry_decode_pwre()
3582 decoder->event = event; in pt_qry_decode_pwre()
3584 decoder->pos += size; in pt_qry_decode_pwre()
3588 int pt_qry_decode_pwrx(struct pt_query_decoder *decoder) in pt_qry_decode_pwrx() argument
3594 if (!decoder) in pt_qry_decode_pwrx()
3597 size = pt_pkt_read_pwrx(&packet, decoder->pos, &decoder->config); in pt_qry_decode_pwrx()
3601 event = pt_evq_standalone(&decoder->evq); in pt_qry_decode_pwrx()
3616 decoder->event = event; in pt_qry_decode_pwrx()
3618 decoder->pos += size; in pt_qry_decode_pwrx()
3622 int pt_qry_decode_ptw(struct pt_query_decoder *decoder) in pt_qry_decode_ptw() argument
3628 if (!decoder) in pt_qry_decode_ptw()
3631 size = pt_pkt_read_ptw(&packet, decoder->pos, &decoder->config); in pt_qry_decode_ptw()
3640 event = pt_evq_enqueue(&decoder->evq, evb_fup); in pt_qry_decode_ptw()
3644 event = pt_evq_standalone(&decoder->evq); in pt_qry_decode_ptw()
3650 decoder->event = event; in pt_qry_decode_ptw()
3657 decoder->pos += size; in pt_qry_decode_ptw()