1 /* SPDX-License-Identifier: MIT */ 2 /* 3 * Copyright © 2023 Intel Corporation 4 */ 5 6 #ifndef _XE_GT_TLB_INVALIDATION_H_ 7 #define _XE_GT_TLB_INVALIDATION_H_ 8 9 #include <linux/types.h> 10 11 #include "xe_gt_tlb_invalidation_types.h" 12 13 struct xe_gt; 14 struct xe_guc; 15 struct xe_vm; 16 struct xe_vma; 17 18 int xe_gt_tlb_invalidation_init_early(struct xe_gt *gt); 19 20 void xe_gt_tlb_invalidation_reset(struct xe_gt *gt); 21 int xe_gt_tlb_invalidation_ggtt(struct xe_gt *gt); 22 int xe_gt_tlb_invalidation_vma(struct xe_gt *gt, 23 struct xe_gt_tlb_invalidation_fence *fence, 24 struct xe_vma *vma); 25 void xe_gt_tlb_invalidation_vm(struct xe_gt *gt, struct xe_vm *vm); 26 int xe_gt_tlb_invalidation_range(struct xe_gt *gt, 27 struct xe_gt_tlb_invalidation_fence *fence, 28 u64 start, u64 end, u32 asid); 29 int xe_guc_tlb_invalidation_done_handler(struct xe_guc *guc, u32 *msg, u32 len); 30 31 void xe_gt_tlb_invalidation_fence_init(struct xe_gt *gt, 32 struct xe_gt_tlb_invalidation_fence *fence, 33 bool stack); 34 void xe_gt_tlb_invalidation_fence_signal(struct xe_gt_tlb_invalidation_fence *fence); 35 36 static inline void 37 xe_gt_tlb_invalidation_fence_wait(struct xe_gt_tlb_invalidation_fence *fence) 38 { 39 dma_fence_wait(&fence->base, false); 40 } 41 42 #endif /* _XE_GT_TLB_INVALIDATION_ */ 43