iommu/arm-smmu: wire up .map_sg from the ARM LPAE io-pgtable
The ARM LPAE io-pgtable provider now has support for .map_sg. Wire it up. Change-Id: I2eaea6f245e1059582f3bf04829e9e3f24675782 Signed-off-by: Mitchel Humpherys <mitchelh@codeaurora.org>
This commit is contained in:
parent
edc17c14e2
commit
700c9f4fcb
1 changed files with 18 additions and 1 deletions
|
@ -1559,6 +1559,23 @@ static int arm_smmu_map(struct iommu_domain *domain, unsigned long iova,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static size_t arm_smmu_map_sg(struct iommu_domain *domain, unsigned long iova,
|
||||||
|
struct scatterlist *sg, unsigned int nents, int prot)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
unsigned long flags;
|
||||||
|
struct arm_smmu_domain *smmu_domain = domain->priv;
|
||||||
|
struct io_pgtable_ops *ops = smmu_domain->pgtbl_ops;
|
||||||
|
|
||||||
|
if (!ops)
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
|
spin_lock_irqsave(&smmu_domain->pgtbl_lock, flags);
|
||||||
|
ret = ops->map_sg(ops, iova, sg, nents, prot);
|
||||||
|
spin_unlock_irqrestore(&smmu_domain->pgtbl_lock, flags);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static size_t arm_smmu_unmap(struct iommu_domain *domain, unsigned long iova,
|
static size_t arm_smmu_unmap(struct iommu_domain *domain, unsigned long iova,
|
||||||
size_t size)
|
size_t size)
|
||||||
{
|
{
|
||||||
|
@ -1760,7 +1777,7 @@ static struct iommu_ops arm_smmu_ops = {
|
||||||
.detach_dev = arm_smmu_detach_dev,
|
.detach_dev = arm_smmu_detach_dev,
|
||||||
.map = arm_smmu_map,
|
.map = arm_smmu_map,
|
||||||
.unmap = arm_smmu_unmap,
|
.unmap = arm_smmu_unmap,
|
||||||
.map_sg = default_iommu_map_sg,
|
.map_sg = arm_smmu_map_sg,
|
||||||
.iova_to_phys = arm_smmu_iova_to_phys,
|
.iova_to_phys = arm_smmu_iova_to_phys,
|
||||||
.add_device = arm_smmu_add_device,
|
.add_device = arm_smmu_add_device,
|
||||||
.remove_device = arm_smmu_remove_device,
|
.remove_device = arm_smmu_remove_device,
|
||||||
|
|
Loading…
Add table
Reference in a new issue