Skip to content
Permalink
Browse files
iommu: Add dummy dev_iommu_fwspec_get() helper
This dummy implementation is useful to avoid a dependency on the
IOMMU_API Kconfig symbol in drivers that can optionally use the IOMMU
API.

In order to fully use this, also move the struct iommu_fwspec definition
out of the IOMMU_API protected region.

Acked-by: Joerg Roedel <jroedel@suse.de>
Signed-off-by: Thierry Reding <treding@nvidia.com>
---
Changes in v3:
- remove duplicate struct iommu_fwspec definition
  • Loading branch information
Thierry Reding committed Mar 19, 2021
1 parent 1419101 commit d006496f132a87d2a36130b1e3d7b471e530c459
Showing 1 changed file with 27 additions and 23 deletions.
@@ -164,6 +164,28 @@ enum iommu_dev_features {

#define IOMMU_PASID_INVALID (-1U)

/**
* struct iommu_fwspec - per-device IOMMU instance data
* @ops: ops for this device's IOMMU
* @iommu_fwnode: firmware handle for this device's IOMMU
* @iommu_priv: IOMMU driver private data for this device
* @flags: IOMMU flags associated with this device
* @num_pasid_bits: number of PASID bits supported by this device
* @num_ids: number of associated device IDs
* @ids: IDs which this device may present to the IOMMU
*/
struct iommu_fwspec {
const struct iommu_ops *ops;
struct fwnode_handle *iommu_fwnode;
u32 flags;
u32 num_pasid_bits;
unsigned int num_ids;
u32 ids[];
};

/* ATS is supported */
#define IOMMU_FWSPEC_PCI_RC_ATS (1 << 0)

#ifdef CONFIG_IOMMU_API

/**
@@ -567,28 +589,6 @@ extern struct iommu_group *generic_device_group(struct device *dev);
/* FSL-MC device grouping function */
struct iommu_group *fsl_mc_device_group(struct device *dev);

/**
* struct iommu_fwspec - per-device IOMMU instance data
* @ops: ops for this device's IOMMU
* @iommu_fwnode: firmware handle for this device's IOMMU
* @iommu_priv: IOMMU driver private data for this device
* @flags: IOMMU flags associated with this device
* @num_pasid_bits: number of PASID bits supported by this device
* @num_ids: number of associated device IDs
* @ids: IDs which this device may present to the IOMMU
*/
struct iommu_fwspec {
const struct iommu_ops *ops;
struct fwnode_handle *iommu_fwnode;
u32 flags;
u32 num_pasid_bits;
unsigned int num_ids;
u32 ids[];
};

/* ATS is supported */
#define IOMMU_FWSPEC_PCI_RC_ATS (1 << 0)

/**
* struct iommu_sva - handle to a device-mm bond
*/
@@ -649,7 +649,6 @@ u32 iommu_sva_get_pasid(struct iommu_sva *handle);

struct iommu_ops {};
struct iommu_group {};
struct iommu_fwspec {};
struct iommu_device {};
struct iommu_fault_param {};
struct iommu_iotlb_gather {};
@@ -980,6 +979,11 @@ const struct iommu_ops *iommu_ops_from_fwnode(struct fwnode_handle *fwnode)
return NULL;
}

static inline struct iommu_fwspec *dev_iommu_fwspec_get(struct device *dev)
{
return NULL;
}

static inline bool
iommu_dev_feature_enabled(struct device *dev, enum iommu_dev_features feat)
{

0 comments on commit d006496

Please sign in to comment.