diff options
author | Lionel Landwerlin <lionel.g.landwerlin@intel.com> | 2020-04-01 12:50:08 +0300 |
---|---|---|
committer | Lionel Landwerlin <lionel.g.landwerlin@intel.com> | 2020-04-01 14:59:40 +0300 |
commit | 60475d9b41c58b7d256e83c7d53eaf7c2f1f8ecc (patch) | |
tree | e14c3818400fdb0205faa96608e81c6bfeb3e025 /tools | |
parent | 9556b29fe3ff142d468c8d0e01a8c4e1c6a26980 (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.c | 11 |
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; } |