@@ -923,6 +923,7 @@ static int intel_pt_walk_psbend(struct intel_pt_decoder *decoder)
923923 case INTEL_PT_TIP_PGE :
924924 case INTEL_PT_TIP :
925925 case INTEL_PT_TNT :
926+ case INTEL_PT_TRACESTOP :
926927 case INTEL_PT_BAD :
927928 case INTEL_PT_PSB :
928929 intel_pt_log ("ERROR: Unexpected packet\n" );
@@ -935,6 +936,9 @@ static int intel_pt_walk_psbend(struct intel_pt_decoder *decoder)
935936 intel_pt_calc_tsc_timestamp (decoder );
936937 break ;
937938
939+ case INTEL_PT_TMA :
940+ break ;
941+
938942 case INTEL_PT_CBR :
939943 decoder -> cbr = decoder -> packet .payload ;
940944 break ;
@@ -944,7 +948,7 @@ static int intel_pt_walk_psbend(struct intel_pt_decoder *decoder)
944948 break ;
945949
946950 case INTEL_PT_PIP :
947- decoder -> cr3 = decoder -> packet .payload ;
951+ decoder -> cr3 = decoder -> packet .payload & ( BIT63 - 1 ) ;
948952 break ;
949953
950954 case INTEL_PT_FUP :
@@ -956,6 +960,12 @@ static int intel_pt_walk_psbend(struct intel_pt_decoder *decoder)
956960 intel_pt_update_in_tx (decoder );
957961 break ;
958962
963+ case INTEL_PT_MTC :
964+ break ;
965+
966+ case INTEL_PT_CYC :
967+ case INTEL_PT_VMCS :
968+ case INTEL_PT_MNT :
959969 case INTEL_PT_PAD :
960970 default :
961971 break ;
@@ -983,8 +993,10 @@ static int intel_pt_walk_fup_tip(struct intel_pt_decoder *decoder)
983993 switch (decoder -> packet .type ) {
984994 case INTEL_PT_TNT :
985995 case INTEL_PT_FUP :
996+ case INTEL_PT_TRACESTOP :
986997 case INTEL_PT_PSB :
987998 case INTEL_PT_TSC :
999+ case INTEL_PT_TMA :
9881000 case INTEL_PT_CBR :
9891001 case INTEL_PT_MODE_TSX :
9901002 case INTEL_PT_BAD :
@@ -1032,13 +1044,21 @@ static int intel_pt_walk_fup_tip(struct intel_pt_decoder *decoder)
10321044 return 0 ;
10331045
10341046 case INTEL_PT_PIP :
1035- decoder -> cr3 = decoder -> packet .payload ;
1047+ decoder -> cr3 = decoder -> packet .payload & (BIT63 - 1 );
1048+ break ;
1049+
1050+ case INTEL_PT_MTC :
1051+ break ;
1052+
1053+ case INTEL_PT_CYC :
10361054 break ;
10371055
10381056 case INTEL_PT_MODE_EXEC :
10391057 decoder -> exec_mode = decoder -> packet .payload ;
10401058 break ;
10411059
1060+ case INTEL_PT_VMCS :
1061+ case INTEL_PT_MNT :
10421062 case INTEL_PT_PAD :
10431063 break ;
10441064
@@ -1122,6 +1142,9 @@ static int intel_pt_walk_trace(struct intel_pt_decoder *decoder)
11221142 }
11231143 return intel_pt_walk_fup_tip (decoder );
11241144
1145+ case INTEL_PT_TRACESTOP :
1146+ break ;
1147+
11251148 case INTEL_PT_PSB :
11261149 intel_pt_clear_stack (& decoder -> stack );
11271150 err = intel_pt_walk_psbend (decoder );
@@ -1132,13 +1155,22 @@ static int intel_pt_walk_trace(struct intel_pt_decoder *decoder)
11321155 break ;
11331156
11341157 case INTEL_PT_PIP :
1135- decoder -> cr3 = decoder -> packet .payload ;
1158+ decoder -> cr3 = decoder -> packet .payload & (BIT63 - 1 );
1159+ break ;
1160+
1161+ case INTEL_PT_MTC :
11361162 break ;
11371163
11381164 case INTEL_PT_TSC :
11391165 intel_pt_calc_tsc_timestamp (decoder );
11401166 break ;
11411167
1168+ case INTEL_PT_TMA :
1169+ break ;
1170+
1171+ case INTEL_PT_CYC :
1172+ break ;
1173+
11421174 case INTEL_PT_CBR :
11431175 decoder -> cbr = decoder -> packet .payload ;
11441176 break ;
@@ -1162,6 +1194,8 @@ static int intel_pt_walk_trace(struct intel_pt_decoder *decoder)
11621194 return intel_pt_bug (decoder );
11631195
11641196 case INTEL_PT_PSBEND :
1197+ case INTEL_PT_VMCS :
1198+ case INTEL_PT_MNT :
11651199 case INTEL_PT_PAD :
11661200 break ;
11671201
@@ -1202,16 +1236,25 @@ static int intel_pt_walk_psb(struct intel_pt_decoder *decoder)
12021236 }
12031237 break ;
12041238
1239+ case INTEL_PT_MTC :
1240+ break ;
1241+
12051242 case INTEL_PT_TSC :
12061243 intel_pt_calc_tsc_timestamp (decoder );
12071244 break ;
12081245
1246+ case INTEL_PT_TMA :
1247+ break ;
1248+
1249+ case INTEL_PT_CYC :
1250+ break ;
1251+
12091252 case INTEL_PT_CBR :
12101253 decoder -> cbr = decoder -> packet .payload ;
12111254 break ;
12121255
12131256 case INTEL_PT_PIP :
1214- decoder -> cr3 = decoder -> packet .payload ;
1257+ decoder -> cr3 = decoder -> packet .payload & ( BIT63 - 1 ) ;
12151258 break ;
12161259
12171260 case INTEL_PT_MODE_EXEC :
@@ -1222,6 +1265,7 @@ static int intel_pt_walk_psb(struct intel_pt_decoder *decoder)
12221265 intel_pt_update_in_tx (decoder );
12231266 break ;
12241267
1268+ case INTEL_PT_TRACESTOP :
12251269 case INTEL_PT_TNT :
12261270 intel_pt_log ("ERROR: Unexpected packet\n" );
12271271 if (decoder -> ip )
@@ -1240,6 +1284,8 @@ static int intel_pt_walk_psb(struct intel_pt_decoder *decoder)
12401284 return 0 ;
12411285
12421286 case INTEL_PT_PSB :
1287+ case INTEL_PT_VMCS :
1288+ case INTEL_PT_MNT :
12431289 case INTEL_PT_PAD :
12441290 default :
12451291 break ;
@@ -1282,16 +1328,25 @@ static int intel_pt_walk_to_ip(struct intel_pt_decoder *decoder)
12821328 intel_pt_set_last_ip (decoder );
12831329 break ;
12841330
1331+ case INTEL_PT_MTC :
1332+ break ;
1333+
12851334 case INTEL_PT_TSC :
12861335 intel_pt_calc_tsc_timestamp (decoder );
12871336 break ;
12881337
1338+ case INTEL_PT_TMA :
1339+ break ;
1340+
1341+ case INTEL_PT_CYC :
1342+ break ;
1343+
12891344 case INTEL_PT_CBR :
12901345 decoder -> cbr = decoder -> packet .payload ;
12911346 break ;
12921347
12931348 case INTEL_PT_PIP :
1294- decoder -> cr3 = decoder -> packet .payload ;
1349+ decoder -> cr3 = decoder -> packet .payload & ( BIT63 - 1 ) ;
12951350 break ;
12961351
12971352 case INTEL_PT_MODE_EXEC :
@@ -1308,6 +1363,9 @@ static int intel_pt_walk_to_ip(struct intel_pt_decoder *decoder)
13081363 case INTEL_PT_BAD : /* Does not happen */
13091364 return intel_pt_bug (decoder );
13101365
1366+ case INTEL_PT_TRACESTOP :
1367+ break ;
1368+
13111369 case INTEL_PT_PSB :
13121370 err = intel_pt_walk_psb (decoder );
13131371 if (err )
@@ -1321,6 +1379,8 @@ static int intel_pt_walk_to_ip(struct intel_pt_decoder *decoder)
13211379
13221380 case INTEL_PT_TNT :
13231381 case INTEL_PT_PSBEND :
1382+ case INTEL_PT_VMCS :
1383+ case INTEL_PT_MNT :
13241384 case INTEL_PT_PAD :
13251385 default :
13261386 break ;
0 commit comments