[Intel-xe] [1/2] drm/xe: Fix dequeue of access counter work item

Summers, Stuart stuart.summers at intel.com
Tue Oct 31 22:57:28 UTC 2023


On Tue, 2023-10-31 at 15:15 -0700, Brian Welty wrote:
> The access counters worker function is fixed to advance the head
> pointer
> when dequeuing from the acc_queue.  This now matches the similar
> logic in
> get_pagefault().
> 
> Signed-off-by: Bruce Chang <yu.bruce.chang at intel.com>
> Signed-off-by: Brian Welty <brian.welty at intel.com>

Seems like a pretty obvious miss...

Reviewed-by: Stuart Summers <stuart.summers at intel.com>

> ---
>  drivers/gpu/drm/xe/xe_gt_pagefault.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_gt_pagefault.c
> b/drivers/gpu/drm/xe/xe_gt_pagefault.c
> index 2ec0db7a4b29..ab6daebbd77c 100644
> --- a/drivers/gpu/drm/xe/xe_gt_pagefault.c
> +++ b/drivers/gpu/drm/xe/xe_gt_pagefault.c
> @@ -542,6 +542,8 @@ static int handle_acc(struct xe_gt *gt, struct
> acc *acc)
>  
>  #define make_u64(hi__, low__)  ((u64)(hi__) << 32 | (u64)(low__))
>  
> +#define ACC_MSG_LEN_DW        4
> +
>  static int get_acc(struct acc_queue *acc_queue, struct acc *acc)
>  {
>         const struct xe_guc_acc_desc *desc;
> @@ -562,6 +564,9 @@ static int get_acc(struct acc_queue *acc_queue,
> struct acc *acc)
>                 acc->access_type = FIELD_GET(ACC_TYPE, desc->dw0);
>                 acc->va_range_base = make_u64(desc->dw3 &
> ACC_VIRTUAL_ADDR_RANGE_HI,
>                                               desc->dw2 &
> ACC_VIRTUAL_ADDR_RANGE_LO);
> +
> +               acc_queue->head = (acc_queue->head + ACC_MSG_LEN_DW)
> %
> +                                 ACC_QUEUE_NUM_DW;
>         } else {
>                 ret = -1;
>         }
> @@ -589,8 +594,6 @@ static void acc_queue_work_func(struct
> work_struct *w)
>         }
>  }
>  
> -#define ACC_MSG_LEN_DW 4
> -
>  static bool acc_queue_full(struct acc_queue *acc_queue)
>  {
>         lockdep_assert_held(&acc_queue->lock);



More information about the Intel-xe mailing list