1*74fe6c29SRuslan Bukin /* 2*74fe6c29SRuslan Bukin * Copyright (c) 2014-2018, Intel Corporation 3*74fe6c29SRuslan Bukin * 4*74fe6c29SRuslan Bukin * Redistribution and use in source and binary forms, with or without 5*74fe6c29SRuslan Bukin * modification, are permitted provided that the following conditions are met: 6*74fe6c29SRuslan Bukin * 7*74fe6c29SRuslan Bukin * * Redistributions of source code must retain the above copyright notice, 8*74fe6c29SRuslan Bukin * this list of conditions and the following disclaimer. 9*74fe6c29SRuslan Bukin * * Redistributions in binary form must reproduce the above copyright notice, 10*74fe6c29SRuslan Bukin * this list of conditions and the following disclaimer in the documentation 11*74fe6c29SRuslan Bukin * and/or other materials provided with the distribution. 12*74fe6c29SRuslan Bukin * * Neither the name of Intel Corporation nor the names of its contributors 13*74fe6c29SRuslan Bukin * may be used to endorse or promote products derived from this software 14*74fe6c29SRuslan Bukin * without specific prior written permission. 15*74fe6c29SRuslan Bukin * 16*74fe6c29SRuslan Bukin * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 17*74fe6c29SRuslan Bukin * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18*74fe6c29SRuslan Bukin * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19*74fe6c29SRuslan Bukin * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 20*74fe6c29SRuslan Bukin * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21*74fe6c29SRuslan Bukin * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22*74fe6c29SRuslan Bukin * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 23*74fe6c29SRuslan Bukin * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 24*74fe6c29SRuslan Bukin * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25*74fe6c29SRuslan Bukin * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26*74fe6c29SRuslan Bukin * POSSIBILITY OF SUCH DAMAGE. 27*74fe6c29SRuslan Bukin */ 28*74fe6c29SRuslan Bukin 29*74fe6c29SRuslan Bukin #include "ptunit.h" 30*74fe6c29SRuslan Bukin 31*74fe6c29SRuslan Bukin #include "pt_decoder_function.h" 32*74fe6c29SRuslan Bukin #include "pt_packet_decoder.h" 33*74fe6c29SRuslan Bukin #include "pt_query_decoder.h" 34*74fe6c29SRuslan Bukin #include "pt_encoder.h" 35*74fe6c29SRuslan Bukin #include "pt_opcodes.h" 36*74fe6c29SRuslan Bukin 37*74fe6c29SRuslan Bukin #include "intel-pt.h" 38*74fe6c29SRuslan Bukin 39*74fe6c29SRuslan Bukin 40*74fe6c29SRuslan Bukin /* A test fixture for decoder function fetch tests. */ 41*74fe6c29SRuslan Bukin struct fetch_fixture { 42*74fe6c29SRuslan Bukin /* The trace buffer. */ 43*74fe6c29SRuslan Bukin uint8_t buffer[1024]; 44*74fe6c29SRuslan Bukin 45*74fe6c29SRuslan Bukin /* A trace configuration. */ 46*74fe6c29SRuslan Bukin struct pt_config config; 47*74fe6c29SRuslan Bukin 48*74fe6c29SRuslan Bukin /* A trace encoder. */ 49*74fe6c29SRuslan Bukin struct pt_encoder encoder; 50*74fe6c29SRuslan Bukin 51*74fe6c29SRuslan Bukin /* The test fixture initialization and finalization functions. */ 52*74fe6c29SRuslan Bukin struct ptunit_result (*init)(struct fetch_fixture *); 53*74fe6c29SRuslan Bukin struct ptunit_result (*fini)(struct fetch_fixture *); 54*74fe6c29SRuslan Bukin }; 55*74fe6c29SRuslan Bukin 56*74fe6c29SRuslan Bukin static struct ptunit_result ffix_init(struct fetch_fixture *ffix) 57*74fe6c29SRuslan Bukin { 58*74fe6c29SRuslan Bukin memset(ffix->buffer, pt_opc_bad, sizeof(ffix->buffer)); 59*74fe6c29SRuslan Bukin 60*74fe6c29SRuslan Bukin memset(&ffix->config, 0, sizeof(ffix->config)); 61*74fe6c29SRuslan Bukin ffix->config.size = sizeof(ffix->config); 62*74fe6c29SRuslan Bukin ffix->config.begin = ffix->buffer; 63*74fe6c29SRuslan Bukin ffix->config.end = ffix->buffer + sizeof(ffix->buffer); 64*74fe6c29SRuslan Bukin 65*74fe6c29SRuslan Bukin pt_encoder_init(&ffix->encoder, &ffix->config); 66*74fe6c29SRuslan Bukin 67*74fe6c29SRuslan Bukin return ptu_passed(); 68*74fe6c29SRuslan Bukin } 69*74fe6c29SRuslan Bukin 70*74fe6c29SRuslan Bukin static struct ptunit_result ffix_fini(struct fetch_fixture *ffix) 71*74fe6c29SRuslan Bukin { 72*74fe6c29SRuslan Bukin pt_encoder_fini(&ffix->encoder); 73*74fe6c29SRuslan Bukin 74*74fe6c29SRuslan Bukin return ptu_passed(); 75*74fe6c29SRuslan Bukin } 76*74fe6c29SRuslan Bukin 77*74fe6c29SRuslan Bukin 78*74fe6c29SRuslan Bukin static struct ptunit_result fetch_null(struct fetch_fixture *ffix) 79*74fe6c29SRuslan Bukin { 80*74fe6c29SRuslan Bukin const struct pt_decoder_function *dfun; 81*74fe6c29SRuslan Bukin int errcode; 82*74fe6c29SRuslan Bukin 83*74fe6c29SRuslan Bukin errcode = pt_df_fetch(NULL, ffix->config.begin, &ffix->config); 84*74fe6c29SRuslan Bukin ptu_int_eq(errcode, -pte_internal); 85*74fe6c29SRuslan Bukin 86*74fe6c29SRuslan Bukin errcode = pt_df_fetch(&dfun, NULL, &ffix->config); 87*74fe6c29SRuslan Bukin ptu_int_eq(errcode, -pte_nosync); 88*74fe6c29SRuslan Bukin 89*74fe6c29SRuslan Bukin errcode = pt_df_fetch(&dfun, ffix->config.begin, NULL); 90*74fe6c29SRuslan Bukin ptu_int_eq(errcode, -pte_internal); 91*74fe6c29SRuslan Bukin 92*74fe6c29SRuslan Bukin return ptu_passed(); 93*74fe6c29SRuslan Bukin } 94*74fe6c29SRuslan Bukin 95*74fe6c29SRuslan Bukin static struct ptunit_result fetch_empty(struct fetch_fixture *ffix) 96*74fe6c29SRuslan Bukin { 97*74fe6c29SRuslan Bukin const struct pt_decoder_function *dfun; 98*74fe6c29SRuslan Bukin int errcode; 99*74fe6c29SRuslan Bukin 100*74fe6c29SRuslan Bukin errcode = pt_df_fetch(&dfun, ffix->config.end, &ffix->config); 101*74fe6c29SRuslan Bukin ptu_int_eq(errcode, -pte_eos); 102*74fe6c29SRuslan Bukin 103*74fe6c29SRuslan Bukin return ptu_passed(); 104*74fe6c29SRuslan Bukin } 105*74fe6c29SRuslan Bukin 106*74fe6c29SRuslan Bukin static struct ptunit_result fetch_unknown(struct fetch_fixture *ffix) 107*74fe6c29SRuslan Bukin { 108*74fe6c29SRuslan Bukin const struct pt_decoder_function *dfun; 109*74fe6c29SRuslan Bukin int errcode; 110*74fe6c29SRuslan Bukin 111*74fe6c29SRuslan Bukin ffix->config.begin[0] = pt_opc_bad; 112*74fe6c29SRuslan Bukin 113*74fe6c29SRuslan Bukin errcode = pt_df_fetch(&dfun, ffix->config.begin, &ffix->config); 114*74fe6c29SRuslan Bukin ptu_int_eq(errcode, 0); 115*74fe6c29SRuslan Bukin ptu_ptr_eq(dfun, &pt_decode_unknown); 116*74fe6c29SRuslan Bukin 117*74fe6c29SRuslan Bukin return ptu_passed(); 118*74fe6c29SRuslan Bukin } 119*74fe6c29SRuslan Bukin 120*74fe6c29SRuslan Bukin static struct ptunit_result fetch_unknown_ext(struct fetch_fixture *ffix) 121*74fe6c29SRuslan Bukin { 122*74fe6c29SRuslan Bukin const struct pt_decoder_function *dfun; 123*74fe6c29SRuslan Bukin int errcode; 124*74fe6c29SRuslan Bukin 125*74fe6c29SRuslan Bukin ffix->config.begin[0] = pt_opc_ext; 126*74fe6c29SRuslan Bukin ffix->config.begin[1] = pt_ext_bad; 127*74fe6c29SRuslan Bukin 128*74fe6c29SRuslan Bukin errcode = pt_df_fetch(&dfun, ffix->config.begin, &ffix->config); 129*74fe6c29SRuslan Bukin ptu_int_eq(errcode, 0); 130*74fe6c29SRuslan Bukin ptu_ptr_eq(dfun, &pt_decode_unknown); 131*74fe6c29SRuslan Bukin 132*74fe6c29SRuslan Bukin return ptu_passed(); 133*74fe6c29SRuslan Bukin } 134*74fe6c29SRuslan Bukin 135*74fe6c29SRuslan Bukin static struct ptunit_result fetch_unknown_ext2(struct fetch_fixture *ffix) 136*74fe6c29SRuslan Bukin { 137*74fe6c29SRuslan Bukin const struct pt_decoder_function *dfun; 138*74fe6c29SRuslan Bukin int errcode; 139*74fe6c29SRuslan Bukin 140*74fe6c29SRuslan Bukin ffix->config.begin[0] = pt_opc_ext; 141*74fe6c29SRuslan Bukin ffix->config.begin[1] = pt_ext_ext2; 142*74fe6c29SRuslan Bukin ffix->config.begin[2] = pt_ext2_bad; 143*74fe6c29SRuslan Bukin 144*74fe6c29SRuslan Bukin errcode = pt_df_fetch(&dfun, ffix->config.begin, &ffix->config); 145*74fe6c29SRuslan Bukin ptu_int_eq(errcode, 0); 146*74fe6c29SRuslan Bukin ptu_ptr_eq(dfun, &pt_decode_unknown); 147*74fe6c29SRuslan Bukin 148*74fe6c29SRuslan Bukin return ptu_passed(); 149*74fe6c29SRuslan Bukin } 150*74fe6c29SRuslan Bukin 151*74fe6c29SRuslan Bukin static struct ptunit_result fetch_packet(struct fetch_fixture *ffix, 152*74fe6c29SRuslan Bukin const struct pt_packet *packet, 153*74fe6c29SRuslan Bukin const struct pt_decoder_function *df) 154*74fe6c29SRuslan Bukin { 155*74fe6c29SRuslan Bukin const struct pt_decoder_function *dfun; 156*74fe6c29SRuslan Bukin int errcode; 157*74fe6c29SRuslan Bukin 158*74fe6c29SRuslan Bukin errcode = pt_enc_next(&ffix->encoder, packet); 159*74fe6c29SRuslan Bukin ptu_int_ge(errcode, 0); 160*74fe6c29SRuslan Bukin 161*74fe6c29SRuslan Bukin errcode = pt_df_fetch(&dfun, ffix->config.begin, &ffix->config); 162*74fe6c29SRuslan Bukin ptu_int_eq(errcode, 0); 163*74fe6c29SRuslan Bukin ptu_ptr_eq(dfun, df); 164*74fe6c29SRuslan Bukin 165*74fe6c29SRuslan Bukin return ptu_passed(); 166*74fe6c29SRuslan Bukin } 167*74fe6c29SRuslan Bukin 168*74fe6c29SRuslan Bukin static struct ptunit_result fetch_type(struct fetch_fixture *ffix, 169*74fe6c29SRuslan Bukin enum pt_packet_type type, 170*74fe6c29SRuslan Bukin const struct pt_decoder_function *dfun) 171*74fe6c29SRuslan Bukin { 172*74fe6c29SRuslan Bukin struct pt_packet packet; 173*74fe6c29SRuslan Bukin 174*74fe6c29SRuslan Bukin memset(&packet, 0, sizeof(packet)); 175*74fe6c29SRuslan Bukin packet.type = type; 176*74fe6c29SRuslan Bukin 177*74fe6c29SRuslan Bukin ptu_test(fetch_packet, ffix, &packet, dfun); 178*74fe6c29SRuslan Bukin 179*74fe6c29SRuslan Bukin return ptu_passed(); 180*74fe6c29SRuslan Bukin } 181*74fe6c29SRuslan Bukin 182*74fe6c29SRuslan Bukin static struct ptunit_result fetch_tnt_8(struct fetch_fixture *ffix) 183*74fe6c29SRuslan Bukin { 184*74fe6c29SRuslan Bukin struct pt_packet packet; 185*74fe6c29SRuslan Bukin 186*74fe6c29SRuslan Bukin memset(&packet, 0, sizeof(packet)); 187*74fe6c29SRuslan Bukin packet.type = ppt_tnt_8; 188*74fe6c29SRuslan Bukin packet.payload.tnt.bit_size = 1; 189*74fe6c29SRuslan Bukin 190*74fe6c29SRuslan Bukin ptu_test(fetch_packet, ffix, &packet, &pt_decode_tnt_8); 191*74fe6c29SRuslan Bukin 192*74fe6c29SRuslan Bukin return ptu_passed(); 193*74fe6c29SRuslan Bukin } 194*74fe6c29SRuslan Bukin 195*74fe6c29SRuslan Bukin static struct ptunit_result fetch_mode_exec(struct fetch_fixture *ffix) 196*74fe6c29SRuslan Bukin { 197*74fe6c29SRuslan Bukin struct pt_packet packet; 198*74fe6c29SRuslan Bukin 199*74fe6c29SRuslan Bukin memset(&packet, 0, sizeof(packet)); 200*74fe6c29SRuslan Bukin packet.type = ppt_mode; 201*74fe6c29SRuslan Bukin packet.payload.mode.leaf = pt_mol_exec; 202*74fe6c29SRuslan Bukin 203*74fe6c29SRuslan Bukin ptu_test(fetch_packet, ffix, &packet, &pt_decode_mode); 204*74fe6c29SRuslan Bukin 205*74fe6c29SRuslan Bukin return ptu_passed(); 206*74fe6c29SRuslan Bukin } 207*74fe6c29SRuslan Bukin 208*74fe6c29SRuslan Bukin static struct ptunit_result fetch_mode_tsx(struct fetch_fixture *ffix) 209*74fe6c29SRuslan Bukin { 210*74fe6c29SRuslan Bukin struct pt_packet packet; 211*74fe6c29SRuslan Bukin 212*74fe6c29SRuslan Bukin memset(&packet, 0, sizeof(packet)); 213*74fe6c29SRuslan Bukin packet.type = ppt_mode; 214*74fe6c29SRuslan Bukin packet.payload.mode.leaf = pt_mol_tsx; 215*74fe6c29SRuslan Bukin 216*74fe6c29SRuslan Bukin ptu_test(fetch_packet, ffix, &packet, &pt_decode_mode); 217*74fe6c29SRuslan Bukin 218*74fe6c29SRuslan Bukin return ptu_passed(); 219*74fe6c29SRuslan Bukin } 220*74fe6c29SRuslan Bukin 221*74fe6c29SRuslan Bukin static struct ptunit_result fetch_exstop_ip(struct fetch_fixture *ffix) 222*74fe6c29SRuslan Bukin { 223*74fe6c29SRuslan Bukin struct pt_packet packet; 224*74fe6c29SRuslan Bukin 225*74fe6c29SRuslan Bukin memset(&packet, 0, sizeof(packet)); 226*74fe6c29SRuslan Bukin packet.type = ppt_exstop; 227*74fe6c29SRuslan Bukin packet.payload.exstop.ip = 1; 228*74fe6c29SRuslan Bukin 229*74fe6c29SRuslan Bukin ptu_test(fetch_packet, ffix, &packet, &pt_decode_exstop); 230*74fe6c29SRuslan Bukin 231*74fe6c29SRuslan Bukin return ptu_passed(); 232*74fe6c29SRuslan Bukin } 233*74fe6c29SRuslan Bukin 234*74fe6c29SRuslan Bukin int main(int argc, char **argv) 235*74fe6c29SRuslan Bukin { 236*74fe6c29SRuslan Bukin struct fetch_fixture ffix; 237*74fe6c29SRuslan Bukin struct ptunit_suite suite; 238*74fe6c29SRuslan Bukin 239*74fe6c29SRuslan Bukin ffix.init = ffix_init; 240*74fe6c29SRuslan Bukin ffix.fini = ffix_fini; 241*74fe6c29SRuslan Bukin 242*74fe6c29SRuslan Bukin suite = ptunit_mk_suite(argc, argv); 243*74fe6c29SRuslan Bukin 244*74fe6c29SRuslan Bukin ptu_run_f(suite, fetch_null, ffix); 245*74fe6c29SRuslan Bukin ptu_run_f(suite, fetch_empty, ffix); 246*74fe6c29SRuslan Bukin 247*74fe6c29SRuslan Bukin ptu_run_f(suite, fetch_unknown, ffix); 248*74fe6c29SRuslan Bukin ptu_run_f(suite, fetch_unknown_ext, ffix); 249*74fe6c29SRuslan Bukin ptu_run_f(suite, fetch_unknown_ext2, ffix); 250*74fe6c29SRuslan Bukin 251*74fe6c29SRuslan Bukin ptu_run_fp(suite, fetch_type, ffix, ppt_pad, &pt_decode_pad); 252*74fe6c29SRuslan Bukin ptu_run_fp(suite, fetch_type, ffix, ppt_psb, &pt_decode_psb); 253*74fe6c29SRuslan Bukin ptu_run_fp(suite, fetch_type, ffix, ppt_tip, &pt_decode_tip); 254*74fe6c29SRuslan Bukin ptu_run_fp(suite, fetch_type, ffix, ppt_tnt_64, &pt_decode_tnt_64); 255*74fe6c29SRuslan Bukin ptu_run_fp(suite, fetch_type, ffix, ppt_tip_pge, &pt_decode_tip_pge); 256*74fe6c29SRuslan Bukin ptu_run_fp(suite, fetch_type, ffix, ppt_tip_pgd, &pt_decode_tip_pgd); 257*74fe6c29SRuslan Bukin ptu_run_fp(suite, fetch_type, ffix, ppt_fup, &pt_decode_fup); 258*74fe6c29SRuslan Bukin ptu_run_fp(suite, fetch_type, ffix, ppt_pip, &pt_decode_pip); 259*74fe6c29SRuslan Bukin ptu_run_fp(suite, fetch_type, ffix, ppt_ovf, &pt_decode_ovf); 260*74fe6c29SRuslan Bukin ptu_run_fp(suite, fetch_type, ffix, ppt_psbend, &pt_decode_psbend); 261*74fe6c29SRuslan Bukin ptu_run_fp(suite, fetch_type, ffix, ppt_tsc, &pt_decode_tsc); 262*74fe6c29SRuslan Bukin ptu_run_fp(suite, fetch_type, ffix, ppt_cbr, &pt_decode_cbr); 263*74fe6c29SRuslan Bukin ptu_run_fp(suite, fetch_type, ffix, ppt_tma, &pt_decode_tma); 264*74fe6c29SRuslan Bukin ptu_run_fp(suite, fetch_type, ffix, ppt_mtc, &pt_decode_mtc); 265*74fe6c29SRuslan Bukin ptu_run_fp(suite, fetch_type, ffix, ppt_cyc, &pt_decode_cyc); 266*74fe6c29SRuslan Bukin ptu_run_fp(suite, fetch_type, ffix, ppt_stop, &pt_decode_stop); 267*74fe6c29SRuslan Bukin ptu_run_fp(suite, fetch_type, ffix, ppt_vmcs, &pt_decode_vmcs); 268*74fe6c29SRuslan Bukin ptu_run_fp(suite, fetch_type, ffix, ppt_mnt, &pt_decode_mnt); 269*74fe6c29SRuslan Bukin ptu_run_fp(suite, fetch_type, ffix, ppt_exstop, &pt_decode_exstop); 270*74fe6c29SRuslan Bukin ptu_run_fp(suite, fetch_type, ffix, ppt_mwait, &pt_decode_mwait); 271*74fe6c29SRuslan Bukin ptu_run_fp(suite, fetch_type, ffix, ppt_pwre, &pt_decode_pwre); 272*74fe6c29SRuslan Bukin ptu_run_fp(suite, fetch_type, ffix, ppt_pwrx, &pt_decode_pwrx); 273*74fe6c29SRuslan Bukin ptu_run_fp(suite, fetch_type, ffix, ppt_ptw, &pt_decode_ptw); 274*74fe6c29SRuslan Bukin 275*74fe6c29SRuslan Bukin ptu_run_f(suite, fetch_tnt_8, ffix); 276*74fe6c29SRuslan Bukin ptu_run_f(suite, fetch_mode_exec, ffix); 277*74fe6c29SRuslan Bukin ptu_run_f(suite, fetch_mode_tsx, ffix); 278*74fe6c29SRuslan Bukin ptu_run_f(suite, fetch_exstop_ip, ffix); 279*74fe6c29SRuslan Bukin 280*74fe6c29SRuslan Bukin return ptunit_report(&suite); 281*74fe6c29SRuslan Bukin } 282*74fe6c29SRuslan Bukin 283*74fe6c29SRuslan Bukin 284*74fe6c29SRuslan Bukin /* Dummy decode functions to satisfy link dependencies. 285*74fe6c29SRuslan Bukin * 286*74fe6c29SRuslan Bukin * As a nice side-effect, we will know if we need to add more tests when 287*74fe6c29SRuslan Bukin * adding new decoder functions. 288*74fe6c29SRuslan Bukin */ 289*74fe6c29SRuslan Bukin int pt_pkt_decode_unknown(struct pt_packet_decoder *d, struct pt_packet *p) 290*74fe6c29SRuslan Bukin { 291*74fe6c29SRuslan Bukin (void) d; 292*74fe6c29SRuslan Bukin (void) p; 293*74fe6c29SRuslan Bukin 294*74fe6c29SRuslan Bukin return -pte_internal; 295*74fe6c29SRuslan Bukin } 296*74fe6c29SRuslan Bukin int pt_qry_decode_unknown(struct pt_query_decoder *d) 297*74fe6c29SRuslan Bukin { 298*74fe6c29SRuslan Bukin (void) d; 299*74fe6c29SRuslan Bukin 300*74fe6c29SRuslan Bukin return -pte_internal; 301*74fe6c29SRuslan Bukin } 302*74fe6c29SRuslan Bukin 303*74fe6c29SRuslan Bukin int pt_pkt_decode_pad(struct pt_packet_decoder *d, struct pt_packet *p) 304*74fe6c29SRuslan Bukin { 305*74fe6c29SRuslan Bukin (void) d; 306*74fe6c29SRuslan Bukin (void) p; 307*74fe6c29SRuslan Bukin 308*74fe6c29SRuslan Bukin return -pte_internal; 309*74fe6c29SRuslan Bukin } 310*74fe6c29SRuslan Bukin int pt_qry_decode_pad(struct pt_query_decoder *d) 311*74fe6c29SRuslan Bukin { 312*74fe6c29SRuslan Bukin (void) d; 313*74fe6c29SRuslan Bukin 314*74fe6c29SRuslan Bukin return -pte_internal; 315*74fe6c29SRuslan Bukin } 316*74fe6c29SRuslan Bukin 317*74fe6c29SRuslan Bukin int pt_pkt_decode_psb(struct pt_packet_decoder *d, struct pt_packet *p) 318*74fe6c29SRuslan Bukin { 319*74fe6c29SRuslan Bukin (void) d; 320*74fe6c29SRuslan Bukin (void) p; 321*74fe6c29SRuslan Bukin 322*74fe6c29SRuslan Bukin return -pte_internal; 323*74fe6c29SRuslan Bukin } 324*74fe6c29SRuslan Bukin int pt_qry_decode_psb(struct pt_query_decoder *d) 325*74fe6c29SRuslan Bukin { 326*74fe6c29SRuslan Bukin (void) d; 327*74fe6c29SRuslan Bukin 328*74fe6c29SRuslan Bukin return -pte_internal; 329*74fe6c29SRuslan Bukin } 330*74fe6c29SRuslan Bukin 331*74fe6c29SRuslan Bukin int pt_pkt_decode_tip(struct pt_packet_decoder *d, struct pt_packet *p) 332*74fe6c29SRuslan Bukin { 333*74fe6c29SRuslan Bukin (void) d; 334*74fe6c29SRuslan Bukin (void) p; 335*74fe6c29SRuslan Bukin 336*74fe6c29SRuslan Bukin return -pte_internal; 337*74fe6c29SRuslan Bukin } 338*74fe6c29SRuslan Bukin int pt_qry_decode_tip(struct pt_query_decoder *d) 339*74fe6c29SRuslan Bukin { 340*74fe6c29SRuslan Bukin (void) d; 341*74fe6c29SRuslan Bukin 342*74fe6c29SRuslan Bukin return -pte_internal; 343*74fe6c29SRuslan Bukin } 344*74fe6c29SRuslan Bukin 345*74fe6c29SRuslan Bukin int pt_pkt_decode_tnt_8(struct pt_packet_decoder *d, struct pt_packet *p) 346*74fe6c29SRuslan Bukin { 347*74fe6c29SRuslan Bukin (void) d; 348*74fe6c29SRuslan Bukin (void) p; 349*74fe6c29SRuslan Bukin 350*74fe6c29SRuslan Bukin return -pte_internal; 351*74fe6c29SRuslan Bukin } 352*74fe6c29SRuslan Bukin int pt_qry_decode_tnt_8(struct pt_query_decoder *d) 353*74fe6c29SRuslan Bukin { 354*74fe6c29SRuslan Bukin (void) d; 355*74fe6c29SRuslan Bukin 356*74fe6c29SRuslan Bukin return -pte_internal; 357*74fe6c29SRuslan Bukin } 358*74fe6c29SRuslan Bukin 359*74fe6c29SRuslan Bukin int pt_pkt_decode_tnt_64(struct pt_packet_decoder *d, struct pt_packet *p) 360*74fe6c29SRuslan Bukin { 361*74fe6c29SRuslan Bukin (void) d; 362*74fe6c29SRuslan Bukin (void) p; 363*74fe6c29SRuslan Bukin 364*74fe6c29SRuslan Bukin return -pte_internal; 365*74fe6c29SRuslan Bukin } 366*74fe6c29SRuslan Bukin int pt_qry_decode_tnt_64(struct pt_query_decoder *d) 367*74fe6c29SRuslan Bukin { 368*74fe6c29SRuslan Bukin (void) d; 369*74fe6c29SRuslan Bukin 370*74fe6c29SRuslan Bukin return -pte_internal; 371*74fe6c29SRuslan Bukin } 372*74fe6c29SRuslan Bukin 373*74fe6c29SRuslan Bukin int pt_pkt_decode_tip_pge(struct pt_packet_decoder *d, struct pt_packet *p) 374*74fe6c29SRuslan Bukin { 375*74fe6c29SRuslan Bukin (void) d; 376*74fe6c29SRuslan Bukin (void) p; 377*74fe6c29SRuslan Bukin 378*74fe6c29SRuslan Bukin return -pte_internal; 379*74fe6c29SRuslan Bukin } 380*74fe6c29SRuslan Bukin int pt_qry_decode_tip_pge(struct pt_query_decoder *d) 381*74fe6c29SRuslan Bukin { 382*74fe6c29SRuslan Bukin (void) d; 383*74fe6c29SRuslan Bukin 384*74fe6c29SRuslan Bukin return -pte_internal; 385*74fe6c29SRuslan Bukin } 386*74fe6c29SRuslan Bukin 387*74fe6c29SRuslan Bukin int pt_pkt_decode_tip_pgd(struct pt_packet_decoder *d, struct pt_packet *p) 388*74fe6c29SRuslan Bukin { 389*74fe6c29SRuslan Bukin (void) d; 390*74fe6c29SRuslan Bukin (void) p; 391*74fe6c29SRuslan Bukin 392*74fe6c29SRuslan Bukin return -pte_internal; 393*74fe6c29SRuslan Bukin } 394*74fe6c29SRuslan Bukin int pt_qry_decode_tip_pgd(struct pt_query_decoder *d) 395*74fe6c29SRuslan Bukin { 396*74fe6c29SRuslan Bukin (void) d; 397*74fe6c29SRuslan Bukin 398*74fe6c29SRuslan Bukin return -pte_internal; 399*74fe6c29SRuslan Bukin } 400*74fe6c29SRuslan Bukin 401*74fe6c29SRuslan Bukin int pt_pkt_decode_fup(struct pt_packet_decoder *d, struct pt_packet *p) 402*74fe6c29SRuslan Bukin { 403*74fe6c29SRuslan Bukin (void) d; 404*74fe6c29SRuslan Bukin (void) p; 405*74fe6c29SRuslan Bukin 406*74fe6c29SRuslan Bukin return -pte_internal; 407*74fe6c29SRuslan Bukin } 408*74fe6c29SRuslan Bukin int pt_qry_decode_fup(struct pt_query_decoder *d) 409*74fe6c29SRuslan Bukin { 410*74fe6c29SRuslan Bukin (void) d; 411*74fe6c29SRuslan Bukin 412*74fe6c29SRuslan Bukin return -pte_internal; 413*74fe6c29SRuslan Bukin } 414*74fe6c29SRuslan Bukin int pt_qry_header_fup(struct pt_query_decoder *d) 415*74fe6c29SRuslan Bukin { 416*74fe6c29SRuslan Bukin (void) d; 417*74fe6c29SRuslan Bukin 418*74fe6c29SRuslan Bukin return -pte_internal; 419*74fe6c29SRuslan Bukin } 420*74fe6c29SRuslan Bukin 421*74fe6c29SRuslan Bukin int pt_pkt_decode_pip(struct pt_packet_decoder *d, struct pt_packet *p) 422*74fe6c29SRuslan Bukin { 423*74fe6c29SRuslan Bukin (void) d; 424*74fe6c29SRuslan Bukin (void) p; 425*74fe6c29SRuslan Bukin 426*74fe6c29SRuslan Bukin return -pte_internal; 427*74fe6c29SRuslan Bukin } 428*74fe6c29SRuslan Bukin int pt_qry_decode_pip(struct pt_query_decoder *d) 429*74fe6c29SRuslan Bukin { 430*74fe6c29SRuslan Bukin (void) d; 431*74fe6c29SRuslan Bukin 432*74fe6c29SRuslan Bukin return -pte_internal; 433*74fe6c29SRuslan Bukin } 434*74fe6c29SRuslan Bukin int pt_qry_header_pip(struct pt_query_decoder *d) 435*74fe6c29SRuslan Bukin { 436*74fe6c29SRuslan Bukin (void) d; 437*74fe6c29SRuslan Bukin 438*74fe6c29SRuslan Bukin return -pte_internal; 439*74fe6c29SRuslan Bukin } 440*74fe6c29SRuslan Bukin 441*74fe6c29SRuslan Bukin int pt_pkt_decode_ovf(struct pt_packet_decoder *d, struct pt_packet *p) 442*74fe6c29SRuslan Bukin { 443*74fe6c29SRuslan Bukin (void) d; 444*74fe6c29SRuslan Bukin (void) p; 445*74fe6c29SRuslan Bukin 446*74fe6c29SRuslan Bukin return -pte_internal; 447*74fe6c29SRuslan Bukin } 448*74fe6c29SRuslan Bukin int pt_qry_decode_ovf(struct pt_query_decoder *d) 449*74fe6c29SRuslan Bukin { 450*74fe6c29SRuslan Bukin (void) d; 451*74fe6c29SRuslan Bukin 452*74fe6c29SRuslan Bukin return -pte_internal; 453*74fe6c29SRuslan Bukin } 454*74fe6c29SRuslan Bukin 455*74fe6c29SRuslan Bukin int pt_pkt_decode_mode(struct pt_packet_decoder *d, struct pt_packet *p) 456*74fe6c29SRuslan Bukin { 457*74fe6c29SRuslan Bukin (void) d; 458*74fe6c29SRuslan Bukin (void) p; 459*74fe6c29SRuslan Bukin 460*74fe6c29SRuslan Bukin return -pte_internal; 461*74fe6c29SRuslan Bukin } 462*74fe6c29SRuslan Bukin int pt_qry_decode_mode(struct pt_query_decoder *d) 463*74fe6c29SRuslan Bukin { 464*74fe6c29SRuslan Bukin (void) d; 465*74fe6c29SRuslan Bukin 466*74fe6c29SRuslan Bukin return -pte_internal; 467*74fe6c29SRuslan Bukin } 468*74fe6c29SRuslan Bukin int pt_qry_header_mode(struct pt_query_decoder *d) 469*74fe6c29SRuslan Bukin { 470*74fe6c29SRuslan Bukin (void) d; 471*74fe6c29SRuslan Bukin 472*74fe6c29SRuslan Bukin return -pte_internal; 473*74fe6c29SRuslan Bukin } 474*74fe6c29SRuslan Bukin 475*74fe6c29SRuslan Bukin int pt_pkt_decode_psbend(struct pt_packet_decoder *d, struct pt_packet *p) 476*74fe6c29SRuslan Bukin { 477*74fe6c29SRuslan Bukin (void) d; 478*74fe6c29SRuslan Bukin (void) p; 479*74fe6c29SRuslan Bukin 480*74fe6c29SRuslan Bukin return -pte_internal; 481*74fe6c29SRuslan Bukin } 482*74fe6c29SRuslan Bukin int pt_qry_decode_psbend(struct pt_query_decoder *d) 483*74fe6c29SRuslan Bukin { 484*74fe6c29SRuslan Bukin (void) d; 485*74fe6c29SRuslan Bukin 486*74fe6c29SRuslan Bukin return -pte_internal; 487*74fe6c29SRuslan Bukin } 488*74fe6c29SRuslan Bukin 489*74fe6c29SRuslan Bukin int pt_pkt_decode_tsc(struct pt_packet_decoder *d, struct pt_packet *p) 490*74fe6c29SRuslan Bukin { 491*74fe6c29SRuslan Bukin (void) d; 492*74fe6c29SRuslan Bukin (void) p; 493*74fe6c29SRuslan Bukin 494*74fe6c29SRuslan Bukin return -pte_internal; 495*74fe6c29SRuslan Bukin } 496*74fe6c29SRuslan Bukin int pt_qry_decode_tsc(struct pt_query_decoder *d) 497*74fe6c29SRuslan Bukin { 498*74fe6c29SRuslan Bukin (void) d; 499*74fe6c29SRuslan Bukin 500*74fe6c29SRuslan Bukin return -pte_internal; 501*74fe6c29SRuslan Bukin } 502*74fe6c29SRuslan Bukin int pt_qry_header_tsc(struct pt_query_decoder *d) 503*74fe6c29SRuslan Bukin { 504*74fe6c29SRuslan Bukin (void) d; 505*74fe6c29SRuslan Bukin 506*74fe6c29SRuslan Bukin return -pte_internal; 507*74fe6c29SRuslan Bukin } 508*74fe6c29SRuslan Bukin 509*74fe6c29SRuslan Bukin int pt_pkt_decode_cbr(struct pt_packet_decoder *d, struct pt_packet *p) 510*74fe6c29SRuslan Bukin { 511*74fe6c29SRuslan Bukin (void) d; 512*74fe6c29SRuslan Bukin (void) p; 513*74fe6c29SRuslan Bukin 514*74fe6c29SRuslan Bukin return -pte_internal; 515*74fe6c29SRuslan Bukin } 516*74fe6c29SRuslan Bukin int pt_qry_decode_cbr(struct pt_query_decoder *d) 517*74fe6c29SRuslan Bukin { 518*74fe6c29SRuslan Bukin (void) d; 519*74fe6c29SRuslan Bukin 520*74fe6c29SRuslan Bukin return -pte_internal; 521*74fe6c29SRuslan Bukin } 522*74fe6c29SRuslan Bukin int pt_qry_header_cbr(struct pt_query_decoder *d) 523*74fe6c29SRuslan Bukin { 524*74fe6c29SRuslan Bukin (void) d; 525*74fe6c29SRuslan Bukin 526*74fe6c29SRuslan Bukin return -pte_internal; 527*74fe6c29SRuslan Bukin } 528*74fe6c29SRuslan Bukin 529*74fe6c29SRuslan Bukin int pt_pkt_decode_tma(struct pt_packet_decoder *d, struct pt_packet *p) 530*74fe6c29SRuslan Bukin { 531*74fe6c29SRuslan Bukin (void) d; 532*74fe6c29SRuslan Bukin (void) p; 533*74fe6c29SRuslan Bukin 534*74fe6c29SRuslan Bukin return -pte_internal; 535*74fe6c29SRuslan Bukin } 536*74fe6c29SRuslan Bukin int pt_qry_decode_tma(struct pt_query_decoder *d) 537*74fe6c29SRuslan Bukin { 538*74fe6c29SRuslan Bukin (void) d; 539*74fe6c29SRuslan Bukin 540*74fe6c29SRuslan Bukin return -pte_internal; 541*74fe6c29SRuslan Bukin } 542*74fe6c29SRuslan Bukin 543*74fe6c29SRuslan Bukin int pt_pkt_decode_mtc(struct pt_packet_decoder *d, struct pt_packet *p) 544*74fe6c29SRuslan Bukin { 545*74fe6c29SRuslan Bukin (void) d; 546*74fe6c29SRuslan Bukin (void) p; 547*74fe6c29SRuslan Bukin 548*74fe6c29SRuslan Bukin return -pte_internal; 549*74fe6c29SRuslan Bukin } 550*74fe6c29SRuslan Bukin int pt_qry_decode_mtc(struct pt_query_decoder *d) 551*74fe6c29SRuslan Bukin { 552*74fe6c29SRuslan Bukin (void) d; 553*74fe6c29SRuslan Bukin 554*74fe6c29SRuslan Bukin return -pte_internal; 555*74fe6c29SRuslan Bukin } 556*74fe6c29SRuslan Bukin 557*74fe6c29SRuslan Bukin int pt_pkt_decode_cyc(struct pt_packet_decoder *d, struct pt_packet *p) 558*74fe6c29SRuslan Bukin { 559*74fe6c29SRuslan Bukin (void) d; 560*74fe6c29SRuslan Bukin (void) p; 561*74fe6c29SRuslan Bukin 562*74fe6c29SRuslan Bukin return -pte_internal; 563*74fe6c29SRuslan Bukin } 564*74fe6c29SRuslan Bukin int pt_qry_decode_cyc(struct pt_query_decoder *d) 565*74fe6c29SRuslan Bukin { 566*74fe6c29SRuslan Bukin (void) d; 567*74fe6c29SRuslan Bukin 568*74fe6c29SRuslan Bukin return -pte_internal; 569*74fe6c29SRuslan Bukin } 570*74fe6c29SRuslan Bukin 571*74fe6c29SRuslan Bukin int pt_pkt_decode_stop(struct pt_packet_decoder *d, struct pt_packet *p) 572*74fe6c29SRuslan Bukin { 573*74fe6c29SRuslan Bukin (void) d; 574*74fe6c29SRuslan Bukin (void) p; 575*74fe6c29SRuslan Bukin 576*74fe6c29SRuslan Bukin return -pte_internal; 577*74fe6c29SRuslan Bukin } 578*74fe6c29SRuslan Bukin int pt_qry_decode_stop(struct pt_query_decoder *d) 579*74fe6c29SRuslan Bukin { 580*74fe6c29SRuslan Bukin (void) d; 581*74fe6c29SRuslan Bukin 582*74fe6c29SRuslan Bukin return -pte_internal; 583*74fe6c29SRuslan Bukin } 584*74fe6c29SRuslan Bukin 585*74fe6c29SRuslan Bukin int pt_pkt_decode_vmcs(struct pt_packet_decoder *d, struct pt_packet *p) 586*74fe6c29SRuslan Bukin { 587*74fe6c29SRuslan Bukin (void) d; 588*74fe6c29SRuslan Bukin (void) p; 589*74fe6c29SRuslan Bukin 590*74fe6c29SRuslan Bukin return -pte_internal; 591*74fe6c29SRuslan Bukin } 592*74fe6c29SRuslan Bukin int pt_qry_decode_vmcs(struct pt_query_decoder *d) 593*74fe6c29SRuslan Bukin { 594*74fe6c29SRuslan Bukin (void) d; 595*74fe6c29SRuslan Bukin 596*74fe6c29SRuslan Bukin return -pte_internal; 597*74fe6c29SRuslan Bukin } 598*74fe6c29SRuslan Bukin int pt_qry_header_vmcs(struct pt_query_decoder *d) 599*74fe6c29SRuslan Bukin { 600*74fe6c29SRuslan Bukin (void) d; 601*74fe6c29SRuslan Bukin 602*74fe6c29SRuslan Bukin return -pte_internal; 603*74fe6c29SRuslan Bukin } 604*74fe6c29SRuslan Bukin 605*74fe6c29SRuslan Bukin int pt_pkt_decode_mnt(struct pt_packet_decoder *d, struct pt_packet *p) 606*74fe6c29SRuslan Bukin { 607*74fe6c29SRuslan Bukin (void) d; 608*74fe6c29SRuslan Bukin (void) p; 609*74fe6c29SRuslan Bukin 610*74fe6c29SRuslan Bukin return -pte_internal; 611*74fe6c29SRuslan Bukin } 612*74fe6c29SRuslan Bukin int pt_qry_decode_mnt(struct pt_query_decoder *d) 613*74fe6c29SRuslan Bukin { 614*74fe6c29SRuslan Bukin (void) d; 615*74fe6c29SRuslan Bukin 616*74fe6c29SRuslan Bukin return -pte_internal; 617*74fe6c29SRuslan Bukin } 618*74fe6c29SRuslan Bukin int pt_qry_header_mnt(struct pt_query_decoder *d) 619*74fe6c29SRuslan Bukin { 620*74fe6c29SRuslan Bukin (void) d; 621*74fe6c29SRuslan Bukin 622*74fe6c29SRuslan Bukin return -pte_internal; 623*74fe6c29SRuslan Bukin } 624*74fe6c29SRuslan Bukin 625*74fe6c29SRuslan Bukin int pt_pkt_decode_exstop(struct pt_packet_decoder *d, struct pt_packet *p) 626*74fe6c29SRuslan Bukin { 627*74fe6c29SRuslan Bukin (void) d; 628*74fe6c29SRuslan Bukin (void) p; 629*74fe6c29SRuslan Bukin 630*74fe6c29SRuslan Bukin return -pte_internal; 631*74fe6c29SRuslan Bukin } 632*74fe6c29SRuslan Bukin int pt_qry_decode_exstop(struct pt_query_decoder *d) 633*74fe6c29SRuslan Bukin { 634*74fe6c29SRuslan Bukin (void) d; 635*74fe6c29SRuslan Bukin 636*74fe6c29SRuslan Bukin return -pte_internal; 637*74fe6c29SRuslan Bukin } 638*74fe6c29SRuslan Bukin 639*74fe6c29SRuslan Bukin int pt_pkt_decode_mwait(struct pt_packet_decoder *d, struct pt_packet *p) 640*74fe6c29SRuslan Bukin { 641*74fe6c29SRuslan Bukin (void) d; 642*74fe6c29SRuslan Bukin (void) p; 643*74fe6c29SRuslan Bukin 644*74fe6c29SRuslan Bukin return -pte_internal; 645*74fe6c29SRuslan Bukin } 646*74fe6c29SRuslan Bukin int pt_qry_decode_mwait(struct pt_query_decoder *d) 647*74fe6c29SRuslan Bukin { 648*74fe6c29SRuslan Bukin (void) d; 649*74fe6c29SRuslan Bukin 650*74fe6c29SRuslan Bukin return -pte_internal; 651*74fe6c29SRuslan Bukin } 652*74fe6c29SRuslan Bukin 653*74fe6c29SRuslan Bukin int pt_pkt_decode_pwre(struct pt_packet_decoder *d, struct pt_packet *p) 654*74fe6c29SRuslan Bukin { 655*74fe6c29SRuslan Bukin (void) d; 656*74fe6c29SRuslan Bukin (void) p; 657*74fe6c29SRuslan Bukin 658*74fe6c29SRuslan Bukin return -pte_internal; 659*74fe6c29SRuslan Bukin } 660*74fe6c29SRuslan Bukin int pt_qry_decode_pwre(struct pt_query_decoder *d) 661*74fe6c29SRuslan Bukin { 662*74fe6c29SRuslan Bukin (void) d; 663*74fe6c29SRuslan Bukin 664*74fe6c29SRuslan Bukin return -pte_internal; 665*74fe6c29SRuslan Bukin } 666*74fe6c29SRuslan Bukin 667*74fe6c29SRuslan Bukin int pt_pkt_decode_pwrx(struct pt_packet_decoder *d, struct pt_packet *p) 668*74fe6c29SRuslan Bukin { 669*74fe6c29SRuslan Bukin (void) d; 670*74fe6c29SRuslan Bukin (void) p; 671*74fe6c29SRuslan Bukin 672*74fe6c29SRuslan Bukin return -pte_internal; 673*74fe6c29SRuslan Bukin } 674*74fe6c29SRuslan Bukin int pt_qry_decode_pwrx(struct pt_query_decoder *d) 675*74fe6c29SRuslan Bukin { 676*74fe6c29SRuslan Bukin (void) d; 677*74fe6c29SRuslan Bukin 678*74fe6c29SRuslan Bukin return -pte_internal; 679*74fe6c29SRuslan Bukin } 680*74fe6c29SRuslan Bukin 681*74fe6c29SRuslan Bukin int pt_pkt_decode_ptw(struct pt_packet_decoder *d, struct pt_packet *p) 682*74fe6c29SRuslan Bukin { 683*74fe6c29SRuslan Bukin (void) d; 684*74fe6c29SRuslan Bukin (void) p; 685*74fe6c29SRuslan Bukin 686*74fe6c29SRuslan Bukin return -pte_internal; 687*74fe6c29SRuslan Bukin } 688*74fe6c29SRuslan Bukin int pt_qry_decode_ptw(struct pt_query_decoder *d) 689*74fe6c29SRuslan Bukin { 690*74fe6c29SRuslan Bukin (void) d; 691*74fe6c29SRuslan Bukin 692*74fe6c29SRuslan Bukin return -pte_internal; 693*74fe6c29SRuslan Bukin } 694