diff --git a/libipt/include/intel-pt.h b/libipt/include/intel-pt.h index a8c8d389..e961b4c9 100644 --- a/libipt/include/intel-pt.h +++ b/libipt/include/intel-pt.h @@ -261,9 +261,15 @@ enum pt_payload { /* The size of an IP packet's payload with update-32 compression. */ pt_pl_ip_upd32_size = 4, + /* The size of an IP packet's payload with update-48 compression. */ + pt_pl_ip_upd48_size = 6, + /* The size of an IP packet's payload with sext-48 compression. */ pt_pl_ip_sext48_size = 6, + /* The size of an IP packet's payload with full-ip compression. */ + pt_pl_ip_full_size = 8, + /* Byte locations, sizes, and masks for processing TMA packets. */ pt_pl_tma_size = 5, pt_pl_tma_ctc_size = 2, @@ -336,7 +342,13 @@ enum pt_ip_compression { pt_ipc_update_32 = 0x02, /* Payload: 48 bits. Sign extend to full address. */ - pt_ipc_sext_48 = 0x03 + pt_ipc_sext_48 = 0x03, + + /* Payload: 48 bits. Update last IP. */ + pt_ipc_update_48 = 0x04, + + /* Payload: 64 bits. Full address. */ + pt_ipc_full = 0x06 }; /** The size of the various packets in bytes. */ @@ -355,19 +367,27 @@ enum pt_packet_size { ptps_tip_supp = pt_opcs_tip, ptps_tip_upd16 = pt_opcs_tip + pt_pl_ip_upd16_size, ptps_tip_upd32 = pt_opcs_tip + pt_pl_ip_upd32_size, + ptps_tip_upd48 = pt_opcs_tip + pt_pl_ip_upd48_size, ptps_tip_sext48 = pt_opcs_tip + pt_pl_ip_sext48_size, + ptps_tip_full = pt_opcs_tip + pt_pl_ip_full_size, ptps_tip_pge_supp = pt_opcs_tip_pge, ptps_tip_pge_upd16 = pt_opcs_tip_pge + pt_pl_ip_upd16_size, ptps_tip_pge_upd32 = pt_opcs_tip_pge + pt_pl_ip_upd32_size, + ptps_tip_pge_upd48 = pt_opcs_tip_pge + pt_pl_ip_upd48_size, ptps_tip_pge_sext48 = pt_opcs_tip_pge + pt_pl_ip_sext48_size, + ptps_tip_pge_full = pt_opcs_tip_pge + pt_pl_ip_full_size, ptps_tip_pgd_supp = pt_opcs_tip_pgd, ptps_tip_pgd_upd16 = pt_opcs_tip_pgd + pt_pl_ip_upd16_size, ptps_tip_pgd_upd32 = pt_opcs_tip_pgd + pt_pl_ip_upd32_size, + ptps_tip_pgd_upd48 = pt_opcs_tip_pgd + pt_pl_ip_upd48_size, ptps_tip_pgd_sext48 = pt_opcs_tip_pgd + pt_pl_ip_sext48_size, + ptps_tip_pgd_full = pt_opcs_tip_pgd + pt_pl_ip_full_size, ptps_fup_supp = pt_opcs_fup, ptps_fup_upd16 = pt_opcs_fup + pt_pl_ip_upd16_size, ptps_fup_upd32 = pt_opcs_fup + pt_pl_ip_upd32_size, + ptps_fup_upd48 = pt_opcs_fup + pt_pl_ip_upd48_size, ptps_fup_sext48 = pt_opcs_fup + pt_pl_ip_sext48_size, + ptps_fup_full = pt_opcs_fup + pt_pl_ip_full_size, ptps_tma = pt_opcs_tma + pt_pl_tma_size, ptps_stop = pt_opcs_stop, ptps_vmcs = pt_opcs_vmcs + pt_pl_vmcs_size, diff --git a/libipt/src/pt_encoder.c b/libipt/src/pt_encoder.c index 577cb6c2..c7e61eb3 100644 --- a/libipt/src/pt_encoder.c +++ b/libipt/src/pt_encoder.c @@ -163,9 +163,6 @@ static int pt_reserve(const struct pt_encoder *encoder, unsigned int size) static int pt_ipc_size(enum pt_ip_compression ipc) { switch (ipc) { - default: - return -pte_invalid; - case pt_ipc_suppressed: return 0; @@ -175,9 +172,17 @@ static int pt_ipc_size(enum pt_ip_compression ipc) case pt_ipc_update_32: return pt_pl_ip_upd32_size; + case pt_ipc_update_48: + return pt_pl_ip_upd48_size; + case pt_ipc_sext_48: return pt_pl_ip_sext48_size; + + case pt_ipc_full: + return pt_pl_ip_full_size; } + + return -pte_invalid; } /* Encode an integer value. diff --git a/libipt/src/pt_last_ip.c b/libipt/src/pt_last_ip.c index 4912b582..62266edb 100644 --- a/libipt/src/pt_last_ip.c +++ b/libipt/src/pt_last_ip.c @@ -108,6 +108,19 @@ int pt_last_ip_update_ip(struct pt_last_ip *last_ip, last_ip->have_ip = 1; last_ip->suppressed = 0; return 0; + + case pt_ipc_update_48: + last_ip->ip = (last_ip->ip & ~0xffffffffffffull) + | (packet->ip & 0xffffffffffffull); + last_ip->have_ip = 1; + last_ip->suppressed = 0; + return 0; + + case pt_ipc_full: + last_ip->ip = packet->ip; + last_ip->have_ip = 1; + last_ip->suppressed = 0; + return 0; } return -pte_bad_packet; diff --git a/libipt/src/pt_packet.c b/libipt/src/pt_packet.c index 1aa6089a..1a6af738 100644 --- a/libipt/src/pt_packet.c +++ b/libipt/src/pt_packet.c @@ -108,6 +108,29 @@ int pt_pkt_read_psb(const uint8_t *pos, const struct pt_config *config) return ptps_psb; } +static int pt_pkt_ip_size(enum pt_ip_compression ipc) +{ + switch (ipc) { + case pt_ipc_suppressed: + return 0; + + case pt_ipc_update_16: + return 2; + + case pt_ipc_update_32: + return 4; + + case pt_ipc_update_48: + case pt_ipc_sext_48: + return 6; + + case pt_ipc_full: + return 8; + } + + return -pte_internal; +} + int pt_pkt_read_ip(struct pt_packet_ip *packet, const uint8_t *pos, const struct pt_config *config) { @@ -121,24 +144,9 @@ int pt_pkt_read_ip(struct pt_packet_ip *packet, const uint8_t *pos, ipc = (*pos++ >> pt_opm_ipc_shr) & pt_opm_ipc_shr_mask; ip = 0ull; - ipsize = 0; - switch (ipc) { - case pt_ipc_suppressed: - ipsize = 0; - break; - - case pt_ipc_update_16: - ipsize = 2; - break; - - case pt_ipc_update_32: - ipsize = 4; - break; - - case pt_ipc_sext_48: - ipsize = 6; - break; - } + ipsize = pt_pkt_ip_size((enum pt_ip_compression) ipc); + if (ipsize < 0) + return ipsize; if (config->end < pos + ipsize) return -pte_eos; diff --git a/libipt/test/src/ptunit-query.c b/libipt/test/src/ptunit-query.c index 8cba785e..15027d86 100644 --- a/libipt/test/src/ptunit-query.c +++ b/libipt/test/src/ptunit-query.c @@ -1157,7 +1157,9 @@ static struct ptunit_result event_overflow_fup(struct ptu_decoder_fixture *dfix, case pt_ipc_update_16: case pt_ipc_update_32: + case pt_ipc_update_48: case pt_ipc_sext_48: + case pt_ipc_full: ptu_int_eq(errcode, pts_eos); ptu_int_eq(event.type, ptev_overflow); ptu_uint_eq(event.variant.overflow.ip, dfix->last_ip.ip); @@ -1235,7 +1237,9 @@ event_overflow_tip_pge(struct ptu_decoder_fixture *dfix, case pt_ipc_update_16: case pt_ipc_update_32: + case pt_ipc_update_48: case pt_ipc_sext_48: + case pt_ipc_full: ptu_int_eq(errcode, pts_eos); ptu_int_eq(event.type, ptev_enabled); ptu_uint_eq(event.variant.enabled.ip, dfix->last_ip.ip); @@ -1645,7 +1649,9 @@ static struct ptunit_result sync_event(struct ptu_decoder_fixture *dfix, case pt_ipc_update_16: case pt_ipc_update_32: + case pt_ipc_update_48: case pt_ipc_sext_48: + case pt_ipc_full: ptu_int_eq(errcode, pts_event_pending); ptu_uint_eq(addr, dfix->last_ip.ip); break; @@ -1751,7 +1757,9 @@ static struct ptunit_result sync_ovf_event(struct ptu_decoder_fixture *dfix, case pt_ipc_update_16: case pt_ipc_update_32: + case pt_ipc_update_48: case pt_ipc_sext_48: + case pt_ipc_full: ptu_int_eq(errcode, pts_eos); ptu_int_eq(event.type, ptev_overflow); ptu_uint_eq(event.variant.overflow.ip, dfix->last_ip.ip); @@ -2109,11 +2117,15 @@ int main(int argc, char **argv) ptu_run_fp(suite, indir, dfix_empty, pt_ipc_suppressed); ptu_run_fp(suite, indir, dfix_empty, pt_ipc_update_16); ptu_run_fp(suite, indir, dfix_empty, pt_ipc_update_32); + ptu_run_fp(suite, indir, dfix_empty, pt_ipc_update_48); ptu_run_fp(suite, indir, dfix_empty, pt_ipc_sext_48); + ptu_run_fp(suite, indir, dfix_empty, pt_ipc_full); ptu_run_fp(suite, indir_tnt, dfix_empty, pt_ipc_suppressed); ptu_run_fp(suite, indir_tnt, dfix_empty, pt_ipc_update_16); ptu_run_fp(suite, indir_tnt, dfix_empty, pt_ipc_update_32); + ptu_run_fp(suite, indir_tnt, dfix_empty, pt_ipc_update_48); ptu_run_fp(suite, indir_tnt, dfix_empty, pt_ipc_sext_48); + ptu_run_fp(suite, indir_tnt, dfix_empty, pt_ipc_full); ptu_run_f(suite, indir_cutoff_fail, dfix_empty); ptu_run_f(suite, indir_skip_tnt_fail, dfix_empty); ptu_run_f(suite, indir_skip_tip_pge_fail, dfix_empty); @@ -2124,11 +2136,15 @@ int main(int argc, char **argv) ptu_run_fp(suite, indir, dfix_indir, pt_ipc_suppressed); ptu_run_fp(suite, indir, dfix_indir, pt_ipc_update_16); ptu_run_fp(suite, indir, dfix_indir, pt_ipc_update_32); + ptu_run_fp(suite, indir, dfix_indir, pt_ipc_update_48); ptu_run_fp(suite, indir, dfix_indir, pt_ipc_sext_48); + ptu_run_fp(suite, indir, dfix_indir, pt_ipc_full); ptu_run_fp(suite, indir_tnt, dfix_indir, pt_ipc_suppressed); ptu_run_fp(suite, indir_tnt, dfix_indir, pt_ipc_update_16); ptu_run_fp(suite, indir_tnt, dfix_indir, pt_ipc_update_32); + ptu_run_fp(suite, indir_tnt, dfix_indir, pt_ipc_update_48); ptu_run_fp(suite, indir_tnt, dfix_indir, pt_ipc_sext_48); + ptu_run_fp(suite, indir_tnt, dfix_indir, pt_ipc_full); ptu_run_f(suite, indir_cutoff_fail, dfix_indir); ptu_run_f(suite, indir_skip_tnt_fail, dfix_indir); ptu_run_f(suite, indir_skip_tip_pge_fail, dfix_indir); @@ -2138,8 +2154,10 @@ int main(int argc, char **argv) ptu_run_fp(suite, indir, dfix_indir_psb, pt_ipc_suppressed); ptu_run_fp(suite, indir, dfix_indir_psb, pt_ipc_sext_48); + ptu_run_fp(suite, indir, dfix_indir_psb, pt_ipc_full); ptu_run_fp(suite, indir_tnt, dfix_indir_psb, pt_ipc_suppressed); ptu_run_fp(suite, indir_tnt, dfix_indir_psb, pt_ipc_sext_48); + ptu_run_fp(suite, indir_tnt, dfix_indir_psb, pt_ipc_full); ptu_run_f(suite, indir_cutoff_fail, dfix_indir_psb); ptu_run_f(suite, indir_skip_tnt_fail, dfix_indir_psb); ptu_run_f(suite, indir_skip_tip_pge_fail, dfix_indir_psb); @@ -2171,12 +2189,16 @@ int main(int argc, char **argv) ptu_run_fp(suite, event_enabled, dfix_empty, pt_ipc_suppressed, 0); ptu_run_fp(suite, event_enabled, dfix_empty, pt_ipc_update_16, 0); ptu_run_fp(suite, event_enabled, dfix_empty, pt_ipc_update_32, 0); + ptu_run_fp(suite, event_enabled, dfix_empty, pt_ipc_update_48, 0); ptu_run_fp(suite, event_enabled, dfix_empty, pt_ipc_sext_48, 0); + ptu_run_fp(suite, event_enabled, dfix_empty, pt_ipc_full, 0); ptu_run_f(suite, event_enabled_cutoff_fail, dfix_empty); ptu_run_fp(suite, event_disabled, dfix_empty, pt_ipc_suppressed, 0); ptu_run_fp(suite, event_disabled, dfix_empty, pt_ipc_update_16, 0); ptu_run_fp(suite, event_disabled, dfix_empty, pt_ipc_update_32, 0); + ptu_run_fp(suite, event_disabled, dfix_empty, pt_ipc_update_48, 0); ptu_run_fp(suite, event_disabled, dfix_empty, pt_ipc_sext_48, 0); + ptu_run_fp(suite, event_disabled, dfix_empty, pt_ipc_full, 0); ptu_run_f(suite, event_disabled_cutoff_fail, dfix_empty); ptu_run_fp(suite, event_async_disabled, dfix_empty, pt_ipc_suppressed, 0); @@ -2184,14 +2206,19 @@ int main(int argc, char **argv) 0); ptu_run_fp(suite, event_async_disabled, dfix_empty, pt_ipc_update_32, 0); + ptu_run_fp(suite, event_async_disabled, dfix_empty, pt_ipc_update_48, + 0); ptu_run_fp(suite, event_async_disabled, dfix_empty, pt_ipc_sext_48, 0); + ptu_run_fp(suite, event_async_disabled, dfix_empty, pt_ipc_full, 0); ptu_run_f(suite, event_async_disabled_suppressed_fail, dfix_empty); ptu_run_f(suite, event_async_disabled_cutoff_fail_a, dfix_empty); ptu_run_f(suite, event_async_disabled_cutoff_fail_b, dfix_empty); ptu_run_fp(suite, event_async_branch, dfix_empty, pt_ipc_suppressed, 0); ptu_run_fp(suite, event_async_branch, dfix_empty, pt_ipc_update_16, 0); ptu_run_fp(suite, event_async_branch, dfix_empty, pt_ipc_update_32, 0); + ptu_run_fp(suite, event_async_branch, dfix_empty, pt_ipc_update_48, 0); ptu_run_fp(suite, event_async_branch, dfix_empty, pt_ipc_sext_48, 0); + ptu_run_fp(suite, event_async_branch, dfix_empty, pt_ipc_full, 0); ptu_run_f(suite, event_async_branch_suppressed_fail, dfix_empty); ptu_run_f(suite, event_async_branch_cutoff_fail_a, dfix_empty); ptu_run_f(suite, event_async_branch_cutoff_fail_b, dfix_empty); @@ -2207,7 +2234,9 @@ int main(int argc, char **argv) ptu_run_fp(suite, event_overflow_fup, dfix_empty, pt_ipc_suppressed, 0); ptu_run_fp(suite, event_overflow_fup, dfix_empty, pt_ipc_update_16, 0); ptu_run_fp(suite, event_overflow_fup, dfix_empty, pt_ipc_update_32, 0); + ptu_run_fp(suite, event_overflow_fup, dfix_empty, pt_ipc_update_48, 0); ptu_run_fp(suite, event_overflow_fup, dfix_empty, pt_ipc_sext_48, 0); + ptu_run_fp(suite, event_overflow_fup, dfix_empty, pt_ipc_full, 0); ptu_run_f(suite, event_overflow_fup_cutoff_fail, dfix_empty); ptu_run_fp(suite, event_overflow_tip_pge, dfix_empty, pt_ipc_suppressed, 0); @@ -2215,15 +2244,21 @@ int main(int argc, char **argv) 0); ptu_run_fp(suite, event_overflow_tip_pge, dfix_empty, pt_ipc_update_32, 0); + ptu_run_fp(suite, event_overflow_tip_pge, dfix_empty, pt_ipc_update_48, + 0); ptu_run_fp(suite, event_overflow_tip_pge, dfix_empty, pt_ipc_sext_48, 0); + ptu_run_fp(suite, event_overflow_tip_pge, dfix_empty, pt_ipc_full, + 0); ptu_run_f(suite, event_overflow_cutoff_fail, dfix_empty); ptu_run_fp(suite, event_stop, dfix_empty, 0); ptu_run_fp(suite, event_exec_mode_tip, dfix_empty, pt_ipc_suppressed, 0); ptu_run_fp(suite, event_exec_mode_tip, dfix_empty, pt_ipc_update_16, 0); ptu_run_fp(suite, event_exec_mode_tip, dfix_empty, pt_ipc_update_32, 0); + ptu_run_fp(suite, event_exec_mode_tip, dfix_empty, pt_ipc_update_48, 0); ptu_run_fp(suite, event_exec_mode_tip, dfix_empty, pt_ipc_sext_48, 0); + ptu_run_fp(suite, event_exec_mode_tip, dfix_empty, pt_ipc_full, 0); ptu_run_f(suite, event_exec_mode_tip_cutoff_fail, dfix_empty); ptu_run_fp(suite, event_exec_mode_tip_pge, dfix_empty, pt_ipc_suppressed, 0); @@ -2231,8 +2266,12 @@ int main(int argc, char **argv) pt_ipc_update_16, 0); ptu_run_fp(suite, event_exec_mode_tip_pge, dfix_empty, pt_ipc_update_32, 0); + ptu_run_fp(suite, event_exec_mode_tip_pge, dfix_empty, + pt_ipc_update_48, 0); ptu_run_fp(suite, event_exec_mode_tip_pge, dfix_empty, pt_ipc_sext_48, 0); + ptu_run_fp(suite, event_exec_mode_tip_pge, dfix_empty, pt_ipc_full, + 0); ptu_run_f(suite, event_exec_mode_tip_pge_cutoff_fail, dfix_empty); ptu_run_f(suite, event_exec_mode_cutoff_fail, dfix_empty); ptu_run_fp(suite, event_tsx_fup, dfix_empty, pt_ipc_suppressed, @@ -2240,7 +2279,10 @@ int main(int argc, char **argv) ptu_run_fp(suite, event_tsx_fup, dfix_empty, pt_ipc_update_16, 0, 0); ptu_run_fp(suite, event_tsx_fup, dfix_empty, pt_ipc_update_32, pt_mob_tsx_intx, 0); + ptu_run_fp(suite, event_tsx_fup, dfix_empty, pt_ipc_update_48, + pt_mob_tsx_intx, 0); ptu_run_fp(suite, event_tsx_fup, dfix_empty, pt_ipc_sext_48, 0, 0); + ptu_run_fp(suite, event_tsx_fup, dfix_empty, pt_ipc_full, 0, 0); ptu_run_f(suite, event_tsx_fup_cutoff_fail, dfix_empty); ptu_run_f(suite, event_tsx_cutoff_fail, dfix_empty); ptu_run_f(suite, event_skip_tip_fail, dfix_empty); @@ -2249,25 +2291,33 @@ int main(int argc, char **argv) ptu_run_fp(suite, sync_event, dfix_empty, pt_ipc_suppressed); ptu_run_fp(suite, sync_event, dfix_empty, pt_ipc_update_16); ptu_run_fp(suite, sync_event, dfix_empty, pt_ipc_update_32); + ptu_run_fp(suite, sync_event, dfix_empty, pt_ipc_update_48); ptu_run_fp(suite, sync_event, dfix_empty, pt_ipc_sext_48); + ptu_run_fp(suite, sync_event, dfix_empty, pt_ipc_full); ptu_run_f(suite, sync_event_cutoff_fail, dfix_empty); ptu_run_f(suite, sync_event_incomplete_fail, dfix_empty); ptu_run_fp(suite, sync_ovf_event, dfix_empty, pt_ipc_suppressed); ptu_run_fp(suite, sync_ovf_event, dfix_empty, pt_ipc_update_16); ptu_run_fp(suite, sync_ovf_event, dfix_empty, pt_ipc_update_32); + ptu_run_fp(suite, sync_ovf_event, dfix_empty, pt_ipc_update_48); ptu_run_fp(suite, sync_ovf_event, dfix_empty, pt_ipc_sext_48); + ptu_run_fp(suite, sync_ovf_event, dfix_empty, pt_ipc_full); ptu_run_f(suite, sync_ovf_event_cutoff_fail, dfix_empty); ptu_run_fp(suite, event_enabled, dfix_event, pt_ipc_suppressed, 0x1000); ptu_run_fp(suite, event_enabled, dfix_event, pt_ipc_update_16, 0x1000); ptu_run_fp(suite, event_enabled, dfix_event, pt_ipc_update_32, 0x1000); + ptu_run_fp(suite, event_enabled, dfix_event, pt_ipc_update_48, 0x1000); ptu_run_fp(suite, event_enabled, dfix_event, pt_ipc_sext_48, 0x1000); + ptu_run_fp(suite, event_enabled, dfix_event, pt_ipc_full, 0x1000); ptu_run_f(suite, event_enabled_cutoff_fail, dfix_event); ptu_run_fp(suite, event_disabled, dfix_event, pt_ipc_suppressed, 0x1000); ptu_run_fp(suite, event_disabled, dfix_event, pt_ipc_update_16, 0x1000); ptu_run_fp(suite, event_disabled, dfix_event, pt_ipc_update_32, 0x1000); + ptu_run_fp(suite, event_disabled, dfix_event, pt_ipc_update_48, 0x1000); ptu_run_fp(suite, event_disabled, dfix_event, pt_ipc_sext_48, 0x1000); + ptu_run_fp(suite, event_disabled, dfix_event, pt_ipc_full, 0x1000); ptu_run_f(suite, event_disabled_cutoff_fail, dfix_event); ptu_run_fp(suite, event_async_disabled, dfix_event, pt_ipc_suppressed, 0x1000); @@ -2275,8 +2325,12 @@ int main(int argc, char **argv) 0x1000); ptu_run_fp(suite, event_async_disabled, dfix_event, pt_ipc_update_32, 0x1000); + ptu_run_fp(suite, event_async_disabled, dfix_event, pt_ipc_update_48, + 0x1000); ptu_run_fp(suite, event_async_disabled, dfix_event, pt_ipc_sext_48, 0x1000); + ptu_run_fp(suite, event_async_disabled, dfix_event, pt_ipc_full, + 0x1000); ptu_run_f(suite, event_async_disabled_suppressed_fail, dfix_event); ptu_run_f(suite, event_async_disabled_cutoff_fail_a, dfix_event); ptu_run_f(suite, event_async_disabled_cutoff_fail_b, dfix_event); @@ -2286,8 +2340,12 @@ int main(int argc, char **argv) 0x1000); ptu_run_fp(suite, event_async_branch, dfix_event, pt_ipc_update_32, 0x1000); + ptu_run_fp(suite, event_async_branch, dfix_event, pt_ipc_update_48, + 0x1000); ptu_run_fp(suite, event_async_branch, dfix_event, pt_ipc_sext_48, 0x1000); + ptu_run_fp(suite, event_async_branch, dfix_event, pt_ipc_full, + 0x1000); ptu_run_f(suite, event_async_branch_suppressed_fail, dfix_event); ptu_run_f(suite, event_async_branch_cutoff_fail_a, dfix_event); ptu_run_f(suite, event_async_branch_cutoff_fail_b, dfix_event); @@ -2306,8 +2364,12 @@ int main(int argc, char **argv) 0x1000); ptu_run_fp(suite, event_overflow_fup, dfix_event, pt_ipc_update_32, 0x1000); + ptu_run_fp(suite, event_overflow_fup, dfix_event, pt_ipc_update_48, + 0x1000); ptu_run_fp(suite, event_overflow_fup, dfix_event, pt_ipc_sext_48, 0x1000); + ptu_run_fp(suite, event_overflow_fup, dfix_event, pt_ipc_full, + 0x1000); ptu_run_f(suite, event_overflow_fup_cutoff_fail, dfix_event); ptu_run_fp(suite, event_overflow_tip_pge, dfix_event, pt_ipc_suppressed, 0x1000); @@ -2315,8 +2377,12 @@ int main(int argc, char **argv) 0x1000); ptu_run_fp(suite, event_overflow_tip_pge, dfix_event, pt_ipc_update_32, 0x1000); + ptu_run_fp(suite, event_overflow_tip_pge, dfix_event, pt_ipc_update_48, + 0x1000); ptu_run_fp(suite, event_overflow_tip_pge, dfix_event, pt_ipc_sext_48, 0x1000); + ptu_run_fp(suite, event_overflow_tip_pge, dfix_event, pt_ipc_full, + 0x1000); ptu_run_f(suite, event_overflow_cutoff_fail, dfix_event); ptu_run_fp(suite, event_stop, dfix_event, 0x1000); ptu_run_fp(suite, event_exec_mode_tip, dfix_event, pt_ipc_suppressed, @@ -2325,8 +2391,12 @@ int main(int argc, char **argv) 0x1000); ptu_run_fp(suite, event_exec_mode_tip, dfix_event, pt_ipc_update_32, 0x1000); + ptu_run_fp(suite, event_exec_mode_tip, dfix_event, pt_ipc_update_48, + 0x1000); ptu_run_fp(suite, event_exec_mode_tip, dfix_event, pt_ipc_sext_48, 0x1000); + ptu_run_fp(suite, event_exec_mode_tip, dfix_event, pt_ipc_full, + 0x1000); ptu_run_f(suite, event_exec_mode_tip_cutoff_fail, dfix_event); ptu_run_fp(suite, event_exec_mode_tip_pge, dfix_event, pt_ipc_suppressed, 0x1000); @@ -2334,8 +2404,12 @@ int main(int argc, char **argv) pt_ipc_update_16, 0x1000); ptu_run_fp(suite, event_exec_mode_tip_pge, dfix_event, pt_ipc_update_32, 0x1000); + ptu_run_fp(suite, event_exec_mode_tip_pge, dfix_event, + pt_ipc_update_48, 0x1000); ptu_run_fp(suite, event_exec_mode_tip_pge, dfix_event, pt_ipc_sext_48, 0x1000); + ptu_run_fp(suite, event_exec_mode_tip_pge, dfix_event, pt_ipc_full, + 0x1000); ptu_run_f(suite, event_exec_mode_tip_pge_cutoff_fail, dfix_event); ptu_run_f(suite, event_exec_mode_cutoff_fail, dfix_event); ptu_run_fp(suite, event_tsx_fup, dfix_event, pt_ipc_suppressed, 0, @@ -2344,8 +2418,12 @@ int main(int argc, char **argv) pt_mob_tsx_intx, 0x1000); ptu_run_fp(suite, event_tsx_fup, dfix_event, pt_ipc_update_32, 0, 0x1000); + ptu_run_fp(suite, event_tsx_fup, dfix_event, pt_ipc_update_48, 0, + 0x1000); ptu_run_fp(suite, event_tsx_fup, dfix_event, pt_ipc_sext_48, pt_mob_tsx_intx, 0x1000); + ptu_run_fp(suite, event_tsx_fup, dfix_event, pt_ipc_full, + pt_mob_tsx_intx, 0x1000); ptu_run_f(suite, event_tsx_fup_cutoff_fail, dfix_event); ptu_run_f(suite, event_tsx_cutoff_fail, dfix_event); ptu_run_f(suite, event_skip_tip_fail, dfix_event); @@ -2354,24 +2432,32 @@ int main(int argc, char **argv) ptu_run_fp(suite, sync_event, dfix_event, pt_ipc_suppressed); ptu_run_fp(suite, sync_event, dfix_event, pt_ipc_update_16); ptu_run_fp(suite, sync_event, dfix_event, pt_ipc_update_32); + ptu_run_fp(suite, sync_event, dfix_event, pt_ipc_update_48); ptu_run_fp(suite, sync_event, dfix_event, pt_ipc_sext_48); + ptu_run_fp(suite, sync_event, dfix_event, pt_ipc_full); ptu_run_f(suite, sync_event_cutoff_fail, dfix_event); ptu_run_f(suite, sync_event_incomplete_fail, dfix_event); ptu_run_fp(suite, sync_ovf_event, dfix_event, pt_ipc_suppressed); ptu_run_fp(suite, sync_ovf_event, dfix_event, pt_ipc_update_16); ptu_run_fp(suite, sync_ovf_event, dfix_event, pt_ipc_update_32); + ptu_run_fp(suite, sync_ovf_event, dfix_event, pt_ipc_update_48); ptu_run_fp(suite, sync_ovf_event, dfix_event, pt_ipc_sext_48); + ptu_run_fp(suite, sync_ovf_event, dfix_event, pt_ipc_full); ptu_run_f(suite, sync_ovf_event_cutoff_fail, dfix_event); ptu_run_fp(suite, event_enabled, dfix_event_psb, pt_ipc_suppressed, 0x1000); ptu_run_fp(suite, event_enabled, dfix_event_psb, pt_ipc_sext_48, 0x1000); + ptu_run_fp(suite, event_enabled, dfix_event_psb, pt_ipc_full, + 0x1000); ptu_run_f(suite, event_enabled_cutoff_fail, dfix_event_psb); ptu_run_fp(suite, event_disabled, dfix_event_psb, pt_ipc_suppressed, 0x1000); ptu_run_fp(suite, event_disabled, dfix_event_psb, pt_ipc_sext_48, 0x1000); + ptu_run_fp(suite, event_disabled, dfix_event_psb, pt_ipc_full, + 0x1000); ptu_run_f(suite, event_disabled_cutoff_fail, dfix_event_psb); ptu_run_fp(suite, event_async_disabled, dfix_event_psb, pt_ipc_suppressed, 0x1000); @@ -2379,8 +2465,12 @@ int main(int argc, char **argv) pt_ipc_update_16, 0x1000); ptu_run_fp(suite, event_async_disabled, dfix_event_psb, pt_ipc_update_32, 0x1000); + ptu_run_fp(suite, event_async_disabled, dfix_event_psb, + pt_ipc_update_48, 0x1000); ptu_run_fp(suite, event_async_disabled, dfix_event_psb, pt_ipc_sext_48, 0x1000); + ptu_run_fp(suite, event_async_disabled, dfix_event_psb, + pt_ipc_full, 0x1000); ptu_run_f(suite, event_async_disabled_suppressed_fail, dfix_event_psb); ptu_run_f(suite, event_async_disabled_cutoff_fail_a, dfix_event_psb); ptu_run_f(suite, event_async_disabled_cutoff_fail_b, dfix_event_psb); @@ -2390,8 +2480,12 @@ int main(int argc, char **argv) 0x1000); ptu_run_fp(suite, event_async_branch, dfix_event_psb, pt_ipc_update_32, 0x1000); + ptu_run_fp(suite, event_async_branch, dfix_event_psb, pt_ipc_update_48, + 0x1000); ptu_run_fp(suite, event_async_branch, dfix_event_psb, pt_ipc_sext_48, 0x1000); + ptu_run_fp(suite, event_async_branch, dfix_event_psb, pt_ipc_full, + 0x1000); ptu_run_f(suite, event_async_branch_suppressed_fail, dfix_event_psb); ptu_run_f(suite, event_async_branch_cutoff_fail_a, dfix_event_psb); ptu_run_f(suite, event_async_branch_cutoff_fail_b, dfix_event_psb); @@ -2412,15 +2506,21 @@ int main(int argc, char **argv) pt_ipc_suppressed, 0x1000); ptu_run_fp(suite, event_exec_mode_tip, dfix_event_psb, pt_ipc_sext_48, 0x1000); + ptu_run_fp(suite, event_exec_mode_tip, dfix_event_psb, pt_ipc_full, + 0x1000); ptu_run_f(suite, event_exec_mode_tip_cutoff_fail, dfix_event_psb); ptu_run_fp(suite, event_exec_mode_tip_pge, dfix_event_psb, pt_ipc_sext_48, 0x1000); + ptu_run_fp(suite, event_exec_mode_tip_pge, dfix_event_psb, + pt_ipc_full, 0x1000); ptu_run_f(suite, event_exec_mode_tip_pge_cutoff_fail, dfix_event_psb); ptu_run_f(suite, event_exec_mode_cutoff_fail, dfix_event_psb); ptu_run_fp(suite, event_tsx_fup, dfix_event_psb, pt_ipc_suppressed, 0, 0x1000); ptu_run_fp(suite, event_tsx_fup, dfix_event_psb, pt_ipc_sext_48, pt_mob_tsx_intx, 0x1000); + ptu_run_fp(suite, event_tsx_fup, dfix_event_psb, pt_ipc_full, + pt_mob_tsx_intx, 0x1000); ptu_run_f(suite, event_tsx_fup_cutoff_fail, dfix_event_psb); ptu_run_f(suite, event_tsx_cutoff_fail, dfix_event_psb); ptu_run_f(suite, event_skip_tip_fail, dfix_event_psb);