diff --git a/src/intel/tools/aubinator_error_decode_xe.c b/src/intel/tools/aubinator_error_decode_xe.c index 13028af72cf..df8901ab1c2 100644 --- a/src/intel/tools/aubinator_error_decode_xe.c +++ b/src/intel/tools/aubinator_error_decode_xe.c @@ -257,6 +257,9 @@ read_xe_data_file(FILE *file, case XE_VM_TOPIC_TYPE_ERROR: printf("HWCTX not present in dump, content will be zeroed: %s\n", line); break; + case XE_VM_TOPIC_TYPE_REPLAY_OFFSET: + case XE_VM_TOPIC_TYPE_REPLAY_LENGTH: + break; default: printf("Not expected line in HWCTX: %s", line); } diff --git a/src/intel/tools/error2hangdump_xe.c b/src/intel/tools/error2hangdump_xe.c index a898400057a..017fa0a57be 100644 --- a/src/intel/tools/error2hangdump_xe.c +++ b/src/intel/tools/error2hangdump_xe.c @@ -61,18 +61,6 @@ read_xe_data_file(FILE *dump_file, FILE *hang_dump_file, bool verbose) const char *value_ptr; char binary_name[64]; - uint64_t u64_value; - - if (error_decode_xe_read_u64_hexacimal_parameter(line, "[HWCTX].replay_offset", &u64_value)) { - error_decode_xe_vm_hw_ctx_set_offset(&xe_vm, u64_value); - break; - } - - if (error_decode_xe_read_u64_hexacimal_parameter(line, "[HWCTX].replay_length", &u64_value)) { - /* replay_length is implicitly contained in size, so we don't need to save it */ - break; - } - if (error_decode_xe_binary_line(line, binary_name, sizeof(binary_name), &type, &value_ptr)) { if (strncmp(binary_name, "HWCTX", strlen("HWCTX")) != 0) break; @@ -96,6 +84,12 @@ read_xe_data_file(FILE *dump_file, FILE *hang_dump_file, bool verbose) case XE_VM_TOPIC_TYPE_ERROR: printf("HWCTX not present in dump, content will be zeroed: %s\n", line); break; + case XE_VM_TOPIC_TYPE_REPLAY_OFFSET: + error_decode_xe_vm_hw_ctx_set_offset(&xe_vm, strtoul(value_ptr, NULL, 0)); + break; + case XE_VM_TOPIC_TYPE_REPLAY_LENGTH: + /* replay_length is implicitly contained in size, so we don't need to save it */ + break; default: printf("Not expected line in HWCTX: %s", line); } diff --git a/src/intel/tools/error_decode_xe_lib.c b/src/intel/tools/error_decode_xe_lib.c index aaa13ac6e9b..bae210f3278 100644 --- a/src/intel/tools/error_decode_xe_lib.c +++ b/src/intel/tools/error_decode_xe_lib.c @@ -11,6 +11,7 @@ #include "error_decode_lib.h" #include "intel/common/intel_gem.h" #include "util/macros.h" +#include "util/compiler.h" static const char * read_parameter_helper(const char *line, const char *parameter) @@ -289,6 +290,15 @@ error_decode_xe_binary_line(const char *line, char *name, int name_len, enum xe_ case 'l': *type = XE_VM_TOPIC_TYPE_LENGTH; break; + case 'r': + if (strncmp(c, "replay_offset", strlen("replay_offset")) == 0) { + *type = XE_VM_TOPIC_TYPE_REPLAY_OFFSET; + break; + } else if (strncmp(c, "replay_length", strlen("replay_length")) == 0) { + *type = XE_VM_TOPIC_TYPE_REPLAY_LENGTH; + break; + } + FALLTHROUGH; default: printf("type char: %c\n", *line); return false; diff --git a/src/intel/tools/error_decode_xe_lib.h b/src/intel/tools/error_decode_xe_lib.h index 018fd5a888e..6e1376e6f96 100644 --- a/src/intel/tools/error_decode_xe_lib.h +++ b/src/intel/tools/error_decode_xe_lib.h @@ -25,6 +25,8 @@ enum xe_vm_topic_type { XE_VM_TOPIC_TYPE_LENGTH, XE_VM_TOPIC_TYPE_DATA, XE_VM_TOPIC_TYPE_PROPERTY, + XE_VM_TOPIC_TYPE_REPLAY_OFFSET, + XE_VM_TOPIC_TYPE_REPLAY_LENGTH, XE_VM_TOPIC_TYPE_ERROR, };