From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757453AbdJKOQ0 (ORCPT ); Wed, 11 Oct 2017 10:16:26 -0400 Received: from foss.arm.com ([217.140.101.70]:33442 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751814AbdJKOQY (ORCPT ); Wed, 11 Oct 2017 10:16:24 -0400 Subject: Re: [PATCH] iommu/io-pgtable-arm: hide unused ipmmu_iotlb_sync To: Arnd Bergmann , Joerg Roedel Cc: Magnus Damm , Geert Uytterhoeven , Laurent Pinchart , iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org References: <20171011135919.3653302-1-arnd@arndb.de> From: Robin Murphy Message-ID: <459ef50f-e51e-32ee-0816-b1003b2b4e4c@arm.com> Date: Wed, 11 Oct 2017 15:16:21 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 MIME-Version: 1.0 In-Reply-To: <20171011135919.3653302-1-arnd@arndb.de> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 > --- > 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; >