Message ID | 20171011135919.3653302-1-arnd@arndb.de |
---|---|
State | New |
Headers | show |
Series | iommu/io-pgtable-arm: hide unused ipmmu_iotlb_sync | expand |
On 11/10/17 14:59, Arnd Bergmann wrote: > There are two sets of iommu_ops in this driver, and only > one of them contains a reference to the ipmmu_iotlb_sync > function. This leads to a compiler warning when these > operations are not in use: > > drivers/iommu/ipmmu-vmsa.c:622:13: error: 'ipmmu_iotlb_sync' defined but not used [-Werror=unused-function] Oh bum, I forgot there was still quite so much #ifdef'd under CONFIG_ARM in this driver :( > We either want to use the function in both operations, or > we should hide it. Without having additional information > which approach is correct, I'm picking the second one here, > which avoids the build error. For correctness I think it needs to be the first one, otherwise iommu_unmap() will wind up missing a sync on 32-bit ARM. That said, I think the third option is now viable as well, namely to shuffle some lines and get rid of the almost-duplicated ops entirely. I'll have a quick go at that shortly. Robin. > Fixes: 32b124492bdf ("iommu/io-pgtable-arm: Convert to IOMMU API TLB sync") > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > --- > drivers/iommu/ipmmu-vmsa.c | 16 ++++++++-------- > 1 file changed, 8 insertions(+), 8 deletions(-) > > diff --git a/drivers/iommu/ipmmu-vmsa.c b/drivers/iommu/ipmmu-vmsa.c > index af8140054273..bdd0d0d20925 100644 > --- a/drivers/iommu/ipmmu-vmsa.c > +++ b/drivers/iommu/ipmmu-vmsa.c > @@ -619,14 +619,6 @@ static size_t ipmmu_unmap(struct iommu_domain *io_domain, unsigned long iova, > return domain->iop->unmap(domain->iop, iova, size); > } > > -static void ipmmu_iotlb_sync(struct iommu_domain *io_domain) > -{ > - struct ipmmu_vmsa_domain *domain = to_vmsa_domain(io_domain); > - > - if (domain->mmu) > - ipmmu_tlb_flush_all(domain); > -} > - > static phys_addr_t ipmmu_iova_to_phys(struct iommu_domain *io_domain, > dma_addr_t iova) > { > @@ -810,6 +802,14 @@ static void ipmmu_domain_free_dma(struct iommu_domain *io_domain) > } > } > > +static void ipmmu_iotlb_sync(struct iommu_domain *io_domain) > +{ > + struct ipmmu_vmsa_domain *domain = to_vmsa_domain(io_domain); > + > + if (domain->mmu) > + ipmmu_tlb_flush_all(domain); > +} > + > static int ipmmu_add_device_dma(struct device *dev) > { > struct iommu_group *group; >
On Wed, Oct 11, 2017 at 4:16 PM, Robin Murphy <robin.murphy@arm.com> wrote: > On 11/10/17 14:59, Arnd Bergmann wrote: > > That said, I think the third option is now viable as well, namely to > shuffle some lines and get rid of the almost-duplicated ops entirely. > I'll have a quick go at that shortly. Ok, thanks! Arnd
diff --git a/drivers/iommu/ipmmu-vmsa.c b/drivers/iommu/ipmmu-vmsa.c index af8140054273..bdd0d0d20925 100644 --- a/drivers/iommu/ipmmu-vmsa.c +++ b/drivers/iommu/ipmmu-vmsa.c @@ -619,14 +619,6 @@ static size_t ipmmu_unmap(struct iommu_domain *io_domain, unsigned long iova, return domain->iop->unmap(domain->iop, iova, size); } -static void ipmmu_iotlb_sync(struct iommu_domain *io_domain) -{ - struct ipmmu_vmsa_domain *domain = to_vmsa_domain(io_domain); - - if (domain->mmu) - ipmmu_tlb_flush_all(domain); -} - static phys_addr_t ipmmu_iova_to_phys(struct iommu_domain *io_domain, dma_addr_t iova) { @@ -810,6 +802,14 @@ static void ipmmu_domain_free_dma(struct iommu_domain *io_domain) } } +static void ipmmu_iotlb_sync(struct iommu_domain *io_domain) +{ + struct ipmmu_vmsa_domain *domain = to_vmsa_domain(io_domain); + + if (domain->mmu) + ipmmu_tlb_flush_all(domain); +} + static int ipmmu_add_device_dma(struct device *dev) { struct iommu_group *group;
There are two sets of iommu_ops in this driver, and only one of them contains a reference to the ipmmu_iotlb_sync function. This leads to a compiler warning when these operations are not in use: drivers/iommu/ipmmu-vmsa.c:622:13: error: 'ipmmu_iotlb_sync' defined but not used [-Werror=unused-function] We either want to use the function in both operations, or we should hide it. Without having additional information which approach is correct, I'm picking the second one here, which avoids the build error. Fixes: 32b124492bdf ("iommu/io-pgtable-arm: Convert to IOMMU API TLB sync") Signed-off-by: Arnd Bergmann <arnd@arndb.de> --- drivers/iommu/ipmmu-vmsa.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) -- 2.9.0