xref: /linux/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h (revision 260f6f4fda93c8485c8037865c941b42b9cba5d2)
1a9351846SMatthew Brost /* SPDX-License-Identifier: MIT */
2a9351846SMatthew Brost /*
3a9351846SMatthew Brost  * Copyright © 2023 Intel Corporation
4a9351846SMatthew Brost  */
5a9351846SMatthew Brost 
6a9351846SMatthew Brost #ifndef _XE_GT_TLB_INVALIDATION_H_
7a9351846SMatthew Brost #define _XE_GT_TLB_INVALIDATION_H_
8a9351846SMatthew Brost 
9a9351846SMatthew Brost #include <linux/types.h>
10a9351846SMatthew Brost 
11fc108a8bSMatthew Brost #include "xe_gt_tlb_invalidation_types.h"
12fc108a8bSMatthew Brost 
13a9351846SMatthew Brost struct xe_gt;
14a9351846SMatthew Brost struct xe_guc;
15074e40d9SMatthew Brost struct xe_vm;
16332dd011SMatthew Brost struct xe_vma;
17a9351846SMatthew Brost 
185001ef3aSLucas De Marchi int xe_gt_tlb_invalidation_init_early(struct xe_gt *gt);
195001ef3aSLucas De Marchi 
20fc108a8bSMatthew Brost void xe_gt_tlb_invalidation_reset(struct xe_gt *gt);
213121fed0SMatthew Brost int xe_gt_tlb_invalidation_ggtt(struct xe_gt *gt);
22074e40d9SMatthew Brost void xe_gt_tlb_invalidation_vm(struct xe_gt *gt, struct xe_vm *vm);
23*e497957fSMichal Wajdeczko int xe_gt_tlb_invalidation_all(struct xe_gt *gt, struct xe_gt_tlb_invalidation_fence *fence);
24c4f18703SMatthew Brost int xe_gt_tlb_invalidation_range(struct xe_gt *gt,
25c4f18703SMatthew Brost 				 struct xe_gt_tlb_invalidation_fence *fence,
26c4f18703SMatthew Brost 				 u64 start, u64 end, u32 asid);
27a9351846SMatthew Brost int xe_guc_tlb_invalidation_done_handler(struct xe_guc *guc, u32 *msg, u32 len);
28a9351846SMatthew Brost 
29a522b285SMatthew Brost void xe_gt_tlb_invalidation_fence_init(struct xe_gt *gt,
3061ac0353SMatthew Brost 				       struct xe_gt_tlb_invalidation_fence *fence,
3161ac0353SMatthew Brost 				       bool stack);
3265338639SDaniele Ceraolo Spurio void xe_gt_tlb_invalidation_fence_signal(struct xe_gt_tlb_invalidation_fence *fence);
3361ac0353SMatthew Brost 
3461ac0353SMatthew Brost static inline void
xe_gt_tlb_invalidation_fence_wait(struct xe_gt_tlb_invalidation_fence * fence)3561ac0353SMatthew Brost xe_gt_tlb_invalidation_fence_wait(struct xe_gt_tlb_invalidation_fence *fence)
3661ac0353SMatthew Brost {
3761ac0353SMatthew Brost 	dma_fence_wait(&fence->base, false);
3861ac0353SMatthew Brost }
39a522b285SMatthew Brost 
40a9351846SMatthew Brost #endif	/* _XE_GT_TLB_INVALIDATION_ */
41