[PATCH i-g-t] xe_eudebug_online: Adjust bitmask calculation
Manszewski, Christoph
christoph.manszewski at intel.com
Fri Feb 7 13:12:12 UTC 2025
Hi Dominik,
On 6.02.2025 14:30, Dominik Grzegorzek wrote:
> Adjust bitmask calculation so it matches kernel changes which send also
> zeros for fused out subslices.
>
> Signed-off-by: Dominik Grzegorzek <dominik.grzegorzek at intel.com>
Reviewed-by: Christoph Manszewski <christoph.manszewski at intel.com>
Thanks,
Christoph
> ---
> tests/intel/xe_eudebug_online.c | 28 +++++++++++++++++-----------
> 1 file changed, 17 insertions(+), 11 deletions(-)
>
> diff --git a/tests/intel/xe_eudebug_online.c b/tests/intel/xe_eudebug_online.c
> index 30ecadfe0..2ccbd0a21 100644
> --- a/tests/intel/xe_eudebug_online.c
> +++ b/tests/intel/xe_eudebug_online.c
> @@ -1187,8 +1187,9 @@ static int query_attention_bitmask_size(int fd, int gt)
> .size = 0,
> .data = 0,
> };
> - int pos = 0, eus;
> - uint8_t *any_dss;
> + uint8_t dss_mask, last_dss;
> + int pos = 0;
> + int i, last_dss_idx;
>
> thread_count_ptr = xe_hwconfig_lookup_value(fd, INTEL_HWCONFIG_NUM_THREADS_PER_EU,
> &thread_count_len);
> @@ -1231,22 +1232,27 @@ static int query_attention_bitmask_size(int fd, int gt)
> igt_assert(g_dss && c_dss && eu_per_dss);
> igt_assert_eq_u32(c_dss->num_bytes, g_dss->num_bytes);
>
> - any_dss = malloc(c_dss->num_bytes);
> - igt_assert(any_dss);
> + for (i = 0; i < c_dss->num_bytes; i++) {
> + dss_mask = c_dss->mask[i] | g_dss->mask[i];
> + if (dss_mask) {
> + last_dss = dss_mask;
> + last_dss_idx = i;
> + }
> + }
>
> - for (int i = 0; i < c_dss->num_bytes; i++)
> - any_dss[i] = c_dss->mask[i] | g_dss->mask[i];
> + last_dss_idx *= BITS_PER_BYTE;
> + do {
> + last_dss_idx++;
> + } while (last_dss >>= 1);
>
> - eus = count_set_bits(any_dss, c_dss->num_bytes);
> - eus *= count_set_bits(eu_per_dss->mask, eu_per_dss->num_bytes);
> + last_dss_idx *= count_set_bits(eu_per_dss->mask, eu_per_dss->num_bytes);
>
> if (intel_gen_has_lockstep_eus(fd))
> - eus /= 2;
> + last_dss_idx /= 2;
>
> - free(any_dss);
> free(topology);
>
> - return eus * DIV_ROUND_UP(threads_per_eu, 8);
> + return last_dss_idx * DIV_ROUND_UP(threads_per_eu, 8);
> }
>
> static struct drm_xe_eudebug_event_exec_queue *
More information about the igt-dev
mailing list