diff options
author | Joerg Roedel <jroedel@suse.de> | 2019-08-19 15:22:47 +0200 |
---|---|---|
committer | Joerg Roedel <jroedel@suse.de> | 2019-08-23 10:09:58 +0200 |
commit | 8a69961c7f7583742ab9064feab5ea533a6b1b97 (patch) | |
tree | 64117168f01305730249d575a64cacd631b3c229 /drivers/iommu/iommu.c | |
parent | iommu: Remember when default domain type was set on kernel command line (diff) | |
download | linux-8a69961c7f7583742ab9064feab5ea533a6b1b97.tar.xz linux-8a69961c7f7583742ab9064feab5ea533a6b1b97.zip |
iommu: Add helpers to set/get default domain type
Add a couple of functions to allow changing the default
domain type from architecture code and a function for iommu
drivers to request whether the default domain is
passthrough.
Signed-off-by: Joerg Roedel <jroedel@suse.de>
Diffstat (limited to 'drivers/iommu/iommu.c')
-rw-r--r-- | drivers/iommu/iommu.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c index 0ae34cca0d4a..c5e0fc5ffe8b 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c @@ -2213,6 +2213,28 @@ int iommu_request_dma_domain_for_dev(struct device *dev) return request_default_domain_for_dev(dev, IOMMU_DOMAIN_DMA); } +void iommu_set_default_passthrough(bool cmd_line) +{ + if (cmd_line) + iommu_set_cmd_line_dma_api(); + + iommu_def_domain_type = IOMMU_DOMAIN_IDENTITY; +} + +void iommu_set_default_translated(bool cmd_line) +{ + if (cmd_line) + iommu_set_cmd_line_dma_api(); + + iommu_def_domain_type = IOMMU_DOMAIN_DMA; +} + +bool iommu_default_passthrough(void) +{ + return iommu_def_domain_type == IOMMU_DOMAIN_IDENTITY; +} +EXPORT_SYMBOL_GPL(iommu_default_passthrough); + const struct iommu_ops *iommu_ops_from_fwnode(struct fwnode_handle *fwnode) { const struct iommu_ops *ops = NULL; |