mirror of
https://github.com/torvalds/linux.git
synced 2026-06-02 19:43:40 +02:00
drm/xe: Fix dequeue of access counter work item
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@intel.com> Signed-off-by: Brian Welty <brian.welty@intel.com> Reviewed-by: Stuart Summers <stuart.summers@intel.com> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
This commit is contained in:
parent
81d11b9d66
commit
74a6c6438e
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user