linux-next: pci-current tree build failure

Subsystems: linux for powerpc (32-bit and 64-bit), the rest

2 messages, 2 authors, 2008-07-29 · open the first message on its own page

linux-next: pci-current tree build failure

From: Stephen Rothwell <hidden>
Date: 2008-07-29 00:52:21

Hi Jesse,

Today's linux-next build (powerpc ppc64_defconfig) failed like this:

arch/powerpc/kernel/iommu.c:54: error: static declaration of 'iommu_num_pages' follows non-static declaration
include/linux/iommu-helper.h:11: error: previous declaration of 'iommu_num_pages' was here

Caused by commit 3bc9f79ee1ddc913be0a6d3592036683ef8a3148 ("iommu: add
iommu_num_pages helper function") which introduced a global version of a
function that powerpc has a different version of.  I am not sure that the
two do the same thing - in fact they don't since powerpc can have a 64k
page size and still need to use a 4k iommu pages.  I applied the
patch below (which I personally hate :-))

-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/
From ade341416a628800ad2a27ecd576238087290125 Mon Sep 17 00:00:00 2001
From: Stephen Rothwell <redacted>
Date: Tue, 29 Jul 2008 10:47:59 +1000
Subject: [PATCH] powerpc: generic iommu helper fallout

Powerpc needs it own version of iommu_num_pages() since the iommu pages
may be a different size to the system pages.

Signed-off-by: Stephen Rothwell <redacted>
---
 arch/powerpc/kernel/iommu.c |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/arch/powerpc/kernel/iommu.c b/arch/powerpc/kernel/iommu.c
index 550a193..b147055 100644
--- a/arch/powerpc/kernel/iommu.c
+++ b/arch/powerpc/kernel/iommu.c
@@ -51,7 +51,7 @@ static int protect4gb = 1;
 
 static void __iommu_free(struct iommu_table *, dma_addr_t, unsigned int);
 
-static inline unsigned long iommu_num_pages(unsigned long vaddr,
+static inline unsigned long ppc_iommu_num_pages(unsigned long vaddr,
 					    unsigned long slen)
 {
 	unsigned long npages;
@@ -325,7 +325,7 @@ int iommu_map_sg(struct device *dev, struct iommu_table *tbl,
 		}
 		/* Allocate iommu entries for that segment */
 		vaddr = (unsigned long) sg_virt(s);
-		npages = iommu_num_pages(vaddr, slen);
+		npages = ppc_iommu_num_pages(vaddr, slen);
 		align = 0;
 		if (IOMMU_PAGE_SHIFT < PAGE_SHIFT && slen >= PAGE_SIZE &&
 		    (vaddr & ~PAGE_MASK) == 0)
@@ -418,7 +418,7 @@ int iommu_map_sg(struct device *dev, struct iommu_table *tbl,
 			unsigned long vaddr, npages;
 
 			vaddr = s->dma_address & IOMMU_PAGE_MASK;
-			npages = iommu_num_pages(s->dma_address, s->dma_length);
+			npages = ppc_iommu_num_pages(s->dma_address, s->dma_length);
 			__iommu_free(tbl, vaddr, npages);
 			s->dma_address = DMA_ERROR_CODE;
 			s->dma_length = 0;
@@ -452,7 +452,7 @@ void iommu_unmap_sg(struct iommu_table *tbl, struct scatterlist *sglist,
 
 		if (sg->dma_length == 0)
 			break;
-		npages = iommu_num_pages(dma_handle, sg->dma_length);
+		npages = ppc_iommu_num_pages(dma_handle, sg->dma_length);
 		__iommu_free(tbl, dma_handle, npages);
 		sg = sg_next(sg);
 	}
@@ -584,7 +584,7 @@ dma_addr_t iommu_map_single(struct device *dev, struct iommu_table *tbl,
 	BUG_ON(direction == DMA_NONE);
 
 	uaddr = (unsigned long)vaddr;
-	npages = iommu_num_pages(uaddr, size);
+	npages = ppc_iommu_num_pages(uaddr, size);
 
 	if (tbl) {
 		align = 0;
@@ -617,7 +617,7 @@ void iommu_unmap_single(struct iommu_table *tbl, dma_addr_t dma_handle,
 	BUG_ON(direction == DMA_NONE);
 
 	if (tbl) {
-		npages = iommu_num_pages(dma_handle, size);
+		npages = ppc_iommu_num_pages(dma_handle, size);
 		iommu_free(tbl, dma_handle, npages);
 	}
 }
-- 
1.5.6.3

Re: linux-next: pci-current tree build failure

From: Jesse Barnes <hidden>
Date: 2008-07-29 02:15:36

On Monday, July 28, 2008 5:52 pm Stephen Rothwell wrote:
Hi Jesse,

Today's linux-next build (powerpc ppc64_defconfig) failed like this:

arch/powerpc/kernel/iommu.c:54: error: static declaration of
'iommu_num_pages' follows non-static declaration
include/linux/iommu-helper.h:11: error: previous declaration of
'iommu_num_pages' was here

Caused by commit 3bc9f79ee1ddc913be0a6d3592036683ef8a3148 ("iommu: add
iommu_num_pages helper function") which introduced a global version of a
function that powerpc has a different version of.  I am not sure that the
two do the same thing - in fact they don't since powerpc can have a 64k
page size and still need to use a 4k iommu pages.  I applied the
patch below (which I personally hate :-))
Hopefully my ppc machine will arrive soon and I can build & test boot things 
so this won't happen in the future.

Joerg, what do you think here?

Thanks,
Jesse
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help