[Intel-gfx] [PATCH 1/2] drm/i915/perf: Subtract gtt_offset from hw_tail
Lionel Landwerlin
lionel.g.landwerlin at intel.com
Tue Jul 18 08:39:35 UTC 2023
On 18/07/2023 05:43, Ashutosh Dixit wrote:
> The code in oa_buffer_check_unlocked() is correct only if the OA buffer is
> 16 MB aligned (which seems to be the case today in i915). However when the
> 16 MB alignment is dropped, when we "Subtract partial amount off the tail",
> the "& (OA_BUFFER_SIZE - 1)" operation in OA_TAKEN() will result in an
> incorrect hw_tail value.
>
> Therefore hw_tail must be brought to the same base as head and read_tail
> prior to OA_TAKEN by subtracting gtt_offset from hw_tail.
>
> Signed-off-by: Ashutosh Dixit <ashutosh.dixit at intel.com>
> ---
> drivers/gpu/drm/i915/i915_perf.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_perf.c b/drivers/gpu/drm/i915/i915_perf.c
> index 49c6f1ff11284..f7888a44d1284 100644
> --- a/drivers/gpu/drm/i915/i915_perf.c
> +++ b/drivers/gpu/drm/i915/i915_perf.c
> @@ -565,6 +565,7 @@ static bool oa_buffer_check_unlocked(struct i915_perf_stream *stream)
> partial_report_size %= report_size;
>
> /* Subtract partial amount off the tail */
> + hw_tail -= gtt_offset;
> hw_tail = OA_TAKEN(hw_tail, partial_report_size);
>
> /* NB: The head we observe here might effectively be a little
You should squash this patch with the next one. Otherwise further down
this function there is another
hw_tail -= gtt_offset;
-Lionel
More information about the Intel-gfx
mailing list