mirror of
https://github.com/torvalds/linux.git
synced 2026-06-02 19:43:40 +02:00
drm/xe: Make TLB invalidation fences unordered
They can actually complete out-of-order, so allocate a unique
fence context for each fence.
Fixes: 5387e865d9 ("drm/xe: Add TLB invalidation fence after rebinds issued from execs")
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: <stable@vger.kernel.org> # v6.8+
Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240327091136.3271-4-thomas.hellstrom@linux.intel.com
This commit is contained in:
parent
5a091aff50
commit
0453f17575
|
|
@ -63,7 +63,6 @@ int xe_gt_tlb_invalidation_init(struct xe_gt *gt)
|
|||
INIT_LIST_HEAD(>->tlb_invalidation.pending_fences);
|
||||
spin_lock_init(>->tlb_invalidation.pending_lock);
|
||||
spin_lock_init(>->tlb_invalidation.lock);
|
||||
gt->tlb_invalidation.fence_context = dma_fence_context_alloc(1);
|
||||
INIT_DELAYED_WORK(>->tlb_invalidation.fence_tdr,
|
||||
xe_gt_tlb_fence_timeout);
|
||||
|
||||
|
|
|
|||
|
|
@ -179,13 +179,6 @@ struct xe_gt {
|
|||
* xe_gt_tlb_fence_timeout after the timeut interval is over.
|
||||
*/
|
||||
struct delayed_work fence_tdr;
|
||||
/** @tlb_invalidation.fence_context: context for TLB invalidation fences */
|
||||
u64 fence_context;
|
||||
/**
|
||||
* @tlb_invalidation.fence_seqno: seqno to TLB invalidation fences, protected by
|
||||
* tlb_invalidation.lock
|
||||
*/
|
||||
u32 fence_seqno;
|
||||
/** @tlb_invalidation.lock: protects TLB invalidation fences */
|
||||
spinlock_t lock;
|
||||
} tlb_invalidation;
|
||||
|
|
|
|||
|
|
@ -1135,8 +1135,7 @@ static int invalidation_fence_init(struct xe_gt *gt,
|
|||
spin_lock_irq(>->tlb_invalidation.lock);
|
||||
dma_fence_init(&ifence->base.base, &invalidation_fence_ops,
|
||||
>->tlb_invalidation.lock,
|
||||
gt->tlb_invalidation.fence_context,
|
||||
++gt->tlb_invalidation.fence_seqno);
|
||||
dma_fence_context_alloc(1), 1);
|
||||
spin_unlock_irq(>->tlb_invalidation.lock);
|
||||
|
||||
INIT_LIST_HEAD(&ifence->base.link);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user