115366239SMatthew Brost /* SPDX-License-Identifier: MIT */ 215366239SMatthew Brost /* 315366239SMatthew Brost * Copyright © 2025 Intel Corporation 415366239SMatthew Brost */ 515366239SMatthew Brost 615366239SMatthew Brost #ifndef _XE_TLB_INVAL_H_ 715366239SMatthew Brost #define _XE_TLB_INVAL_H_ 815366239SMatthew Brost 915366239SMatthew Brost #include <linux/types.h> 1015366239SMatthew Brost 1115366239SMatthew Brost #include "xe_tlb_inval_types.h" 1215366239SMatthew Brost 1315366239SMatthew Brost struct xe_gt; 1415366239SMatthew Brost struct xe_guc; 1515366239SMatthew Brost struct xe_vm; 1615366239SMatthew Brost 1715366239SMatthew Brost int xe_gt_tlb_inval_init_early(struct xe_gt *gt); 1815366239SMatthew Brost 1915366239SMatthew Brost void xe_tlb_inval_reset(struct xe_tlb_inval *tlb_inval); 2015366239SMatthew Brost int xe_tlb_inval_all(struct xe_tlb_inval *tlb_inval, 2115366239SMatthew Brost struct xe_tlb_inval_fence *fence); 22*db16f9d9SMatthew Brost int xe_tlb_inval_ggtt(struct xe_tlb_inval *tlb_inval); 23*db16f9d9SMatthew Brost void xe_tlb_inval_vm(struct xe_tlb_inval *tlb_inval, struct xe_vm *vm); 2415366239SMatthew Brost int xe_tlb_inval_range(struct xe_tlb_inval *tlb_inval, 2515366239SMatthew Brost struct xe_tlb_inval_fence *fence, 2615366239SMatthew Brost u64 start, u64 end, u32 asid); 2715366239SMatthew Brost 2815366239SMatthew Brost void xe_tlb_inval_fence_init(struct xe_tlb_inval *tlb_inval, 2915366239SMatthew Brost struct xe_tlb_inval_fence *fence, 3015366239SMatthew Brost bool stack); 3115366239SMatthew Brost 32*db16f9d9SMatthew Brost /** 33*db16f9d9SMatthew Brost * xe_tlb_inval_fence_wait() - TLB invalidiation fence wait 34*db16f9d9SMatthew Brost * @fence: TLB invalidation fence to wait on 35*db16f9d9SMatthew Brost * 36*db16f9d9SMatthew Brost * Wait on a TLB invalidiation fence until it signals, non interruptable 37*db16f9d9SMatthew Brost */ 3815366239SMatthew Brost static inline void 3915366239SMatthew Brost xe_tlb_inval_fence_wait(struct xe_tlb_inval_fence *fence) 4015366239SMatthew Brost { 4115366239SMatthew Brost dma_fence_wait(&fence->base, false); 4215366239SMatthew Brost } 4315366239SMatthew Brost 44*db16f9d9SMatthew Brost void xe_tlb_inval_done_handler(struct xe_tlb_inval *tlb_inval, int seqno); 45*db16f9d9SMatthew Brost 4615366239SMatthew Brost #endif /* _XE_TLB_INVAL_ */ 47