summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorLionel Landwerlin <lionel.g.landwerlin@intel.com>2020-04-01 12:50:08 +0300
committerLionel Landwerlin <lionel.g.landwerlin@intel.com>2020-04-01 14:59:40 +0300
commit60475d9b41c58b7d256e83c7d53eaf7c2f1f8ecc (patch)
treee14c3818400fdb0205faa96608e81c6bfeb3e025 /tools
parent9556b29fe3ff142d468c8d0e01a8c4e1c6a26980 (diff)
tools/i915-perf-recorder: fix topology alignment issue
The additional alignment added when writing into the output was not accounted in the header. This is preventing reading the recorded data. Instead of adding the alignment when writing, just account for it when querying the topology. v2: Use calloc Drop unused var Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Fixes: f08865e58cd3 ("tools: add i915 perf recorder tool") Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'tools')
-rw-r--r--tools/i915-perf/i915_perf_recorder.c11
1 files changed, 2 insertions, 9 deletions
diff --git a/tools/i915-perf/i915_perf_recorder.c b/tools/i915-perf/i915_perf_recorder.c
index 4d729b0e..7671f39b 100644
--- a/tools/i915-perf/i915_perf_recorder.c
+++ b/tools/i915-perf/i915_perf_recorder.c
@@ -485,8 +485,8 @@ get_topology(int drm_fd, uint32_t *topology_size)
return NULL;
assert(item.length > 0);
- *topology_size = item.length;
- topo_info = malloc(item.length);
+ *topology_size = ALIGN(item.length, 8);
+ topo_info = calloc(1, *topology_size);
item.data_ptr = (uintptr_t) topo_info;
ret = perf_ioctl(drm_fd, DRM_IOCTL_I915_QUERY, &query);
@@ -501,7 +501,6 @@ write_topology(FILE *output, struct recording_context *ctx)
struct drm_i915_perf_record_header header = {
.type = INTEL_PERF_RECORD_TYPE_DEVICE_TOPOLOGY,
};
- char pad[8] = { 0, };
header.size = sizeof(header) + ctx->topology_size;
if (fwrite(&header, sizeof(header), 1, output) != 1)
@@ -510,12 +509,6 @@ write_topology(FILE *output, struct recording_context *ctx)
if (fwrite(ctx->topology, ctx->topology_size, 1, output) != 1)
return false;
- /* Align the size to align all other packets to 8 bytes. */
- if (ctx->topology_size % 8) {
- if (fwrite(pad, ctx->topology_size % 8, 1, output) != 1)
- return false;
- }
-
return true;
}