Commit | Line | Data |
---|---|---|
cfc78dfd JPB |
1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | /* | |
3 | * SVA library for IOMMU drivers | |
4 | */ | |
757636ed LB |
5 | #ifndef _IOMMU_SVA_H |
6 | #define _IOMMU_SVA_H | |
cfc78dfd | 7 | |
cfc78dfd JPB |
8 | #include <linux/mm_types.h> |
9 | ||
fc36479d JPB |
10 | /* I/O Page fault */ |
11 | struct device; | |
12 | struct iommu_fault; | |
13 | struct iopf_queue; | |
14 | ||
7ba56472 | 15 | #ifdef CONFIG_IOMMU_SVA |
fc36479d JPB |
16 | int iommu_queue_iopf(struct iommu_fault *fault, void *cookie); |
17 | ||
18 | int iopf_queue_add_device(struct iopf_queue *queue, struct device *dev); | |
19 | int iopf_queue_remove_device(struct iopf_queue *queue, | |
20 | struct device *dev); | |
21 | int iopf_queue_flush_dev(struct device *dev); | |
22 | struct iopf_queue *iopf_queue_alloc(const char *name); | |
23 | void iopf_queue_free(struct iopf_queue *queue); | |
24 | int iopf_queue_discard_partial(struct iopf_queue *queue); | |
8cc93159 LB |
25 | enum iommu_page_response_code |
26 | iommu_sva_handle_iopf(struct iommu_fault *fault, void *data); | |
fc36479d | 27 | |
7ba56472 | 28 | #else /* CONFIG_IOMMU_SVA */ |
fc36479d JPB |
29 | static inline int iommu_queue_iopf(struct iommu_fault *fault, void *cookie) |
30 | { | |
31 | return -ENODEV; | |
32 | } | |
33 | ||
34 | static inline int iopf_queue_add_device(struct iopf_queue *queue, | |
35 | struct device *dev) | |
36 | { | |
37 | return -ENODEV; | |
38 | } | |
39 | ||
40 | static inline int iopf_queue_remove_device(struct iopf_queue *queue, | |
41 | struct device *dev) | |
42 | { | |
43 | return -ENODEV; | |
44 | } | |
45 | ||
46 | static inline int iopf_queue_flush_dev(struct device *dev) | |
47 | { | |
48 | return -ENODEV; | |
49 | } | |
50 | ||
51 | static inline struct iopf_queue *iopf_queue_alloc(const char *name) | |
52 | { | |
53 | return NULL; | |
54 | } | |
55 | ||
56 | static inline void iopf_queue_free(struct iopf_queue *queue) | |
57 | { | |
58 | } | |
59 | ||
60 | static inline int iopf_queue_discard_partial(struct iopf_queue *queue) | |
61 | { | |
62 | return -ENODEV; | |
63 | } | |
8cc93159 LB |
64 | |
65 | static inline enum iommu_page_response_code | |
66 | iommu_sva_handle_iopf(struct iommu_fault *fault, void *data) | |
67 | { | |
68 | return IOMMU_PAGE_RESP_INVALID; | |
69 | } | |
7ba56472 | 70 | #endif /* CONFIG_IOMMU_SVA */ |
757636ed | 71 | #endif /* _IOMMU_SVA_H */ |