[igt-dev] [PATCH i-g-t] tools/i915-perf-recorder: fix topology alignment issue
Lionel Landwerlin
lionel.g.landwerlin at intel.com
Wed Apr 1 11:19:37 UTC 2020
On 01/04/2020 14:15, Chris Wilson wrote:
> Quoting Lionel Landwerlin (2020-04-01 11:36:06)
>> 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.
>>
>> Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
>> Fixes: f08865e58cd3 ("tools: add i915 perf recorder tool")
>> ---
>> tools/i915-perf/i915_perf_recorder.c | 10 ++--------
>> 1 file changed, 2 insertions(+), 8 deletions(-)
>>
>> diff --git a/tools/i915-perf/i915_perf_recorder.c b/tools/i915-perf/i915_perf_recorder.c
>> index 4d729b0e..104a425b 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 = malloc(*topology_size);
>> item.data_ptr = (uintptr_t) topo_info;
> As I understand the problem statement, when we used the length the
> kernel told us to use, the kernel rejected the query?
>
> Could you clarify as that sounds like a kernel bug.
> -Chris
We get the result of the query from the kernel and write it to the file.
To keep structures in the file aligned to 8 bytes (so that we can mmap
stuff and it doesn't fall on weird alignments), the topology data size
has to be aligned as well.
The problem is that we align the data when writing it to the file, but
fail to update the header.size field properly written just before the
topology data.
-Lionel
More information about the igt-dev
mailing list