summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/intel/tools/aubinator_error_decode.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/src/intel/tools/aubinator_error_decode.c b/src/intel/tools/aubinator_error_decode.c
index 2735bd72714..4e3359bba9f 100644
--- a/src/intel/tools/aubinator_error_decode.c
+++ b/src/intel/tools/aubinator_error_decode.c
@@ -295,7 +295,8 @@ struct section {
int count;
};
-#define MAX_SECTIONS 30
+#define MAX_SECTIONS 256
+static unsigned num_sections;
static struct section sections[MAX_SECTIONS];
static int zlib_inflate(uint32_t **ptr, int len)
@@ -386,7 +387,7 @@ static int ascii85_decode(const char *in, uint32_t **out, bool inflate)
static struct gen_batch_decode_bo
get_gen_batch_bo(void *user_data, uint64_t address)
{
- for (int s = 0; s < MAX_SECTIONS; s++) {
+ for (int s = 0; s < num_sections; s++) {
if (sections[s].gtt_offset <= address &&
address < sections[s].gtt_offset + sections[s].count * 4) {
return (struct gen_batch_decode_bo) {
@@ -411,7 +412,6 @@ read_data_file(FILE *file)
uint32_t offset, value;
char *ring_name = NULL;
struct gen_device_info devinfo;
- int sect_num = 0;
while (getline(&line, &line_size, file) > 0) {
char *new_ring_name = NULL;
@@ -429,9 +429,10 @@ read_data_file(FILE *file)
fprintf(stderr, "ASCII85 decode failed.\n");
exit(EXIT_FAILURE);
}
- sections[sect_num].data = data;
- sections[sect_num].count = count;
- sect_num++;
+ assert(num_sections < MAX_SECTIONS);
+ sections[num_sections].data = data;
+ sections[num_sections].count = count;
+ num_sections++;
continue;
}
@@ -465,13 +466,14 @@ read_data_file(FILE *file)
break;
}
- sections[sect_num].buffer_name = b->name;
- sections[sect_num].ring_name = strdup(ring_name);
+ assert(num_sections < MAX_SECTIONS);
+ sections[num_sections].buffer_name = b->name;
+ sections[num_sections].ring_name = strdup(ring_name);
uint32_t hi, lo;
dashes = strchr(dashes, '=');
if (dashes && sscanf(dashes, "= 0x%08x %08x\n", &hi, &lo))
- sections[sect_num].gtt_offset = ((uint64_t) hi) << 32 | lo;
+ sections[num_sections].gtt_offset = ((uint64_t) hi) << 32 | lo;
continue;
}
@@ -598,7 +600,7 @@ read_data_file(FILE *file)
xml_path, get_gen_batch_bo, NULL, NULL);
- for (int s = 0; s < sect_num; s++) {
+ for (int s = 0; s < num_sections; s++) {
printf("--- %s (%s) at 0x%08x %08x\n",
sections[s].buffer_name, sections[s].ring_name,
(unsigned) (sections[s].gtt_offset >> 32),
@@ -615,7 +617,7 @@ read_data_file(FILE *file)
gen_batch_decode_ctx_finish(&batch_ctx);
- for (int s = 0; s < sect_num; s++) {
+ for (int s = 0; s < num_sections; s++) {
free(sections[s].ring_name);
free(sections[s].data);
}