Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/* SPDX-License-Identifier: MIT */
2/*
3 * Copyright © 2025 Intel Corporation
4 */
5
6#ifndef _XE_TLB_INVAL_H_
7#define _XE_TLB_INVAL_H_
8
9#include <linux/types.h>
10
11#include "xe_tlb_inval_types.h"
12
13struct xe_gt;
14struct xe_guc;
15struct xe_vm;
16
17int xe_gt_tlb_inval_init_early(struct xe_gt *gt);
18
19void xe_tlb_inval_reset(struct xe_tlb_inval *tlb_inval);
20int xe_tlb_inval_all(struct xe_tlb_inval *tlb_inval,
21 struct xe_tlb_inval_fence *fence);
22int xe_tlb_inval_ggtt(struct xe_tlb_inval *tlb_inval);
23void xe_tlb_inval_vm(struct xe_tlb_inval *tlb_inval, struct xe_vm *vm);
24int xe_tlb_inval_range(struct xe_tlb_inval *tlb_inval,
25 struct xe_tlb_inval_fence *fence,
26 u64 start, u64 end, u32 asid);
27
28void xe_tlb_inval_fence_init(struct xe_tlb_inval *tlb_inval,
29 struct xe_tlb_inval_fence *fence,
30 bool stack);
31
32/**
33 * xe_tlb_inval_fence_wait() - TLB invalidiation fence wait
34 * @fence: TLB invalidation fence to wait on
35 *
36 * Wait on a TLB invalidiation fence until it signals, non interruptable
37 */
38static inline void
39xe_tlb_inval_fence_wait(struct xe_tlb_inval_fence *fence)
40{
41 dma_fence_wait(&fence->base, false);
42}
43
44void xe_tlb_inval_done_handler(struct xe_tlb_inval *tlb_inval, int seqno);
45
46#endif /* _XE_TLB_INVAL_ */