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