[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