Skip to content

Commit 90be4cc

Browse files
mbrost05rodrigovivi
authored andcommitted
drm/xe: Add xe_gt_tlb_invalidation_fence_init helper
Other layers should not be touching struct xe_gt_tlb_invalidation_fence directly, add helper for initialization. v2: - Add dma_fence_get and list init to xe_gt_tlb_invalidation_fence_init Signed-off-by: Matthew Brost <[email protected]> Reviewed-by: Nirmoy Das <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected] (cherry picked from commit a522b28) Signed-off-by: Rodrigo Vivi <[email protected]>
1 parent 4f7652d commit 90be4cc

File tree

3 files changed

+40
-25
lines changed

3 files changed

+40
-25
lines changed

drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -508,3 +508,39 @@ int xe_guc_tlb_invalidation_done_handler(struct xe_guc *guc, u32 *msg, u32 len)
508508

509509
return 0;
510510
}
511+
512+
static const char *
513+
invalidation_fence_get_driver_name(struct dma_fence *dma_fence)
514+
{
515+
return "xe";
516+
}
517+
518+
static const char *
519+
invalidation_fence_get_timeline_name(struct dma_fence *dma_fence)
520+
{
521+
return "invalidation_fence";
522+
}
523+
524+
static const struct dma_fence_ops invalidation_fence_ops = {
525+
.get_driver_name = invalidation_fence_get_driver_name,
526+
.get_timeline_name = invalidation_fence_get_timeline_name,
527+
};
528+
529+
/**
530+
* xe_gt_tlb_invalidation_fence_init - Initialize TLB invalidation fence
531+
* @gt: GT
532+
* @fence: TLB invalidation fence to initialize
533+
*
534+
* Initialize TLB invalidation fence for use
535+
*/
536+
void xe_gt_tlb_invalidation_fence_init(struct xe_gt *gt,
537+
struct xe_gt_tlb_invalidation_fence *fence)
538+
{
539+
spin_lock_irq(&gt->tlb_invalidation.lock);
540+
dma_fence_init(&fence->base, &invalidation_fence_ops,
541+
&gt->tlb_invalidation.lock,
542+
dma_fence_context_alloc(1), 1);
543+
spin_unlock_irq(&gt->tlb_invalidation.lock);
544+
INIT_LIST_HEAD(&fence->link);
545+
dma_fence_get(&fence->base);
546+
}

drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,7 @@ int xe_gt_tlb_invalidation_range(struct xe_gt *gt,
2626
int xe_gt_tlb_invalidation_wait(struct xe_gt *gt, int seqno);
2727
int xe_guc_tlb_invalidation_done_handler(struct xe_guc *guc, u32 *msg, u32 len);
2828

29+
void xe_gt_tlb_invalidation_fence_init(struct xe_gt *gt,
30+
struct xe_gt_tlb_invalidation_fence *fence);
31+
2932
#endif /* _XE_GT_TLB_INVALIDATION_ */

drivers/gpu/drm/xe/xe_pt.c

Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1115,23 +1115,6 @@ struct invalidation_fence {
11151115
u32 asid;
11161116
};
11171117

1118-
static const char *
1119-
invalidation_fence_get_driver_name(struct dma_fence *dma_fence)
1120-
{
1121-
return "xe";
1122-
}
1123-
1124-
static const char *
1125-
invalidation_fence_get_timeline_name(struct dma_fence *dma_fence)
1126-
{
1127-
return "invalidation_fence";
1128-
}
1129-
1130-
static const struct dma_fence_ops invalidation_fence_ops = {
1131-
.get_driver_name = invalidation_fence_get_driver_name,
1132-
.get_timeline_name = invalidation_fence_get_timeline_name,
1133-
};
1134-
11351118
static void invalidation_fence_cb(struct dma_fence *fence,
11361119
struct dma_fence_cb *cb)
11371120
{
@@ -1170,15 +1153,8 @@ static int invalidation_fence_init(struct xe_gt *gt,
11701153

11711154
trace_xe_gt_tlb_invalidation_fence_create(gt_to_xe(gt), &ifence->base);
11721155

1173-
spin_lock_irq(&gt->tlb_invalidation.lock);
1174-
dma_fence_init(&ifence->base.base, &invalidation_fence_ops,
1175-
&gt->tlb_invalidation.lock,
1176-
dma_fence_context_alloc(1), 1);
1177-
spin_unlock_irq(&gt->tlb_invalidation.lock);
1178-
1179-
INIT_LIST_HEAD(&ifence->base.link);
1156+
xe_gt_tlb_invalidation_fence_init(gt, &ifence->base);
11801157

1181-
dma_fence_get(&ifence->base.base); /* Ref for caller */
11821158
ifence->fence = fence;
11831159
ifence->gt = gt;
11841160
ifence->start = start;

0 commit comments

Comments
 (0)