summaryrefslogtreecommitdiff
path: root/drivers/iommu/arm-smmu.h
diff options
context:
space:
mode:
authorWill Deacon <will@kernel.org>2019-08-23 15:05:45 +0100
committerWill Deacon <will@kernel.org>2019-08-23 15:05:45 +0100
commit1554240ff864da9eb99e2233d3faf191c567c47a (patch)
tree610e14f0e68dfd2807f4ca935433823b527041b3 /drivers/iommu/arm-smmu.h
parentd720e64150c79d14f4faf931604faa1f0755134d (diff)
parenta91bcc2b65370e7debf1fc26b93a4c2a54433220 (diff)
Merge branches 'for-joerg/arm-smmu/smmu-v2' and 'for-joerg/arm-smmu/smmu-v3' into for-joerg/arm-smmu/updates
* for-joerg/arm-smmu/smmu-v2: Refactoring to allow for implementation-specific hooks in 'arm-smmu-impl.c' * for-joerg/arm-smmu/smmu-v3: Support for deferred TLB invalidation and batching of commands Rework ATC invalidation for ATS-enabled PCIe masters
Diffstat (limited to 'drivers/iommu/arm-smmu.h')
-rw-r--r--drivers/iommu/arm-smmu.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/iommu/arm-smmu.h b/drivers/iommu/arm-smmu.h
index ac9eac966cf5..b19b6cae9b5e 100644
--- a/drivers/iommu/arm-smmu.h
+++ b/drivers/iommu/arm-smmu.h
@@ -304,10 +304,17 @@ enum arm_smmu_domain_stage {
ARM_SMMU_DOMAIN_BYPASS,
};
+struct arm_smmu_flush_ops {
+ struct iommu_flush_ops tlb;
+ void (*tlb_inv_range)(unsigned long iova, size_t size, size_t granule,
+ bool leaf, void *cookie);
+ void (*tlb_sync)(void *cookie);
+};
+
struct arm_smmu_domain {
struct arm_smmu_device *smmu;
struct io_pgtable_ops *pgtbl_ops;
- const struct iommu_gather_ops *tlb_ops;
+ const struct arm_smmu_flush_ops *flush_ops;
struct arm_smmu_cfg cfg;
enum arm_smmu_domain_stage stage;
bool non_strict;