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
40struct iommu_ops;
41struct iommu_group;
42struct bus_type;
43struct device;
44struct iommu_domain;
45struct notifier_block;
46struct iommu_sva;
47struct iommu_fault_event;
48
49
50#define IOMMU_FAULT_READ 0x0
51#define IOMMU_FAULT_WRITE 0x1
52
53typedef int (*iommu_fault_handler_t)(struct iommu_domain *,
54 struct device *, unsigned long, int, void *);
55typedef int (*iommu_mm_exit_handler_t)(struct device *dev, struct iommu_sva *,
56 void *);
57typedef int (*iommu_dev_fault_handler_t)(struct iommu_fault *, void *);
58
59struct 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
89struct 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
99enum 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
119enum 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
132enum 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
157struct 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
166enum 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
188struct 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
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233struct iommu_ops {
234 bool (*capable)(enum iommu_cap);
235
236
237 struct iommu_domain *(*domain_alloc)(unsigned iommu_domain_type);
238 void (*domain_free)(struct iommu_domain *);
239
240 int (*attach_dev)(struct iommu_domain *domain, struct device *dev);
241 void (*detach_dev)(struct iommu_domain *domain, struct device *dev);
242 int (*map)(struct iommu_domain *domain, unsigned long iova,
243 phys_addr_t paddr, size_t size, int prot);
244 size_t (*unmap)(struct iommu_domain *domain, unsigned long iova,
245 size_t size);
246 void (*flush_iotlb_all)(struct iommu_domain *domain);
247 void (*iotlb_range_add)(struct iommu_domain *domain,
248 unsigned long iova, size_t size);
249 void (*iotlb_sync_map)(struct iommu_domain *domain);
250 void (*iotlb_sync)(struct iommu_domain *domain);
251 phys_addr_t (*iova_to_phys)(struct iommu_domain *domain, dma_addr_t iova);
252 int (*add_device)(struct device *dev);
253 void (*remove_device)(struct device *dev);
254 struct iommu_group *(*device_group)(struct device *dev);
255 int (*domain_get_attr)(struct iommu_domain *domain,
256 enum iommu_attr attr, void *data);
257 int (*domain_set_attr)(struct iommu_domain *domain,
258 enum iommu_attr attr, void *data);
259
260
261 void (*get_resv_regions)(struct device *dev, struct list_head *list);
262 void (*put_resv_regions)(struct device *dev, struct list_head *list);
263 void (*apply_resv_region)(struct device *dev,
264 struct iommu_domain *domain,
265 struct iommu_resv_region *region);
266
267
268 int (*domain_window_enable)(struct iommu_domain *domain, u32 wnd_nr,
269 phys_addr_t paddr, u64 size, int prot);
270 void (*domain_window_disable)(struct iommu_domain *domain, u32 wnd_nr);
271
272 int (*of_xlate)(struct device *dev, struct of_phandle_args *args);
273 bool (*is_attach_deferred)(struct iommu_domain *domain, struct device *dev);
274
275
276 bool (*dev_has_feat)(struct device *dev, enum iommu_dev_features f);
277 bool (*dev_feat_enabled)(struct device *dev, enum iommu_dev_features f);
278 int (*dev_enable_feat)(struct device *dev, enum iommu_dev_features f);
279 int (*dev_disable_feat)(struct device *dev, enum iommu_dev_features f);
280
281
282 int (*aux_attach_dev)(struct iommu_domain *domain, struct device *dev);
283 void (*aux_detach_dev)(struct iommu_domain *domain, struct device *dev);
284 int (*aux_get_pasid)(struct iommu_domain *domain, struct device *dev);
285
286 struct iommu_sva *(*sva_bind)(struct device *dev, struct mm_struct *mm,
287 void *drvdata);
288 void (*sva_unbind)(struct iommu_sva *handle);
289 int (*sva_get_pasid)(struct iommu_sva *handle);
290
291 int (*page_response)(struct device *dev,
292 struct iommu_fault_event *evt,
293 struct iommu_page_response *msg);
294
295 unsigned long pgsize_bitmap;
296};
297
298
299
300
301
302
303
304
305struct iommu_device {
306 struct list_head list;
307 const struct iommu_ops *ops;
308 struct fwnode_handle *fwnode;
309 struct device *dev;
310};
311
312
313
314
315
316
317
318
319
320
321struct iommu_fault_event {
322 struct iommu_fault fault;
323 struct list_head list;
324};
325
326
327
328
329
330
331
332
333struct iommu_fault_param {
334 iommu_dev_fault_handler_t handler;
335 void *data;
336 struct list_head faults;
337 struct mutex lock;
338};
339
340
341
342
343
344
345
346
347
348
349struct iommu_param {
350 struct mutex lock;
351 struct iommu_fault_param *fault_param;
352};
353
354int iommu_device_register(struct iommu_device *iommu);
355void iommu_device_unregister(struct iommu_device *iommu);
356int iommu_device_sysfs_add(struct iommu_device *iommu,
357 struct device *parent,
358 const struct attribute_group **groups,
359 const char *fmt, ...) __printf(4, 5);
360void iommu_device_sysfs_remove(struct iommu_device *iommu);
361int iommu_device_link(struct iommu_device *iommu, struct device *link);
362void iommu_device_unlink(struct iommu_device *iommu, struct device *link);
363
364static inline void iommu_device_set_ops(struct iommu_device *iommu,
365 const struct iommu_ops *ops)
366{
367 iommu->ops = ops;
368}
369
370static inline void iommu_device_set_fwnode(struct iommu_device *iommu,
371 struct fwnode_handle *fwnode)
372{
373 iommu->fwnode = fwnode;
374}
375
376static inline struct iommu_device *dev_to_iommu_device(struct device *dev)
377{
378 return (struct iommu_device *)dev_get_drvdata(dev);
379}
380
381#define IOMMU_GROUP_NOTIFY_ADD_DEVICE 1
382#define IOMMU_GROUP_NOTIFY_DEL_DEVICE 2
383#define IOMMU_GROUP_NOTIFY_BIND_DRIVER 3
384#define IOMMU_GROUP_NOTIFY_BOUND_DRIVER 4
385#define IOMMU_GROUP_NOTIFY_UNBIND_DRIVER 5
386#define IOMMU_GROUP_NOTIFY_UNBOUND_DRIVER 6
387
388extern int bus_set_iommu(struct bus_type *bus, const struct iommu_ops *ops);
389extern bool iommu_present(struct bus_type *bus);
390extern bool iommu_capable(struct bus_type *bus, enum iommu_cap cap);
391extern struct iommu_domain *iommu_domain_alloc(struct bus_type *bus);
392extern struct iommu_group *iommu_group_get_by_id(int id);
393extern void iommu_domain_free(struct iommu_domain *domain);
394extern int iommu_attach_device(struct iommu_domain *domain,
395 struct device *dev);
396extern void iommu_detach_device(struct iommu_domain *domain,
397 struct device *dev);
398extern struct iommu_domain *iommu_get_domain_for_dev(struct device *dev);
399extern struct iommu_domain *iommu_get_dma_domain(struct device *dev);
400extern int iommu_map(struct iommu_domain *domain, unsigned long iova,
401 phys_addr_t paddr, size_t size, int prot);
402extern size_t iommu_unmap(struct iommu_domain *domain, unsigned long iova,
403 size_t size);
404extern size_t iommu_unmap_fast(struct iommu_domain *domain,
405 unsigned long iova, size_t size);
406extern size_t iommu_map_sg(struct iommu_domain *domain, unsigned long iova,
407 struct scatterlist *sg,unsigned int nents, int prot);
408extern phys_addr_t iommu_iova_to_phys(struct iommu_domain *domain, dma_addr_t iova);
409extern void iommu_set_fault_handler(struct iommu_domain *domain,
410 iommu_fault_handler_t handler, void *token);
411
412extern void iommu_get_resv_regions(struct device *dev, struct list_head *list);
413extern void iommu_put_resv_regions(struct device *dev, struct list_head *list);
414extern int iommu_request_dm_for_dev(struct device *dev);
415extern int iommu_request_dma_domain_for_dev(struct device *dev);
416extern struct iommu_resv_region *
417iommu_alloc_resv_region(phys_addr_t start, size_t length, int prot,
418 enum iommu_resv_type type);
419extern int iommu_get_group_resv_regions(struct iommu_group *group,
420 struct list_head *head);
421
422extern int iommu_attach_group(struct iommu_domain *domain,
423 struct iommu_group *group);
424extern void iommu_detach_group(struct iommu_domain *domain,
425 struct iommu_group *group);
426extern struct iommu_group *iommu_group_alloc(void);
427extern void *iommu_group_get_iommudata(struct iommu_group *group);
428extern void iommu_group_set_iommudata(struct iommu_group *group,
429 void *iommu_data,
430 void (*release)(void *iommu_data));
431extern int iommu_group_set_name(struct iommu_group *group, const char *name);
432extern int iommu_group_add_device(struct iommu_group *group,
433 struct device *dev);
434extern void iommu_group_remove_device(struct device *dev);
435extern int iommu_group_for_each_dev(struct iommu_group *group, void *data,
436 int (*fn)(struct device *, void *));
437extern struct iommu_group *iommu_group_get(struct device *dev);
438extern struct iommu_group *iommu_group_ref_get(struct iommu_group *group);
439extern void iommu_group_put(struct iommu_group *group);
440extern int iommu_group_register_notifier(struct iommu_group *group,
441 struct notifier_block *nb);
442extern int iommu_group_unregister_notifier(struct iommu_group *group,
443 struct notifier_block *nb);
444extern int iommu_register_device_fault_handler(struct device *dev,
445 iommu_dev_fault_handler_t handler,
446 void *data);
447
448extern int iommu_unregister_device_fault_handler(struct device *dev);
449
450extern int iommu_report_device_fault(struct device *dev,
451 struct iommu_fault_event *evt);
452extern int iommu_page_response(struct device *dev,
453 struct iommu_page_response *msg);
454
455extern int iommu_group_id(struct iommu_group *group);
456extern struct iommu_group *iommu_group_get_for_dev(struct device *dev);
457extern struct iommu_domain *iommu_group_default_domain(struct iommu_group *);
458
459extern int iommu_domain_get_attr(struct iommu_domain *domain, enum iommu_attr,
460 void *data);
461extern int iommu_domain_set_attr(struct iommu_domain *domain, enum iommu_attr,
462 void *data);
463
464
465extern int iommu_domain_window_enable(struct iommu_domain *domain, u32 wnd_nr,
466 phys_addr_t offset, u64 size,
467 int prot);
468extern void iommu_domain_window_disable(struct iommu_domain *domain, u32 wnd_nr);
469
470extern int report_iommu_fault(struct iommu_domain *domain, struct device *dev,
471 unsigned long iova, int flags);
472
473static inline void iommu_flush_tlb_all(struct iommu_domain *domain)
474{
475 if (domain->ops->flush_iotlb_all)
476 domain->ops->flush_iotlb_all(domain);
477}
478
479static inline void iommu_tlb_range_add(struct iommu_domain *domain,
480 unsigned long iova, size_t size)
481{
482 if (domain->ops->iotlb_range_add)
483 domain->ops->iotlb_range_add(domain, iova, size);
484}
485
486static inline void iommu_tlb_sync(struct iommu_domain *domain)
487{
488 if (domain->ops->iotlb_sync)
489 domain->ops->iotlb_sync(domain);
490}
491
492
493extern struct iommu_group *pci_device_group(struct device *dev);
494
495extern struct iommu_group *generic_device_group(struct device *dev);
496
497struct iommu_group *fsl_mc_device_group(struct device *dev);
498
499
500
501
502
503
504
505
506
507struct iommu_fwspec {
508 const struct iommu_ops *ops;
509 struct fwnode_handle *iommu_fwnode;
510 void *iommu_priv;
511 u32 flags;
512 unsigned int num_ids;
513 u32 ids[1];
514};
515
516
517#define IOMMU_FWSPEC_PCI_RC_ATS (1 << 0)
518
519
520
521
522struct iommu_sva {
523 struct device *dev;
524 const struct iommu_sva_ops *ops;
525};
526
527int iommu_fwspec_init(struct device *dev, struct fwnode_handle *iommu_fwnode,
528 const struct iommu_ops *ops);
529void iommu_fwspec_free(struct device *dev);
530int iommu_fwspec_add_ids(struct device *dev, u32 *ids, int num_ids);
531const struct iommu_ops *iommu_ops_from_fwnode(struct fwnode_handle *fwnode);
532
533static inline struct iommu_fwspec *dev_iommu_fwspec_get(struct device *dev)
534{
535 return dev->iommu_fwspec;
536}
537
538static inline void dev_iommu_fwspec_set(struct device *dev,
539 struct iommu_fwspec *fwspec)
540{
541 dev->iommu_fwspec = fwspec;
542}
543
544int iommu_probe_device(struct device *dev);
545void iommu_release_device(struct device *dev);
546
547bool iommu_dev_has_feature(struct device *dev, enum iommu_dev_features f);
548int iommu_dev_enable_feature(struct device *dev, enum iommu_dev_features f);
549int iommu_dev_disable_feature(struct device *dev, enum iommu_dev_features f);
550bool iommu_dev_feature_enabled(struct device *dev, enum iommu_dev_features f);
551int iommu_aux_attach_device(struct iommu_domain *domain, struct device *dev);
552void iommu_aux_detach_device(struct iommu_domain *domain, struct device *dev);
553int iommu_aux_get_pasid(struct iommu_domain *domain, struct device *dev);
554
555struct iommu_sva *iommu_sva_bind_device(struct device *dev,
556 struct mm_struct *mm,
557 void *drvdata);
558void iommu_sva_unbind_device(struct iommu_sva *handle);
559int iommu_sva_set_ops(struct iommu_sva *handle,
560 const struct iommu_sva_ops *ops);
561int iommu_sva_get_pasid(struct iommu_sva *handle);
562
563#else
564
565struct iommu_ops {};
566struct iommu_group {};
567struct iommu_fwspec {};
568struct iommu_device {};
569struct iommu_fault_param {};
570
571static inline bool iommu_present(struct bus_type *bus)
572{
573 return false;
574}
575
576static inline bool iommu_capable(struct bus_type *bus, enum iommu_cap cap)
577{
578 return false;
579}
580
581static inline struct iommu_domain *iommu_domain_alloc(struct bus_type *bus)
582{
583 return NULL;
584}
585
586static inline struct iommu_group *iommu_group_get_by_id(int id)
587{
588 return NULL;
589}
590
591static inline void iommu_domain_free(struct iommu_domain *domain)
592{
593}
594
595static inline int iommu_attach_device(struct iommu_domain *domain,
596 struct device *dev)
597{
598 return -ENODEV;
599}
600
601static inline void iommu_detach_device(struct iommu_domain *domain,
602 struct device *dev)
603{
604}
605
606static inline struct iommu_domain *iommu_get_domain_for_dev(struct device *dev)
607{
608 return NULL;
609}
610
611static inline int iommu_map(struct iommu_domain *domain, unsigned long iova,
612 phys_addr_t paddr, size_t size, int prot)
613{
614 return -ENODEV;
615}
616
617static inline size_t iommu_unmap(struct iommu_domain *domain,
618 unsigned long iova, size_t size)
619{
620 return 0;
621}
622
623static inline size_t iommu_unmap_fast(struct iommu_domain *domain,
624 unsigned long iova, int gfp_order)
625{
626 return 0;
627}
628
629static inline size_t iommu_map_sg(struct iommu_domain *domain,
630 unsigned long iova, struct scatterlist *sg,
631 unsigned int nents, int prot)
632{
633 return 0;
634}
635
636static inline void iommu_flush_tlb_all(struct iommu_domain *domain)
637{
638}
639
640static inline void iommu_tlb_range_add(struct iommu_domain *domain,
641 unsigned long iova, size_t size)
642{
643}
644
645static inline void iommu_tlb_sync(struct iommu_domain *domain)
646{
647}
648
649static inline int iommu_domain_window_enable(struct iommu_domain *domain,
650 u32 wnd_nr, phys_addr_t paddr,
651 u64 size, int prot)
652{
653 return -ENODEV;
654}
655
656static inline void iommu_domain_window_disable(struct iommu_domain *domain,
657 u32 wnd_nr)
658{
659}
660
661static inline phys_addr_t iommu_iova_to_phys(struct iommu_domain *domain, dma_addr_t iova)
662{
663 return 0;
664}
665
666static inline void iommu_set_fault_handler(struct iommu_domain *domain,
667 iommu_fault_handler_t handler, void *token)
668{
669}
670
671static inline void iommu_get_resv_regions(struct device *dev,
672 struct list_head *list)
673{
674}
675
676static inline void iommu_put_resv_regions(struct device *dev,
677 struct list_head *list)
678{
679}
680
681static inline int iommu_get_group_resv_regions(struct iommu_group *group,
682 struct list_head *head)
683{
684 return -ENODEV;
685}
686
687static inline int iommu_request_dm_for_dev(struct device *dev)
688{
689 return -ENODEV;
690}
691
692static inline int iommu_request_dma_domain_for_dev(struct device *dev)
693{
694 return -ENODEV;
695}
696
697static inline int iommu_attach_group(struct iommu_domain *domain,
698 struct iommu_group *group)
699{
700 return -ENODEV;
701}
702
703static inline void iommu_detach_group(struct iommu_domain *domain,
704 struct iommu_group *group)
705{
706}
707
708static inline struct iommu_group *iommu_group_alloc(void)
709{
710 return ERR_PTR(-ENODEV);
711}
712
713static inline void *iommu_group_get_iommudata(struct iommu_group *group)
714{
715 return NULL;
716}
717
718static inline void iommu_group_set_iommudata(struct iommu_group *group,
719 void *iommu_data,
720 void (*release)(void *iommu_data))
721{
722}
723
724static inline int iommu_group_set_name(struct iommu_group *group,
725 const char *name)
726{
727 return -ENODEV;
728}
729
730static inline int iommu_group_add_device(struct iommu_group *group,
731 struct device *dev)
732{
733 return -ENODEV;
734}
735
736static inline void iommu_group_remove_device(struct device *dev)
737{
738}
739
740static inline int iommu_group_for_each_dev(struct iommu_group *group,
741 void *data,
742 int (*fn)(struct device *, void *))
743{
744 return -ENODEV;
745}
746
747static inline struct iommu_group *iommu_group_get(struct device *dev)
748{
749 return NULL;
750}
751
752static inline void iommu_group_put(struct iommu_group *group)
753{
754}
755
756static inline int iommu_group_register_notifier(struct iommu_group *group,
757 struct notifier_block *nb)
758{
759 return -ENODEV;
760}
761
762static inline int iommu_group_unregister_notifier(struct iommu_group *group,
763 struct notifier_block *nb)
764{
765 return 0;
766}
767
768static inline
769int iommu_register_device_fault_handler(struct device *dev,
770 iommu_dev_fault_handler_t handler,
771 void *data)
772{
773 return -ENODEV;
774}
775
776static inline int iommu_unregister_device_fault_handler(struct device *dev)
777{
778 return 0;
779}
780
781static inline
782int iommu_report_device_fault(struct device *dev, struct iommu_fault_event *evt)
783{
784 return -ENODEV;
785}
786
787static inline int iommu_page_response(struct device *dev,
788 struct iommu_page_response *msg)
789{
790 return -ENODEV;
791}
792
793static inline int iommu_group_id(struct iommu_group *group)
794{
795 return -ENODEV;
796}
797
798static inline int iommu_domain_get_attr(struct iommu_domain *domain,
799 enum iommu_attr attr, void *data)
800{
801 return -EINVAL;
802}
803
804static inline int iommu_domain_set_attr(struct iommu_domain *domain,
805 enum iommu_attr attr, void *data)
806{
807 return -EINVAL;
808}
809
810static inline int iommu_device_register(struct iommu_device *iommu)
811{
812 return -ENODEV;
813}
814
815static inline void iommu_device_set_ops(struct iommu_device *iommu,
816 const struct iommu_ops *ops)
817{
818}
819
820static inline void iommu_device_set_fwnode(struct iommu_device *iommu,
821 struct fwnode_handle *fwnode)
822{
823}
824
825static inline struct iommu_device *dev_to_iommu_device(struct device *dev)
826{
827 return NULL;
828}
829
830static inline void iommu_device_unregister(struct iommu_device *iommu)
831{
832}
833
834static inline int iommu_device_sysfs_add(struct iommu_device *iommu,
835 struct device *parent,
836 const struct attribute_group **groups,
837 const char *fmt, ...)
838{
839 return -ENODEV;
840}
841
842static inline void iommu_device_sysfs_remove(struct iommu_device *iommu)
843{
844}
845
846static inline int iommu_device_link(struct device *dev, struct device *link)
847{
848 return -EINVAL;
849}
850
851static inline void iommu_device_unlink(struct device *dev, struct device *link)
852{
853}
854
855static inline int iommu_fwspec_init(struct device *dev,
856 struct fwnode_handle *iommu_fwnode,
857 const struct iommu_ops *ops)
858{
859 return -ENODEV;
860}
861
862static inline void iommu_fwspec_free(struct device *dev)
863{
864}
865
866static inline int iommu_fwspec_add_ids(struct device *dev, u32 *ids,
867 int num_ids)
868{
869 return -ENODEV;
870}
871
872static inline
873const struct iommu_ops *iommu_ops_from_fwnode(struct fwnode_handle *fwnode)
874{
875 return NULL;
876}
877
878static inline bool
879iommu_dev_has_feature(struct device *dev, enum iommu_dev_features feat)
880{
881 return false;
882}
883
884static inline bool
885iommu_dev_feature_enabled(struct device *dev, enum iommu_dev_features feat)
886{
887 return false;
888}
889
890static inline int
891iommu_dev_enable_feature(struct device *dev, enum iommu_dev_features feat)
892{
893 return -ENODEV;
894}
895
896static inline int
897iommu_dev_disable_feature(struct device *dev, enum iommu_dev_features feat)
898{
899 return -ENODEV;
900}
901
902static inline int
903iommu_aux_attach_device(struct iommu_domain *domain, struct device *dev)
904{
905 return -ENODEV;
906}
907
908static inline void
909iommu_aux_detach_device(struct iommu_domain *domain, struct device *dev)
910{
911}
912
913static inline int
914iommu_aux_get_pasid(struct iommu_domain *domain, struct device *dev)
915{
916 return -ENODEV;
917}
918
919static inline struct iommu_sva *
920iommu_sva_bind_device(struct device *dev, struct mm_struct *mm, void *drvdata)
921{
922 return NULL;
923}
924
925static inline void iommu_sva_unbind_device(struct iommu_sva *handle)
926{
927}
928
929static inline int iommu_sva_set_ops(struct iommu_sva *handle,
930 const struct iommu_sva_ops *ops)
931{
932 return -EINVAL;
933}
934
935static inline int iommu_sva_get_pasid(struct iommu_sva *handle)
936{
937 return IOMMU_PASID_INVALID;
938}
939
940#endif
941
942#ifdef CONFIG_IOMMU_DEBUGFS
943extern struct dentry *iommu_debugfs_dir;
944void iommu_debugfs_setup(void);
945#else
946static inline void iommu_debugfs_setup(void) {}
947#endif
948
949#endif
950