This source file includes following definitions.
- iommu_device_sysfs_add
- iommu_device_set_fwnode
- dev_to_iommu_device
- iommu_iotlb_gather_init
- iommu_flush_tlb_all
- iommu_tlb_sync
- iommu_iotlb_gather_add_page
- dev_iommu_fwspec_get
- dev_iommu_fwspec_set
- iommu_present
- iommu_capable
- iommu_domain_alloc
- iommu_group_get_by_id
- iommu_domain_free
- iommu_attach_device
- iommu_detach_device
- iommu_get_domain_for_dev
- iommu_map
- iommu_unmap
- iommu_unmap_fast
- iommu_map_sg
- iommu_flush_tlb_all
- iommu_tlb_sync
- iommu_domain_window_enable
- iommu_domain_window_disable
- iommu_iova_to_phys
- iommu_set_fault_handler
- iommu_get_resv_regions
- iommu_put_resv_regions
- iommu_get_group_resv_regions
- iommu_request_dm_for_dev
- iommu_request_dma_domain_for_dev
- iommu_set_default_passthrough
- iommu_set_default_translated
- iommu_default_passthrough
- iommu_attach_group
- iommu_detach_group
- iommu_group_alloc
- iommu_group_get_iommudata
- iommu_group_set_iommudata
- iommu_group_set_name
- iommu_group_add_device
- iommu_group_remove_device
- iommu_group_for_each_dev
- iommu_group_get
- iommu_group_put
- iommu_group_register_notifier
- iommu_group_unregister_notifier
- iommu_register_device_fault_handler
- iommu_unregister_device_fault_handler
- iommu_report_device_fault
- iommu_page_response
- iommu_group_id
- iommu_domain_get_attr
- iommu_domain_set_attr
- iommu_device_register
- iommu_device_set_ops
- iommu_device_set_fwnode
- dev_to_iommu_device
- iommu_iotlb_gather_init
- iommu_iotlb_gather_add_page
- iommu_device_unregister
- iommu_device_sysfs_add
- iommu_device_sysfs_remove
- iommu_device_link
- iommu_device_unlink
- iommu_fwspec_init
- iommu_fwspec_free
- iommu_fwspec_add_ids
- iommu_ops_from_fwnode
- iommu_dev_has_feature
- iommu_dev_feature_enabled
- iommu_dev_enable_feature
- iommu_dev_disable_feature
- iommu_aux_attach_device
- iommu_aux_detach_device
- iommu_aux_get_pasid
- iommu_sva_bind_device
- iommu_sva_unbind_device
- iommu_sva_set_ops
- iommu_sva_get_pasid
- iommu_debugfs_setup
1
2
3
4
5
6
7 #ifndef __LINUX_IOMMU_H
8 #define __LINUX_IOMMU_H
9
10 #include <linux/scatterlist.h>
11 #include <linux/device.h>
12 #include <linux/types.h>
13 #include <linux/errno.h>
14 #include <linux/err.h>
15 #include <linux/of.h>
16 #include <uapi/linux/iommu.h>
17
18 #define IOMMU_READ (1 << 0)
19 #define IOMMU_WRITE (1 << 1)
20 #define IOMMU_CACHE (1 << 2)
21 #define IOMMU_NOEXEC (1 << 3)
22 #define IOMMU_MMIO (1 << 4)
23
24
25
26
27
28
29
30
31
32 #define IOMMU_PRIV (1 << 5)
33
34
35
36
37
38 #define IOMMU_QCOM_SYS_CACHE (1 << 6)
39
40 struct iommu_ops;
41 struct iommu_group;
42 struct bus_type;
43 struct device;
44 struct iommu_domain;
45 struct notifier_block;
46 struct iommu_sva;
47 struct iommu_fault_event;
48
49
50 #define IOMMU_FAULT_READ 0x0
51 #define IOMMU_FAULT_WRITE 0x1
52
53 typedef int (*iommu_fault_handler_t)(struct iommu_domain *,
54 struct device *, unsigned long, int, void *);
55 typedef int (*iommu_mm_exit_handler_t)(struct device *dev, struct iommu_sva *,
56 void *);
57 typedef int (*iommu_dev_fault_handler_t)(struct iommu_fault *, void *);
58
59 struct iommu_domain_geometry {
60 dma_addr_t aperture_start;
61 dma_addr_t aperture_end;
62 bool force_aperture;
63 };
64
65
66 #define __IOMMU_DOMAIN_PAGING (1U << 0)
67 #define __IOMMU_DOMAIN_DMA_API (1U << 1)
68
69 #define __IOMMU_DOMAIN_PT (1U << 2)
70
71
72
73
74
75
76
77
78
79
80
81
82
83 #define IOMMU_DOMAIN_BLOCKED (0U)
84 #define IOMMU_DOMAIN_IDENTITY (__IOMMU_DOMAIN_PT)
85 #define IOMMU_DOMAIN_UNMANAGED (__IOMMU_DOMAIN_PAGING)
86 #define IOMMU_DOMAIN_DMA (__IOMMU_DOMAIN_PAGING | \
87 __IOMMU_DOMAIN_DMA_API)
88
89 struct iommu_domain {
90 unsigned type;
91 const struct iommu_ops *ops;
92 unsigned long pgsize_bitmap;
93 iommu_fault_handler_t handler;
94 void *handler_token;
95 struct iommu_domain_geometry geometry;
96 void *iova_cookie;
97 };
98
99 enum iommu_cap {
100 IOMMU_CAP_CACHE_COHERENCY,
101
102 IOMMU_CAP_INTR_REMAP,
103 IOMMU_CAP_NOEXEC,
104 };
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119 enum iommu_attr {
120 DOMAIN_ATTR_GEOMETRY,
121 DOMAIN_ATTR_PAGING,
122 DOMAIN_ATTR_WINDOWS,
123 DOMAIN_ATTR_FSL_PAMU_STASH,
124 DOMAIN_ATTR_FSL_PAMU_ENABLE,
125 DOMAIN_ATTR_FSL_PAMUV1,
126 DOMAIN_ATTR_NESTING,
127 DOMAIN_ATTR_DMA_USE_FLUSH_QUEUE,
128 DOMAIN_ATTR_MAX,
129 };
130
131
132 enum iommu_resv_type {
133
134 IOMMU_RESV_DIRECT,
135
136
137
138
139
140 IOMMU_RESV_DIRECT_RELAXABLE,
141
142 IOMMU_RESV_RESERVED,
143
144 IOMMU_RESV_MSI,
145
146 IOMMU_RESV_SW_MSI,
147 };
148
149
150
151
152
153
154
155
156
157 struct iommu_resv_region {
158 struct list_head list;
159 phys_addr_t start;
160 size_t length;
161 int prot;
162 enum iommu_resv_type type;
163 };
164
165
166 enum iommu_dev_features {
167 IOMMU_DEV_FEAT_AUX,
168 IOMMU_DEV_FEAT_SVA,
169 };
170
171 #define IOMMU_PASID_INVALID (-1U)
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188 struct iommu_sva_ops {
189 iommu_mm_exit_handler_t mm_exit;
190 };
191
192 #ifdef CONFIG_IOMMU_API
193
194
195
196
197
198
199
200
201
202
203
204
205 struct iommu_iotlb_gather {
206 unsigned long start;
207 unsigned long end;
208 size_t pgsize;
209 };
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249 struct iommu_ops {
250 bool (*capable)(enum iommu_cap);
251
252
253 struct iommu_domain *(*domain_alloc)(unsigned iommu_domain_type);
254 void (*domain_free)(struct iommu_domain *);
255
256 int (*attach_dev)(struct iommu_domain *domain, struct device *dev);
257 void (*detach_dev)(struct iommu_domain *domain, struct device *dev);
258 int (*map)(struct iommu_domain *domain, unsigned long iova,
259 phys_addr_t paddr, size_t size, int prot);
260 size_t (*unmap)(struct iommu_domain *domain, unsigned long iova,
261 size_t size, struct iommu_iotlb_gather *iotlb_gather);
262 void (*flush_iotlb_all)(struct iommu_domain *domain);
263 void (*iotlb_sync_map)(struct iommu_domain *domain);
264 void (*iotlb_sync)(struct iommu_domain *domain,
265 struct iommu_iotlb_gather *iotlb_gather);
266 phys_addr_t (*iova_to_phys)(struct iommu_domain *domain, dma_addr_t iova);
267 int (*add_device)(struct device *dev);
268 void (*remove_device)(struct device *dev);
269 struct iommu_group *(*device_group)(struct device *dev);
270 int (*domain_get_attr)(struct iommu_domain *domain,
271 enum iommu_attr attr, void *data);
272 int (*domain_set_attr)(struct iommu_domain *domain,
273 enum iommu_attr attr, void *data);
274
275
276 void (*get_resv_regions)(struct device *dev, struct list_head *list);
277 void (*put_resv_regions)(struct device *dev, struct list_head *list);
278 void (*apply_resv_region)(struct device *dev,
279 struct iommu_domain *domain,
280 struct iommu_resv_region *region);
281
282
283 int (*domain_window_enable)(struct iommu_domain *domain, u32 wnd_nr,
284 phys_addr_t paddr, u64 size, int prot);
285 void (*domain_window_disable)(struct iommu_domain *domain, u32 wnd_nr);
286
287 int (*of_xlate)(struct device *dev, struct of_phandle_args *args);
288 bool (*is_attach_deferred)(struct iommu_domain *domain, struct device *dev);
289
290
291 bool (*dev_has_feat)(struct device *dev, enum iommu_dev_features f);
292 bool (*dev_feat_enabled)(struct device *dev, enum iommu_dev_features f);
293 int (*dev_enable_feat)(struct device *dev, enum iommu_dev_features f);
294 int (*dev_disable_feat)(struct device *dev, enum iommu_dev_features f);
295
296
297 int (*aux_attach_dev)(struct iommu_domain *domain, struct device *dev);
298 void (*aux_detach_dev)(struct iommu_domain *domain, struct device *dev);
299 int (*aux_get_pasid)(struct iommu_domain *domain, struct device *dev);
300
301 struct iommu_sva *(*sva_bind)(struct device *dev, struct mm_struct *mm,
302 void *drvdata);
303 void (*sva_unbind)(struct iommu_sva *handle);
304 int (*sva_get_pasid)(struct iommu_sva *handle);
305
306 int (*page_response)(struct device *dev,
307 struct iommu_fault_event *evt,
308 struct iommu_page_response *msg);
309
310 unsigned long pgsize_bitmap;
311 };
312
313
314
315
316
317
318
319
320 struct iommu_device {
321 struct list_head list;
322 const struct iommu_ops *ops;
323 struct fwnode_handle *fwnode;
324 struct device *dev;
325 };
326
327
328
329
330
331
332
333
334
335
336 struct iommu_fault_event {
337 struct iommu_fault fault;
338 struct list_head list;
339 };
340
341
342
343
344
345
346
347
348 struct iommu_fault_param {
349 iommu_dev_fault_handler_t handler;
350 void *data;
351 struct list_head faults;
352 struct mutex lock;
353 };
354
355
356
357
358
359
360
361
362
363
364 struct iommu_param {
365 struct mutex lock;
366 struct iommu_fault_param *fault_param;
367 };
368
369 int iommu_device_register(struct iommu_device *iommu);
370 void iommu_device_unregister(struct iommu_device *iommu);
371 int iommu_device_sysfs_add(struct iommu_device *iommu,
372 struct device *parent,
373 const struct attribute_group **groups,
374 const char *fmt, ...) __printf(4, 5);
375 void iommu_device_sysfs_remove(struct iommu_device *iommu);
376 int iommu_device_link(struct iommu_device *iommu, struct device *link);
377 void iommu_device_unlink(struct iommu_device *iommu, struct device *link);
378
379 static inline void iommu_device_set_ops(struct iommu_device *iommu,
380 const struct iommu_ops *ops)
381 {
382 iommu->ops = ops;
383 }
384
385 static inline void iommu_device_set_fwnode(struct iommu_device *iommu,
386 struct fwnode_handle *fwnode)
387 {
388 iommu->fwnode = fwnode;
389 }
390
391 static inline struct iommu_device *dev_to_iommu_device(struct device *dev)
392 {
393 return (struct iommu_device *)dev_get_drvdata(dev);
394 }
395
396 static inline void iommu_iotlb_gather_init(struct iommu_iotlb_gather *gather)
397 {
398 *gather = (struct iommu_iotlb_gather) {
399 .start = ULONG_MAX,
400 };
401 }
402
403 #define IOMMU_GROUP_NOTIFY_ADD_DEVICE 1
404 #define IOMMU_GROUP_NOTIFY_DEL_DEVICE 2
405 #define IOMMU_GROUP_NOTIFY_BIND_DRIVER 3
406 #define IOMMU_GROUP_NOTIFY_BOUND_DRIVER 4
407 #define IOMMU_GROUP_NOTIFY_UNBIND_DRIVER 5
408 #define IOMMU_GROUP_NOTIFY_UNBOUND_DRIVER 6
409
410 extern int bus_set_iommu(struct bus_type *bus, const struct iommu_ops *ops);
411 extern bool iommu_present(struct bus_type *bus);
412 extern bool iommu_capable(struct bus_type *bus, enum iommu_cap cap);
413 extern struct iommu_domain *iommu_domain_alloc(struct bus_type *bus);
414 extern struct iommu_group *iommu_group_get_by_id(int id);
415 extern void iommu_domain_free(struct iommu_domain *domain);
416 extern int iommu_attach_device(struct iommu_domain *domain,
417 struct device *dev);
418 extern void iommu_detach_device(struct iommu_domain *domain,
419 struct device *dev);
420 extern struct iommu_domain *iommu_get_domain_for_dev(struct device *dev);
421 extern struct iommu_domain *iommu_get_dma_domain(struct device *dev);
422 extern int iommu_map(struct iommu_domain *domain, unsigned long iova,
423 phys_addr_t paddr, size_t size, int prot);
424 extern size_t iommu_unmap(struct iommu_domain *domain, unsigned long iova,
425 size_t size);
426 extern size_t iommu_unmap_fast(struct iommu_domain *domain,
427 unsigned long iova, size_t size,
428 struct iommu_iotlb_gather *iotlb_gather);
429 extern size_t iommu_map_sg(struct iommu_domain *domain, unsigned long iova,
430 struct scatterlist *sg,unsigned int nents, int prot);
431 extern phys_addr_t iommu_iova_to_phys(struct iommu_domain *domain, dma_addr_t iova);
432 extern void iommu_set_fault_handler(struct iommu_domain *domain,
433 iommu_fault_handler_t handler, void *token);
434
435 extern void iommu_get_resv_regions(struct device *dev, struct list_head *list);
436 extern void iommu_put_resv_regions(struct device *dev, struct list_head *list);
437 extern int iommu_request_dm_for_dev(struct device *dev);
438 extern int iommu_request_dma_domain_for_dev(struct device *dev);
439 extern void iommu_set_default_passthrough(bool cmd_line);
440 extern void iommu_set_default_translated(bool cmd_line);
441 extern bool iommu_default_passthrough(void);
442 extern struct iommu_resv_region *
443 iommu_alloc_resv_region(phys_addr_t start, size_t length, int prot,
444 enum iommu_resv_type type);
445 extern int iommu_get_group_resv_regions(struct iommu_group *group,
446 struct list_head *head);
447
448 extern int iommu_attach_group(struct iommu_domain *domain,
449 struct iommu_group *group);
450 extern void iommu_detach_group(struct iommu_domain *domain,
451 struct iommu_group *group);
452 extern struct iommu_group *iommu_group_alloc(void);
453 extern void *iommu_group_get_iommudata(struct iommu_group *group);
454 extern void iommu_group_set_iommudata(struct iommu_group *group,
455 void *iommu_data,
456 void (*release)(void *iommu_data));
457 extern int iommu_group_set_name(struct iommu_group *group, const char *name);
458 extern int iommu_group_add_device(struct iommu_group *group,
459 struct device *dev);
460 extern void iommu_group_remove_device(struct device *dev);
461 extern int iommu_group_for_each_dev(struct iommu_group *group, void *data,
462 int (*fn)(struct device *, void *));
463 extern struct iommu_group *iommu_group_get(struct device *dev);
464 extern struct iommu_group *iommu_group_ref_get(struct iommu_group *group);
465 extern void iommu_group_put(struct iommu_group *group);
466 extern int iommu_group_register_notifier(struct iommu_group *group,
467 struct notifier_block *nb);
468 extern int iommu_group_unregister_notifier(struct iommu_group *group,
469 struct notifier_block *nb);
470 extern int iommu_register_device_fault_handler(struct device *dev,
471 iommu_dev_fault_handler_t handler,
472 void *data);
473
474 extern int iommu_unregister_device_fault_handler(struct device *dev);
475
476 extern int iommu_report_device_fault(struct device *dev,
477 struct iommu_fault_event *evt);
478 extern int iommu_page_response(struct device *dev,
479 struct iommu_page_response *msg);
480
481 extern int iommu_group_id(struct iommu_group *group);
482 extern struct iommu_group *iommu_group_get_for_dev(struct device *dev);
483 extern struct iommu_domain *iommu_group_default_domain(struct iommu_group *);
484
485 extern int iommu_domain_get_attr(struct iommu_domain *domain, enum iommu_attr,
486 void *data);
487 extern int iommu_domain_set_attr(struct iommu_domain *domain, enum iommu_attr,
488 void *data);
489
490
491 extern int iommu_domain_window_enable(struct iommu_domain *domain, u32 wnd_nr,
492 phys_addr_t offset, u64 size,
493 int prot);
494 extern void iommu_domain_window_disable(struct iommu_domain *domain, u32 wnd_nr);
495
496 extern int report_iommu_fault(struct iommu_domain *domain, struct device *dev,
497 unsigned long iova, int flags);
498
499 static inline void iommu_flush_tlb_all(struct iommu_domain *domain)
500 {
501 if (domain->ops->flush_iotlb_all)
502 domain->ops->flush_iotlb_all(domain);
503 }
504
505 static inline void iommu_tlb_sync(struct iommu_domain *domain,
506 struct iommu_iotlb_gather *iotlb_gather)
507 {
508 if (domain->ops->iotlb_sync)
509 domain->ops->iotlb_sync(domain, iotlb_gather);
510
511 iommu_iotlb_gather_init(iotlb_gather);
512 }
513
514 static inline void iommu_iotlb_gather_add_page(struct iommu_domain *domain,
515 struct iommu_iotlb_gather *gather,
516 unsigned long iova, size_t size)
517 {
518 unsigned long start = iova, end = start + size;
519
520
521
522
523
524
525 if (gather->pgsize != size ||
526 end < gather->start || start > gather->end) {
527 if (gather->pgsize)
528 iommu_tlb_sync(domain, gather);
529 gather->pgsize = size;
530 }
531
532 if (gather->end < end)
533 gather->end = end;
534
535 if (gather->start > start)
536 gather->start = start;
537 }
538
539
540 extern struct iommu_group *pci_device_group(struct device *dev);
541
542 extern struct iommu_group *generic_device_group(struct device *dev);
543
544 struct iommu_group *fsl_mc_device_group(struct device *dev);
545
546
547
548
549
550
551
552
553
554 struct iommu_fwspec {
555 const struct iommu_ops *ops;
556 struct fwnode_handle *iommu_fwnode;
557 void *iommu_priv;
558 u32 flags;
559 unsigned int num_ids;
560 u32 ids[1];
561 };
562
563
564 #define IOMMU_FWSPEC_PCI_RC_ATS (1 << 0)
565
566
567
568
569 struct iommu_sva {
570 struct device *dev;
571 const struct iommu_sva_ops *ops;
572 };
573
574 int iommu_fwspec_init(struct device *dev, struct fwnode_handle *iommu_fwnode,
575 const struct iommu_ops *ops);
576 void iommu_fwspec_free(struct device *dev);
577 int iommu_fwspec_add_ids(struct device *dev, u32 *ids, int num_ids);
578 const struct iommu_ops *iommu_ops_from_fwnode(struct fwnode_handle *fwnode);
579
580 static inline struct iommu_fwspec *dev_iommu_fwspec_get(struct device *dev)
581 {
582 return dev->iommu_fwspec;
583 }
584
585 static inline void dev_iommu_fwspec_set(struct device *dev,
586 struct iommu_fwspec *fwspec)
587 {
588 dev->iommu_fwspec = fwspec;
589 }
590
591 int iommu_probe_device(struct device *dev);
592 void iommu_release_device(struct device *dev);
593
594 bool iommu_dev_has_feature(struct device *dev, enum iommu_dev_features f);
595 int iommu_dev_enable_feature(struct device *dev, enum iommu_dev_features f);
596 int iommu_dev_disable_feature(struct device *dev, enum iommu_dev_features f);
597 bool iommu_dev_feature_enabled(struct device *dev, enum iommu_dev_features f);
598 int iommu_aux_attach_device(struct iommu_domain *domain, struct device *dev);
599 void iommu_aux_detach_device(struct iommu_domain *domain, struct device *dev);
600 int iommu_aux_get_pasid(struct iommu_domain *domain, struct device *dev);
601
602 struct iommu_sva *iommu_sva_bind_device(struct device *dev,
603 struct mm_struct *mm,
604 void *drvdata);
605 void iommu_sva_unbind_device(struct iommu_sva *handle);
606 int iommu_sva_set_ops(struct iommu_sva *handle,
607 const struct iommu_sva_ops *ops);
608 int iommu_sva_get_pasid(struct iommu_sva *handle);
609
610 #else
611
612 struct iommu_ops {};
613 struct iommu_group {};
614 struct iommu_fwspec {};
615 struct iommu_device {};
616 struct iommu_fault_param {};
617 struct iommu_iotlb_gather {};
618
619 static inline bool iommu_present(struct bus_type *bus)
620 {
621 return false;
622 }
623
624 static inline bool iommu_capable(struct bus_type *bus, enum iommu_cap cap)
625 {
626 return false;
627 }
628
629 static inline struct iommu_domain *iommu_domain_alloc(struct bus_type *bus)
630 {
631 return NULL;
632 }
633
634 static inline struct iommu_group *iommu_group_get_by_id(int id)
635 {
636 return NULL;
637 }
638
639 static inline void iommu_domain_free(struct iommu_domain *domain)
640 {
641 }
642
643 static inline int iommu_attach_device(struct iommu_domain *domain,
644 struct device *dev)
645 {
646 return -ENODEV;
647 }
648
649 static inline void iommu_detach_device(struct iommu_domain *domain,
650 struct device *dev)
651 {
652 }
653
654 static inline struct iommu_domain *iommu_get_domain_for_dev(struct device *dev)
655 {
656 return NULL;
657 }
658
659 static inline int iommu_map(struct iommu_domain *domain, unsigned long iova,
660 phys_addr_t paddr, size_t size, int prot)
661 {
662 return -ENODEV;
663 }
664
665 static inline size_t iommu_unmap(struct iommu_domain *domain,
666 unsigned long iova, size_t size)
667 {
668 return 0;
669 }
670
671 static inline size_t iommu_unmap_fast(struct iommu_domain *domain,
672 unsigned long iova, int gfp_order,
673 struct iommu_iotlb_gather *iotlb_gather)
674 {
675 return 0;
676 }
677
678 static inline size_t iommu_map_sg(struct iommu_domain *domain,
679 unsigned long iova, struct scatterlist *sg,
680 unsigned int nents, int prot)
681 {
682 return 0;
683 }
684
685 static inline void iommu_flush_tlb_all(struct iommu_domain *domain)
686 {
687 }
688
689 static inline void iommu_tlb_sync(struct iommu_domain *domain,
690 struct iommu_iotlb_gather *iotlb_gather)
691 {
692 }
693
694 static inline int iommu_domain_window_enable(struct iommu_domain *domain,
695 u32 wnd_nr, phys_addr_t paddr,
696 u64 size, int prot)
697 {
698 return -ENODEV;
699 }
700
701 static inline void iommu_domain_window_disable(struct iommu_domain *domain,
702 u32 wnd_nr)
703 {
704 }
705
706 static inline phys_addr_t iommu_iova_to_phys(struct iommu_domain *domain, dma_addr_t iova)
707 {
708 return 0;
709 }
710
711 static inline void iommu_set_fault_handler(struct iommu_domain *domain,
712 iommu_fault_handler_t handler, void *token)
713 {
714 }
715
716 static inline void iommu_get_resv_regions(struct device *dev,
717 struct list_head *list)
718 {
719 }
720
721 static inline void iommu_put_resv_regions(struct device *dev,
722 struct list_head *list)
723 {
724 }
725
726 static inline int iommu_get_group_resv_regions(struct iommu_group *group,
727 struct list_head *head)
728 {
729 return -ENODEV;
730 }
731
732 static inline int iommu_request_dm_for_dev(struct device *dev)
733 {
734 return -ENODEV;
735 }
736
737 static inline int iommu_request_dma_domain_for_dev(struct device *dev)
738 {
739 return -ENODEV;
740 }
741
742 static inline void iommu_set_default_passthrough(bool cmd_line)
743 {
744 }
745
746 static inline void iommu_set_default_translated(bool cmd_line)
747 {
748 }
749
750 static inline bool iommu_default_passthrough(void)
751 {
752 return true;
753 }
754
755 static inline int iommu_attach_group(struct iommu_domain *domain,
756 struct iommu_group *group)
757 {
758 return -ENODEV;
759 }
760
761 static inline void iommu_detach_group(struct iommu_domain *domain,
762 struct iommu_group *group)
763 {
764 }
765
766 static inline struct iommu_group *iommu_group_alloc(void)
767 {
768 return ERR_PTR(-ENODEV);
769 }
770
771 static inline void *iommu_group_get_iommudata(struct iommu_group *group)
772 {
773 return NULL;
774 }
775
776 static inline void iommu_group_set_iommudata(struct iommu_group *group,
777 void *iommu_data,
778 void (*release)(void *iommu_data))
779 {
780 }
781
782 static inline int iommu_group_set_name(struct iommu_group *group,
783 const char *name)
784 {
785 return -ENODEV;
786 }
787
788 static inline int iommu_group_add_device(struct iommu_group *group,
789 struct device *dev)
790 {
791 return -ENODEV;
792 }
793
794 static inline void iommu_group_remove_device(struct device *dev)
795 {
796 }
797
798 static inline int iommu_group_for_each_dev(struct iommu_group *group,
799 void *data,
800 int (*fn)(struct device *, void *))
801 {
802 return -ENODEV;
803 }
804
805 static inline struct iommu_group *iommu_group_get(struct device *dev)
806 {
807 return NULL;
808 }
809
810 static inline void iommu_group_put(struct iommu_group *group)
811 {
812 }
813
814 static inline int iommu_group_register_notifier(struct iommu_group *group,
815 struct notifier_block *nb)
816 {
817 return -ENODEV;
818 }
819
820 static inline int iommu_group_unregister_notifier(struct iommu_group *group,
821 struct notifier_block *nb)
822 {
823 return 0;
824 }
825
826 static inline
827 int iommu_register_device_fault_handler(struct device *dev,
828 iommu_dev_fault_handler_t handler,
829 void *data)
830 {
831 return -ENODEV;
832 }
833
834 static inline int iommu_unregister_device_fault_handler(struct device *dev)
835 {
836 return 0;
837 }
838
839 static inline
840 int iommu_report_device_fault(struct device *dev, struct iommu_fault_event *evt)
841 {
842 return -ENODEV;
843 }
844
845 static inline int iommu_page_response(struct device *dev,
846 struct iommu_page_response *msg)
847 {
848 return -ENODEV;
849 }
850
851 static inline int iommu_group_id(struct iommu_group *group)
852 {
853 return -ENODEV;
854 }
855
856 static inline int iommu_domain_get_attr(struct iommu_domain *domain,
857 enum iommu_attr attr, void *data)
858 {
859 return -EINVAL;
860 }
861
862 static inline int iommu_domain_set_attr(struct iommu_domain *domain,
863 enum iommu_attr attr, void *data)
864 {
865 return -EINVAL;
866 }
867
868 static inline int iommu_device_register(struct iommu_device *iommu)
869 {
870 return -ENODEV;
871 }
872
873 static inline void iommu_device_set_ops(struct iommu_device *iommu,
874 const struct iommu_ops *ops)
875 {
876 }
877
878 static inline void iommu_device_set_fwnode(struct iommu_device *iommu,
879 struct fwnode_handle *fwnode)
880 {
881 }
882
883 static inline struct iommu_device *dev_to_iommu_device(struct device *dev)
884 {
885 return NULL;
886 }
887
888 static inline void iommu_iotlb_gather_init(struct iommu_iotlb_gather *gather)
889 {
890 }
891
892 static inline void iommu_iotlb_gather_add_page(struct iommu_domain *domain,
893 struct iommu_iotlb_gather *gather,
894 unsigned long iova, size_t size)
895 {
896 }
897
898 static inline void iommu_device_unregister(struct iommu_device *iommu)
899 {
900 }
901
902 static inline int iommu_device_sysfs_add(struct iommu_device *iommu,
903 struct device *parent,
904 const struct attribute_group **groups,
905 const char *fmt, ...)
906 {
907 return -ENODEV;
908 }
909
910 static inline void iommu_device_sysfs_remove(struct iommu_device *iommu)
911 {
912 }
913
914 static inline int iommu_device_link(struct device *dev, struct device *link)
915 {
916 return -EINVAL;
917 }
918
919 static inline void iommu_device_unlink(struct device *dev, struct device *link)
920 {
921 }
922
923 static inline int iommu_fwspec_init(struct device *dev,
924 struct fwnode_handle *iommu_fwnode,
925 const struct iommu_ops *ops)
926 {
927 return -ENODEV;
928 }
929
930 static inline void iommu_fwspec_free(struct device *dev)
931 {
932 }
933
934 static inline int iommu_fwspec_add_ids(struct device *dev, u32 *ids,
935 int num_ids)
936 {
937 return -ENODEV;
938 }
939
940 static inline
941 const struct iommu_ops *iommu_ops_from_fwnode(struct fwnode_handle *fwnode)
942 {
943 return NULL;
944 }
945
946 static inline bool
947 iommu_dev_has_feature(struct device *dev, enum iommu_dev_features feat)
948 {
949 return false;
950 }
951
952 static inline bool
953 iommu_dev_feature_enabled(struct device *dev, enum iommu_dev_features feat)
954 {
955 return false;
956 }
957
958 static inline int
959 iommu_dev_enable_feature(struct device *dev, enum iommu_dev_features feat)
960 {
961 return -ENODEV;
962 }
963
964 static inline int
965 iommu_dev_disable_feature(struct device *dev, enum iommu_dev_features feat)
966 {
967 return -ENODEV;
968 }
969
970 static inline int
971 iommu_aux_attach_device(struct iommu_domain *domain, struct device *dev)
972 {
973 return -ENODEV;
974 }
975
976 static inline void
977 iommu_aux_detach_device(struct iommu_domain *domain, struct device *dev)
978 {
979 }
980
981 static inline int
982 iommu_aux_get_pasid(struct iommu_domain *domain, struct device *dev)
983 {
984 return -ENODEV;
985 }
986
987 static inline struct iommu_sva *
988 iommu_sva_bind_device(struct device *dev, struct mm_struct *mm, void *drvdata)
989 {
990 return NULL;
991 }
992
993 static inline void iommu_sva_unbind_device(struct iommu_sva *handle)
994 {
995 }
996
997 static inline int iommu_sva_set_ops(struct iommu_sva *handle,
998 const struct iommu_sva_ops *ops)
999 {
1000 return -EINVAL;
1001 }
1002
1003 static inline int iommu_sva_get_pasid(struct iommu_sva *handle)
1004 {
1005 return IOMMU_PASID_INVALID;
1006 }
1007
1008 #endif
1009
1010 #ifdef CONFIG_IOMMU_DEBUGFS
1011 extern struct dentry *iommu_debugfs_dir;
1012 void iommu_debugfs_setup(void);
1013 #else
1014 static inline void iommu_debugfs_setup(void) {}
1015 #endif
1016
1017 #endif