From: kbuild test robot <lkp@intel.com>
To: Yong Wu <yong.wu@mediatek.com>
Cc: kbuild-all@01.org, Joerg Roedel <joro@8bytes.org>,
Thierry Reding <treding@nvidia.com>,
Mark Rutland <mark.rutland@arm.com>,
Matthias Brugger <matthias.bgg@gmail.com>,
Robin Murphy <robin.murphy@arm.com>,
Will Deacon <will.deacon@arm.com>,
Daniel Kurtz <djkurtz@google.com>, Tomasz Figa <tfiga@google.com>,
Lucas Stach <l.stach@pengutronix.de>,
Rob Herring <robh+dt@kernel.org>,
Catalin Marinas <catalin.marinas@arm.com>,
linux-mediatek@lists.infradead.org,
Sasha Hauer <kernel@pengutronix.de>,
srv_heupstream@mediatek.com, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
iommu@lists.linux-foundation.org, pebolle@tiscali.nl,
arnd@arndb.de, mitchelh@codeaurora.org, p.zabel@pengutronix.de,
youhua.li@mediatek.com, k.zhang@mediatek.com,
kendrick.hsu@mediatek.com, Yong Wu <yong.wu@mediatek.com>
Subject: Re: [PATCH v7 4/5] iommu/mediatek: Add mt8173 IOMMU driver
Date: Fri, 18 Dec 2015 18:10:37 +0800 [thread overview]
Message-ID: <201512181807.TNzdBfeR%fengguang.wu@intel.com> (raw)
In-Reply-To: <1450426183-1571-5-git-send-email-yong.wu@mediatek.com>
[-- Attachment #1: Type: text/plain, Size: 9535 bytes --]
Hi Yong,
[auto build test ERROR on tegra/for-next]
[also build test ERROR on v4.4-rc5]
[cannot apply to iommu/next next-20151217]
url: https://github.com/0day-ci/linux/commits/Yong-Wu/MT8173-IOMMU-SUPPORT/20151218-161550
base: https://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux for-next
config: parisc-allyesconfig (attached as .config)
reproduce:
wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=parisc
All error/warnings (new ones prefixed by >>):
drivers/iommu/dma-iommu.c: In function '__iommu_dma_alloc_pages':
drivers/iommu/dma-iommu.c:198:3: error: implicit declaration of function 'vzalloc' [-Werror=implicit-function-declaration]
pages = vzalloc(array_size);
^
drivers/iommu/dma-iommu.c:198:9: warning: assignment makes pointer from integer without a cast
pages = vzalloc(array_size);
^
drivers/iommu/dma-iommu.c: In function 'iommu_dma_free':
>> drivers/iommu/dma-iommu.c:256:12: error: 'DMA_ERROR_CODE' undeclared (first use in this function)
*handle = DMA_ERROR_CODE;
^
drivers/iommu/dma-iommu.c:256:12: note: each undeclared identifier is reported only once for each function it appears in
drivers/iommu/dma-iommu.c: In function 'iommu_dma_alloc':
drivers/iommu/dma-iommu.c:288:12: error: 'DMA_ERROR_CODE' undeclared (first use in this function)
*handle = DMA_ERROR_CODE;
^
drivers/iommu/dma-iommu.c: In function 'iommu_dma_map_page':
drivers/iommu/dma-iommu.c:369:10: error: 'DMA_ERROR_CODE' undeclared (first use in this function)
return DMA_ERROR_CODE;
^
drivers/iommu/dma-iommu.c: In function '__invalidate_sg':
drivers/iommu/dma-iommu.c:419:28: error: 'DMA_ERROR_CODE' undeclared (first use in this function)
if (sg_dma_address(s) != DMA_ERROR_CODE)
^
drivers/iommu/dma-iommu.c: In function 'iommu_dma_mapping_error':
drivers/iommu/dma-iommu.c:523:21: error: 'DMA_ERROR_CODE' undeclared (first use in this function)
return dma_addr == DMA_ERROR_CODE;
^
>> drivers/iommu/dma-iommu.c:524:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
cc1: some warnings being treated as errors
--
drivers/iommu/mtk_iommu.c:174:2: warning: initialization from incompatible pointer type
.tlb_add_flush = mtk_iommu_tlb_add_flush_nosync,
^
drivers/iommu/mtk_iommu.c:174:2: warning: (near initialization for 'mtk_iommu_gather_ops.tlb_add_flush')
drivers/iommu/mtk_iommu.c: In function 'mtk_iommu_config':
>> drivers/iommu/mtk_iommu.c:223:22: error: 'struct dev_archdata' has no member named 'iommu'
head = dev->archdata.iommu;
^
drivers/iommu/mtk_iommu.c: In function 'mtk_iommu_domain_finalise':
drivers/iommu/mtk_iommu.c:247:4: error: 'IO_PGTABLE_QUIRK_NO_PERMS' undeclared (first use in this function)
IO_PGTABLE_QUIRK_NO_PERMS |
^
drivers/iommu/mtk_iommu.c:247:4: note: each undeclared identifier is reported only once for each function it appears in
drivers/iommu/mtk_iommu.c:248:4: error: 'IO_PGTABLE_QUIRK_TLBI_ON_MAP' undeclared (first use in this function)
IO_PGTABLE_QUIRK_TLBI_ON_MAP,
^
drivers/iommu/mtk_iommu.c:256:34: error: 'ARM_V7S' undeclared (first use in this function)
dom->iop = alloc_io_pgtable_ops(ARM_V7S, &dom->cfg, data);
^
drivers/iommu/mtk_iommu.c:265:27: error: 'struct io_pgtable_cfg' has no member named 'arm_v7s_cfg'
writel(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0],
^
drivers/iommu/mtk_iommu.c: In function 'mtk_iommu_attach_device':
drivers/iommu/mtk_iommu.c:303:52: error: 'struct dev_archdata' has no member named 'iommu'
struct mtk_iommu_client_priv *priv = dev->archdata.iommu;
^
drivers/iommu/mtk_iommu.c: In function 'mtk_iommu_detach_device':
drivers/iommu/mtk_iommu.c:331:52: error: 'struct dev_archdata' has no member named 'iommu'
struct mtk_iommu_client_priv *priv = dev->archdata.iommu;
^
drivers/iommu/mtk_iommu.c: In function 'mtk_iommu_add_device':
drivers/iommu/mtk_iommu.c:387:20: error: 'struct dev_archdata' has no member named 'iommu'
if (!dev->archdata.iommu) /* Not a iommu client device */
^
drivers/iommu/mtk_iommu.c: In function 'mtk_iommu_remove_device':
drivers/iommu/mtk_iommu.c:402:22: error: 'struct dev_archdata' has no member named 'iommu'
head = dev->archdata.iommu;
^
drivers/iommu/mtk_iommu.c:411:15: error: 'struct dev_archdata' has no member named 'iommu'
dev->archdata.iommu = NULL;
^
drivers/iommu/mtk_iommu.c: In function 'mtk_iommu_device_group':
drivers/iommu/mtk_iommu.c:421:22: error: 'struct dev_archdata' has no member named 'iommu'
priv = dev->archdata.iommu;
^
drivers/iommu/mtk_iommu.c: In function 'mtk_iommu_of_xlate':
drivers/iommu/mtk_iommu.c:446:20: error: 'struct dev_archdata' has no member named 'iommu'
if (!dev->archdata.iommu) {
^
drivers/iommu/mtk_iommu.c:457:16: error: 'struct dev_archdata' has no member named 'iommu'
dev->archdata.iommu = head;
^
drivers/iommu/mtk_iommu.c:461:23: error: 'struct dev_archdata' has no member named 'iommu'
head = dev->archdata.iommu;
^
drivers/iommu/mtk_iommu.c:477:15: error: 'struct dev_archdata' has no member named 'iommu'
dev->archdata.iommu = NULL;
^
In file included from include/linux/scatterlist.h:8:0,
from include/linux/iommu.h:26,
from include/linux/dma-iommu.h:23,
from drivers/iommu/mtk_iommu.c:16:
drivers/iommu/mtk_iommu.c: In function 'mtk_iommu_resume':
drivers/iommu/mtk_iommu.c:683:35: error: 'struct io_pgtable_cfg' has no member named 'arm_v7s_cfg'
writel_relaxed(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0],
^
arch/parisc/include/asm/io.h:228:40: note: in definition of macro 'writel_relaxed'
#define writel_relaxed(l, addr) writel(l, addr)
^
drivers/iommu/mtk_iommu.c: At top level:
drivers/iommu/mtk_iommu.c:662:12: warning: 'mtk_iommu_suspend' defined but not used [-Wunused-function]
static int mtk_iommu_suspend(struct device *dev)
^
drivers/iommu/mtk_iommu.c:677:12: warning: 'mtk_iommu_resume' defined but not used [-Wunused-function]
static int mtk_iommu_resume(struct device *dev)
^
vim +223 drivers/iommu/mtk_iommu.c
168 /* Clear the CPE status */
169 writel_relaxed(0, data->base + REG_MMU_CPE_DONE);
170 }
171
172 static const struct iommu_gather_ops mtk_iommu_gather_ops = {
173 .tlb_flush_all = mtk_iommu_tlb_flush_all,
> 174 .tlb_add_flush = mtk_iommu_tlb_add_flush_nosync,
175 .tlb_sync = mtk_iommu_tlb_sync,
176 };
177
178 static irqreturn_t mtk_iommu_isr(int irq, void *dev_id)
179 {
180 struct mtk_iommu_data *data = dev_id;
181 struct mtk_iommu_domain *dom = data->m4u_dom;
182 u32 int_state, regval, fault_iova, fault_pa;
183 unsigned int fault_larb, fault_port;
184 bool layer, write;
185
186 /* Read error info from registers */
187 int_state = readl_relaxed(data->base + REG_MMU_FAULT_ST1);
188 fault_iova = readl_relaxed(data->base + REG_MMU_FAULT_VA);
189 layer = fault_iova & F_MMU_FAULT_VA_LAYER_BIT;
190 write = fault_iova & F_MMU_FAULT_VA_WRITE_BIT;
191 fault_iova &= F_MMU_FAULT_VA_MSK;
192 fault_pa = readl_relaxed(data->base + REG_MMU_INVLD_PA);
193 regval = readl_relaxed(data->base + REG_MMU_INT_ID);
194 fault_larb = F_MMU0_INT_ID_LARB_ID(regval);
195 fault_port = F_MMU0_INT_ID_PORT_ID(regval);
196
197 if (report_iommu_fault(&dom->domain, data->dev, fault_iova,
198 write ? IOMMU_FAULT_WRITE : IOMMU_FAULT_READ)) {
199 dev_err_ratelimited(
200 data->dev,
201 "fault type=0x%x iova=0x%x pa=0x%x larb=%d port=%d layer=%d %s\n",
202 int_state, fault_iova, fault_pa, fault_larb, fault_port,
203 layer, write ? "write" : "read");
204 }
205
206 /* Interrupt clear */
207 regval = readl_relaxed(data->base + REG_MMU_INT_CONTROL0);
208 regval |= F_INT_CLR_BIT;
209 writel_relaxed(regval, data->base + REG_MMU_INT_CONTROL0);
210
211 mtk_iommu_tlb_flush_all(data);
212
213 return IRQ_HANDLED;
214 }
215
216 static void mtk_iommu_config(struct mtk_iommu_data *data,
217 struct device *dev, bool enable)
218 {
219 struct mtk_iommu_client_priv *head, *cur, *next;
220 struct mtk_smi_larb_iommu *larb_mmu;
221 unsigned int larbid, portid;
222
> 223 head = dev->archdata.iommu;
224 list_for_each_entry_safe(cur, next, &head->client, client) {
225 larbid = MTK_M4U_TO_LARB(cur->mtk_m4u_id);
226 portid = MTK_M4U_TO_PORT(cur->mtk_m4u_id);
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/octet-stream, Size: 43146 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: kbuild test robot <lkp-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
To: Yong Wu <yong.wu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
Cc: Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>,
Catalin Marinas <catalin.marinas-5wv7dgnIgG8@public.gmane.org>,
Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org>,
youhua.li-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org,
Thierry Reding <treding-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
k.zhang-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
kendrick.hsu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org,
p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org,
arnd-r2nGTMty4D4@public.gmane.org,
Tomasz Figa <tfiga-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>,
Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
linux-mediatek-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
Matthias Brugger
<matthias.bgg-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
pebolle-IWqWACnzNjzz+pZb47iToQ@public.gmane.org,
srv_heupstream-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
Daniel Kurtz <djkurtz-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>,
kbuild-all-JC7UmRfGjtg@public.gmane.org,
Sasha Hauer <kernel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>,
Lucas Stach <l.stach-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
Subject: Re: [PATCH v7 4/5] iommu/mediatek: Add mt8173 IOMMU driver
Date: Fri, 18 Dec 2015 18:10:37 +0800 [thread overview]
Message-ID: <201512181807.TNzdBfeR%fengguang.wu@intel.com> (raw)
In-Reply-To: <1450426183-1571-5-git-send-email-yong.wu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
[-- Attachment #1: Type: text/plain, Size: 9535 bytes --]
Hi Yong,
[auto build test ERROR on tegra/for-next]
[also build test ERROR on v4.4-rc5]
[cannot apply to iommu/next next-20151217]
url: https://github.com/0day-ci/linux/commits/Yong-Wu/MT8173-IOMMU-SUPPORT/20151218-161550
base: https://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux for-next
config: parisc-allyesconfig (attached as .config)
reproduce:
wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=parisc
All error/warnings (new ones prefixed by >>):
drivers/iommu/dma-iommu.c: In function '__iommu_dma_alloc_pages':
drivers/iommu/dma-iommu.c:198:3: error: implicit declaration of function 'vzalloc' [-Werror=implicit-function-declaration]
pages = vzalloc(array_size);
^
drivers/iommu/dma-iommu.c:198:9: warning: assignment makes pointer from integer without a cast
pages = vzalloc(array_size);
^
drivers/iommu/dma-iommu.c: In function 'iommu_dma_free':
>> drivers/iommu/dma-iommu.c:256:12: error: 'DMA_ERROR_CODE' undeclared (first use in this function)
*handle = DMA_ERROR_CODE;
^
drivers/iommu/dma-iommu.c:256:12: note: each undeclared identifier is reported only once for each function it appears in
drivers/iommu/dma-iommu.c: In function 'iommu_dma_alloc':
drivers/iommu/dma-iommu.c:288:12: error: 'DMA_ERROR_CODE' undeclared (first use in this function)
*handle = DMA_ERROR_CODE;
^
drivers/iommu/dma-iommu.c: In function 'iommu_dma_map_page':
drivers/iommu/dma-iommu.c:369:10: error: 'DMA_ERROR_CODE' undeclared (first use in this function)
return DMA_ERROR_CODE;
^
drivers/iommu/dma-iommu.c: In function '__invalidate_sg':
drivers/iommu/dma-iommu.c:419:28: error: 'DMA_ERROR_CODE' undeclared (first use in this function)
if (sg_dma_address(s) != DMA_ERROR_CODE)
^
drivers/iommu/dma-iommu.c: In function 'iommu_dma_mapping_error':
drivers/iommu/dma-iommu.c:523:21: error: 'DMA_ERROR_CODE' undeclared (first use in this function)
return dma_addr == DMA_ERROR_CODE;
^
>> drivers/iommu/dma-iommu.c:524:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
cc1: some warnings being treated as errors
--
drivers/iommu/mtk_iommu.c:174:2: warning: initialization from incompatible pointer type
.tlb_add_flush = mtk_iommu_tlb_add_flush_nosync,
^
drivers/iommu/mtk_iommu.c:174:2: warning: (near initialization for 'mtk_iommu_gather_ops.tlb_add_flush')
drivers/iommu/mtk_iommu.c: In function 'mtk_iommu_config':
>> drivers/iommu/mtk_iommu.c:223:22: error: 'struct dev_archdata' has no member named 'iommu'
head = dev->archdata.iommu;
^
drivers/iommu/mtk_iommu.c: In function 'mtk_iommu_domain_finalise':
drivers/iommu/mtk_iommu.c:247:4: error: 'IO_PGTABLE_QUIRK_NO_PERMS' undeclared (first use in this function)
IO_PGTABLE_QUIRK_NO_PERMS |
^
drivers/iommu/mtk_iommu.c:247:4: note: each undeclared identifier is reported only once for each function it appears in
drivers/iommu/mtk_iommu.c:248:4: error: 'IO_PGTABLE_QUIRK_TLBI_ON_MAP' undeclared (first use in this function)
IO_PGTABLE_QUIRK_TLBI_ON_MAP,
^
drivers/iommu/mtk_iommu.c:256:34: error: 'ARM_V7S' undeclared (first use in this function)
dom->iop = alloc_io_pgtable_ops(ARM_V7S, &dom->cfg, data);
^
drivers/iommu/mtk_iommu.c:265:27: error: 'struct io_pgtable_cfg' has no member named 'arm_v7s_cfg'
writel(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0],
^
drivers/iommu/mtk_iommu.c: In function 'mtk_iommu_attach_device':
drivers/iommu/mtk_iommu.c:303:52: error: 'struct dev_archdata' has no member named 'iommu'
struct mtk_iommu_client_priv *priv = dev->archdata.iommu;
^
drivers/iommu/mtk_iommu.c: In function 'mtk_iommu_detach_device':
drivers/iommu/mtk_iommu.c:331:52: error: 'struct dev_archdata' has no member named 'iommu'
struct mtk_iommu_client_priv *priv = dev->archdata.iommu;
^
drivers/iommu/mtk_iommu.c: In function 'mtk_iommu_add_device':
drivers/iommu/mtk_iommu.c:387:20: error: 'struct dev_archdata' has no member named 'iommu'
if (!dev->archdata.iommu) /* Not a iommu client device */
^
drivers/iommu/mtk_iommu.c: In function 'mtk_iommu_remove_device':
drivers/iommu/mtk_iommu.c:402:22: error: 'struct dev_archdata' has no member named 'iommu'
head = dev->archdata.iommu;
^
drivers/iommu/mtk_iommu.c:411:15: error: 'struct dev_archdata' has no member named 'iommu'
dev->archdata.iommu = NULL;
^
drivers/iommu/mtk_iommu.c: In function 'mtk_iommu_device_group':
drivers/iommu/mtk_iommu.c:421:22: error: 'struct dev_archdata' has no member named 'iommu'
priv = dev->archdata.iommu;
^
drivers/iommu/mtk_iommu.c: In function 'mtk_iommu_of_xlate':
drivers/iommu/mtk_iommu.c:446:20: error: 'struct dev_archdata' has no member named 'iommu'
if (!dev->archdata.iommu) {
^
drivers/iommu/mtk_iommu.c:457:16: error: 'struct dev_archdata' has no member named 'iommu'
dev->archdata.iommu = head;
^
drivers/iommu/mtk_iommu.c:461:23: error: 'struct dev_archdata' has no member named 'iommu'
head = dev->archdata.iommu;
^
drivers/iommu/mtk_iommu.c:477:15: error: 'struct dev_archdata' has no member named 'iommu'
dev->archdata.iommu = NULL;
^
In file included from include/linux/scatterlist.h:8:0,
from include/linux/iommu.h:26,
from include/linux/dma-iommu.h:23,
from drivers/iommu/mtk_iommu.c:16:
drivers/iommu/mtk_iommu.c: In function 'mtk_iommu_resume':
drivers/iommu/mtk_iommu.c:683:35: error: 'struct io_pgtable_cfg' has no member named 'arm_v7s_cfg'
writel_relaxed(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0],
^
arch/parisc/include/asm/io.h:228:40: note: in definition of macro 'writel_relaxed'
#define writel_relaxed(l, addr) writel(l, addr)
^
drivers/iommu/mtk_iommu.c: At top level:
drivers/iommu/mtk_iommu.c:662:12: warning: 'mtk_iommu_suspend' defined but not used [-Wunused-function]
static int mtk_iommu_suspend(struct device *dev)
^
drivers/iommu/mtk_iommu.c:677:12: warning: 'mtk_iommu_resume' defined but not used [-Wunused-function]
static int mtk_iommu_resume(struct device *dev)
^
vim +223 drivers/iommu/mtk_iommu.c
168 /* Clear the CPE status */
169 writel_relaxed(0, data->base + REG_MMU_CPE_DONE);
170 }
171
172 static const struct iommu_gather_ops mtk_iommu_gather_ops = {
173 .tlb_flush_all = mtk_iommu_tlb_flush_all,
> 174 .tlb_add_flush = mtk_iommu_tlb_add_flush_nosync,
175 .tlb_sync = mtk_iommu_tlb_sync,
176 };
177
178 static irqreturn_t mtk_iommu_isr(int irq, void *dev_id)
179 {
180 struct mtk_iommu_data *data = dev_id;
181 struct mtk_iommu_domain *dom = data->m4u_dom;
182 u32 int_state, regval, fault_iova, fault_pa;
183 unsigned int fault_larb, fault_port;
184 bool layer, write;
185
186 /* Read error info from registers */
187 int_state = readl_relaxed(data->base + REG_MMU_FAULT_ST1);
188 fault_iova = readl_relaxed(data->base + REG_MMU_FAULT_VA);
189 layer = fault_iova & F_MMU_FAULT_VA_LAYER_BIT;
190 write = fault_iova & F_MMU_FAULT_VA_WRITE_BIT;
191 fault_iova &= F_MMU_FAULT_VA_MSK;
192 fault_pa = readl_relaxed(data->base + REG_MMU_INVLD_PA);
193 regval = readl_relaxed(data->base + REG_MMU_INT_ID);
194 fault_larb = F_MMU0_INT_ID_LARB_ID(regval);
195 fault_port = F_MMU0_INT_ID_PORT_ID(regval);
196
197 if (report_iommu_fault(&dom->domain, data->dev, fault_iova,
198 write ? IOMMU_FAULT_WRITE : IOMMU_FAULT_READ)) {
199 dev_err_ratelimited(
200 data->dev,
201 "fault type=0x%x iova=0x%x pa=0x%x larb=%d port=%d layer=%d %s\n",
202 int_state, fault_iova, fault_pa, fault_larb, fault_port,
203 layer, write ? "write" : "read");
204 }
205
206 /* Interrupt clear */
207 regval = readl_relaxed(data->base + REG_MMU_INT_CONTROL0);
208 regval |= F_INT_CLR_BIT;
209 writel_relaxed(regval, data->base + REG_MMU_INT_CONTROL0);
210
211 mtk_iommu_tlb_flush_all(data);
212
213 return IRQ_HANDLED;
214 }
215
216 static void mtk_iommu_config(struct mtk_iommu_data *data,
217 struct device *dev, bool enable)
218 {
219 struct mtk_iommu_client_priv *head, *cur, *next;
220 struct mtk_smi_larb_iommu *larb_mmu;
221 unsigned int larbid, portid;
222
> 223 head = dev->archdata.iommu;
224 list_for_each_entry_safe(cur, next, &head->client, client) {
225 larbid = MTK_M4U_TO_LARB(cur->mtk_m4u_id);
226 portid = MTK_M4U_TO_PORT(cur->mtk_m4u_id);
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/octet-stream, Size: 43146 bytes --]
[-- Attachment #3: Type: text/plain, Size: 0 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: lkp@intel.com (kbuild test robot)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v7 4/5] iommu/mediatek: Add mt8173 IOMMU driver
Date: Fri, 18 Dec 2015 18:10:37 +0800 [thread overview]
Message-ID: <201512181807.TNzdBfeR%fengguang.wu@intel.com> (raw)
In-Reply-To: <1450426183-1571-5-git-send-email-yong.wu@mediatek.com>
Hi Yong,
[auto build test ERROR on tegra/for-next]
[also build test ERROR on v4.4-rc5]
[cannot apply to iommu/next next-20151217]
url: https://github.com/0day-ci/linux/commits/Yong-Wu/MT8173-IOMMU-SUPPORT/20151218-161550
base: https://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux for-next
config: parisc-allyesconfig (attached as .config)
reproduce:
wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=parisc
All error/warnings (new ones prefixed by >>):
drivers/iommu/dma-iommu.c: In function '__iommu_dma_alloc_pages':
drivers/iommu/dma-iommu.c:198:3: error: implicit declaration of function 'vzalloc' [-Werror=implicit-function-declaration]
pages = vzalloc(array_size);
^
drivers/iommu/dma-iommu.c:198:9: warning: assignment makes pointer from integer without a cast
pages = vzalloc(array_size);
^
drivers/iommu/dma-iommu.c: In function 'iommu_dma_free':
>> drivers/iommu/dma-iommu.c:256:12: error: 'DMA_ERROR_CODE' undeclared (first use in this function)
*handle = DMA_ERROR_CODE;
^
drivers/iommu/dma-iommu.c:256:12: note: each undeclared identifier is reported only once for each function it appears in
drivers/iommu/dma-iommu.c: In function 'iommu_dma_alloc':
drivers/iommu/dma-iommu.c:288:12: error: 'DMA_ERROR_CODE' undeclared (first use in this function)
*handle = DMA_ERROR_CODE;
^
drivers/iommu/dma-iommu.c: In function 'iommu_dma_map_page':
drivers/iommu/dma-iommu.c:369:10: error: 'DMA_ERROR_CODE' undeclared (first use in this function)
return DMA_ERROR_CODE;
^
drivers/iommu/dma-iommu.c: In function '__invalidate_sg':
drivers/iommu/dma-iommu.c:419:28: error: 'DMA_ERROR_CODE' undeclared (first use in this function)
if (sg_dma_address(s) != DMA_ERROR_CODE)
^
drivers/iommu/dma-iommu.c: In function 'iommu_dma_mapping_error':
drivers/iommu/dma-iommu.c:523:21: error: 'DMA_ERROR_CODE' undeclared (first use in this function)
return dma_addr == DMA_ERROR_CODE;
^
>> drivers/iommu/dma-iommu.c:524:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
cc1: some warnings being treated as errors
--
drivers/iommu/mtk_iommu.c:174:2: warning: initialization from incompatible pointer type
.tlb_add_flush = mtk_iommu_tlb_add_flush_nosync,
^
drivers/iommu/mtk_iommu.c:174:2: warning: (near initialization for 'mtk_iommu_gather_ops.tlb_add_flush')
drivers/iommu/mtk_iommu.c: In function 'mtk_iommu_config':
>> drivers/iommu/mtk_iommu.c:223:22: error: 'struct dev_archdata' has no member named 'iommu'
head = dev->archdata.iommu;
^
drivers/iommu/mtk_iommu.c: In function 'mtk_iommu_domain_finalise':
drivers/iommu/mtk_iommu.c:247:4: error: 'IO_PGTABLE_QUIRK_NO_PERMS' undeclared (first use in this function)
IO_PGTABLE_QUIRK_NO_PERMS |
^
drivers/iommu/mtk_iommu.c:247:4: note: each undeclared identifier is reported only once for each function it appears in
drivers/iommu/mtk_iommu.c:248:4: error: 'IO_PGTABLE_QUIRK_TLBI_ON_MAP' undeclared (first use in this function)
IO_PGTABLE_QUIRK_TLBI_ON_MAP,
^
drivers/iommu/mtk_iommu.c:256:34: error: 'ARM_V7S' undeclared (first use in this function)
dom->iop = alloc_io_pgtable_ops(ARM_V7S, &dom->cfg, data);
^
drivers/iommu/mtk_iommu.c:265:27: error: 'struct io_pgtable_cfg' has no member named 'arm_v7s_cfg'
writel(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0],
^
drivers/iommu/mtk_iommu.c: In function 'mtk_iommu_attach_device':
drivers/iommu/mtk_iommu.c:303:52: error: 'struct dev_archdata' has no member named 'iommu'
struct mtk_iommu_client_priv *priv = dev->archdata.iommu;
^
drivers/iommu/mtk_iommu.c: In function 'mtk_iommu_detach_device':
drivers/iommu/mtk_iommu.c:331:52: error: 'struct dev_archdata' has no member named 'iommu'
struct mtk_iommu_client_priv *priv = dev->archdata.iommu;
^
drivers/iommu/mtk_iommu.c: In function 'mtk_iommu_add_device':
drivers/iommu/mtk_iommu.c:387:20: error: 'struct dev_archdata' has no member named 'iommu'
if (!dev->archdata.iommu) /* Not a iommu client device */
^
drivers/iommu/mtk_iommu.c: In function 'mtk_iommu_remove_device':
drivers/iommu/mtk_iommu.c:402:22: error: 'struct dev_archdata' has no member named 'iommu'
head = dev->archdata.iommu;
^
drivers/iommu/mtk_iommu.c:411:15: error: 'struct dev_archdata' has no member named 'iommu'
dev->archdata.iommu = NULL;
^
drivers/iommu/mtk_iommu.c: In function 'mtk_iommu_device_group':
drivers/iommu/mtk_iommu.c:421:22: error: 'struct dev_archdata' has no member named 'iommu'
priv = dev->archdata.iommu;
^
drivers/iommu/mtk_iommu.c: In function 'mtk_iommu_of_xlate':
drivers/iommu/mtk_iommu.c:446:20: error: 'struct dev_archdata' has no member named 'iommu'
if (!dev->archdata.iommu) {
^
drivers/iommu/mtk_iommu.c:457:16: error: 'struct dev_archdata' has no member named 'iommu'
dev->archdata.iommu = head;
^
drivers/iommu/mtk_iommu.c:461:23: error: 'struct dev_archdata' has no member named 'iommu'
head = dev->archdata.iommu;
^
drivers/iommu/mtk_iommu.c:477:15: error: 'struct dev_archdata' has no member named 'iommu'
dev->archdata.iommu = NULL;
^
In file included from include/linux/scatterlist.h:8:0,
from include/linux/iommu.h:26,
from include/linux/dma-iommu.h:23,
from drivers/iommu/mtk_iommu.c:16:
drivers/iommu/mtk_iommu.c: In function 'mtk_iommu_resume':
drivers/iommu/mtk_iommu.c:683:35: error: 'struct io_pgtable_cfg' has no member named 'arm_v7s_cfg'
writel_relaxed(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0],
^
arch/parisc/include/asm/io.h:228:40: note: in definition of macro 'writel_relaxed'
#define writel_relaxed(l, addr) writel(l, addr)
^
drivers/iommu/mtk_iommu.c: At top level:
drivers/iommu/mtk_iommu.c:662:12: warning: 'mtk_iommu_suspend' defined but not used [-Wunused-function]
static int mtk_iommu_suspend(struct device *dev)
^
drivers/iommu/mtk_iommu.c:677:12: warning: 'mtk_iommu_resume' defined but not used [-Wunused-function]
static int mtk_iommu_resume(struct device *dev)
^
vim +223 drivers/iommu/mtk_iommu.c
168 /* Clear the CPE status */
169 writel_relaxed(0, data->base + REG_MMU_CPE_DONE);
170 }
171
172 static const struct iommu_gather_ops mtk_iommu_gather_ops = {
173 .tlb_flush_all = mtk_iommu_tlb_flush_all,
> 174 .tlb_add_flush = mtk_iommu_tlb_add_flush_nosync,
175 .tlb_sync = mtk_iommu_tlb_sync,
176 };
177
178 static irqreturn_t mtk_iommu_isr(int irq, void *dev_id)
179 {
180 struct mtk_iommu_data *data = dev_id;
181 struct mtk_iommu_domain *dom = data->m4u_dom;
182 u32 int_state, regval, fault_iova, fault_pa;
183 unsigned int fault_larb, fault_port;
184 bool layer, write;
185
186 /* Read error info from registers */
187 int_state = readl_relaxed(data->base + REG_MMU_FAULT_ST1);
188 fault_iova = readl_relaxed(data->base + REG_MMU_FAULT_VA);
189 layer = fault_iova & F_MMU_FAULT_VA_LAYER_BIT;
190 write = fault_iova & F_MMU_FAULT_VA_WRITE_BIT;
191 fault_iova &= F_MMU_FAULT_VA_MSK;
192 fault_pa = readl_relaxed(data->base + REG_MMU_INVLD_PA);
193 regval = readl_relaxed(data->base + REG_MMU_INT_ID);
194 fault_larb = F_MMU0_INT_ID_LARB_ID(regval);
195 fault_port = F_MMU0_INT_ID_PORT_ID(regval);
196
197 if (report_iommu_fault(&dom->domain, data->dev, fault_iova,
198 write ? IOMMU_FAULT_WRITE : IOMMU_FAULT_READ)) {
199 dev_err_ratelimited(
200 data->dev,
201 "fault type=0x%x iova=0x%x pa=0x%x larb=%d port=%d layer=%d %s\n",
202 int_state, fault_iova, fault_pa, fault_larb, fault_port,
203 layer, write ? "write" : "read");
204 }
205
206 /* Interrupt clear */
207 regval = readl_relaxed(data->base + REG_MMU_INT_CONTROL0);
208 regval |= F_INT_CLR_BIT;
209 writel_relaxed(regval, data->base + REG_MMU_INT_CONTROL0);
210
211 mtk_iommu_tlb_flush_all(data);
212
213 return IRQ_HANDLED;
214 }
215
216 static void mtk_iommu_config(struct mtk_iommu_data *data,
217 struct device *dev, bool enable)
218 {
219 struct mtk_iommu_client_priv *head, *cur, *next;
220 struct mtk_smi_larb_iommu *larb_mmu;
221 unsigned int larbid, portid;
222
> 223 head = dev->archdata.iommu;
224 list_for_each_entry_safe(cur, next, &head->client, client) {
225 larbid = MTK_M4U_TO_LARB(cur->mtk_m4u_id);
226 portid = MTK_M4U_TO_PORT(cur->mtk_m4u_id);
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/octet-stream
Size: 43146 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20151218/2cb94669/attachment-0001.obj>
next prev parent reply other threads:[~2015-12-18 10:12 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-18 8:09 [PATCH v7 0/5] MT8173 IOMMU SUPPORT Yong Wu
2015-12-18 8:09 ` Yong Wu
2015-12-18 8:09 ` Yong Wu
2015-12-18 8:09 ` [PATCH v7 1/5] dt-bindings: iommu: Add binding for mediatek IOMMU Yong Wu
2015-12-18 8:09 ` Yong Wu
2015-12-18 8:09 ` Yong Wu
2015-12-19 4:16 ` Rob Herring
2015-12-19 4:16 ` Rob Herring
2015-12-19 4:16 ` Rob Herring
2015-12-18 8:09 ` [PATCH v7 2/5] dt-bindings: mediatek: Add smi dts binding Yong Wu
2015-12-18 8:09 ` Yong Wu
2015-12-18 8:09 ` Yong Wu
2015-12-18 8:09 ` [PATCH v7 3/5] memory: mediatek: Add SMI driver Yong Wu
2015-12-18 8:09 ` Yong Wu
2015-12-18 8:09 ` Yong Wu
2016-01-04 6:56 ` Yong Wu
2016-01-04 6:56 ` Yong Wu
2016-01-04 6:56 ` Yong Wu
2016-01-07 16:24 ` Philipp Zabel
2016-01-07 16:24 ` Philipp Zabel
2016-01-07 16:24 ` Philipp Zabel
2016-01-18 10:11 ` Matthias Brugger
2016-01-18 10:11 ` Matthias Brugger
2016-01-18 10:11 ` Matthias Brugger
2016-01-19 9:43 ` Yong Wu
2016-01-19 9:43 ` Yong Wu
2016-01-19 9:43 ` Yong Wu
2015-12-18 8:09 ` [PATCH v7 4/5] iommu/mediatek: Add mt8173 IOMMU driver Yong Wu
2015-12-18 8:09 ` Yong Wu
2015-12-18 8:09 ` Yong Wu
2015-12-18 10:10 ` kbuild test robot [this message]
2015-12-18 10:10 ` kbuild test robot
2015-12-18 10:10 ` kbuild test robot
2015-12-18 17:44 ` Robin Murphy
2015-12-18 17:44 ` Robin Murphy
2015-12-18 17:44 ` Robin Murphy
2015-12-22 5:57 ` Yong Wu
2015-12-22 5:57 ` Yong Wu
2015-12-22 5:57 ` Yong Wu
2015-12-18 8:09 ` [PATCH v7 5/5] dts: mt8173: Add iommu/smi nodes for mt8173 Yong Wu
2015-12-18 8:09 ` Yong Wu
2015-12-18 8:09 ` Yong Wu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201512181807.TNzdBfeR%fengguang.wu@intel.com \
--to=lkp@intel.com \
--cc=arnd@arndb.de \
--cc=catalin.marinas@arm.com \
--cc=devicetree@vger.kernel.org \
--cc=djkurtz@google.com \
--cc=iommu@lists.linux-foundation.org \
--cc=joro@8bytes.org \
--cc=k.zhang@mediatek.com \
--cc=kbuild-all@01.org \
--cc=kendrick.hsu@mediatek.com \
--cc=kernel@pengutronix.de \
--cc=l.stach@pengutronix.de \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=mark.rutland@arm.com \
--cc=matthias.bgg@gmail.com \
--cc=mitchelh@codeaurora.org \
--cc=p.zabel@pengutronix.de \
--cc=pebolle@tiscali.nl \
--cc=robh+dt@kernel.org \
--cc=robin.murphy@arm.com \
--cc=srv_heupstream@mediatek.com \
--cc=tfiga@google.com \
--cc=treding@nvidia.com \
--cc=will.deacon@arm.com \
--cc=yong.wu@mediatek.com \
--cc=youhua.li@mediatek.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.