> 
> I needed the following additional patch to build the generic kernel:

And we probably want sba_iommu to have it's own dma_mapping_error routine:

DESC
From: Bjorn Helgaas <bjorn.helgaas@hp.com>
Subject: Re: 2.6.5-rc2 lots of warnings for dma_mapping_error
EDESC

On Monday 22 March 2004 2:36 am, Andrew Morton wrote:
> This adds the necessary stubs for ia64 and builds OK with my config, but it
> needs a double-check.

In addition, I needed the following patch to build the ide-cd driver
because the ia64 generic target makes "dma_mapping_error" a #define.

DESC
From: Bjorn Helgaas <bjorn.helgaas@hp.com>
Subject: Re: 2.6.5-rc2 lots of warnings for dma_mapping_error
EDESC

On Monday 22 March 2004 1:21 pm, Andrew Morton wrote:
> gack, what a fiasco.
> 
> Here's a new patch which includes everyone's 2000 millicents' worth:

Not to prolong the agony, but using the following asm-ia64/dma-mapping.h
patch fixes the namespace pollution problem, obviating the need for the
ide-cd.c patch:

===== include/asm-ia64/dma-mapping.h 1.3 vs edited =====
DESC
From: Bjorn Helgaas <bjorn.helgaas@hp.com>
Subject: Re: 2.6.5-rc2 lots of warnings for dma_mapping_error
EDESC

On Monday 22 March 2004 2:58 pm, Andrew Morton wrote:
> > Not to prolong the agony, but using the following asm-ia64/dma-mapping.h
> > patch fixes the namespace pollution problem, obviating the need for the
> > ide-cd.c patch:
> 
> OK, updated rollup:

Oops, I meant for my dma-mapping.h patch to be *instead of*
yours.  It's definitely a Monday :-)

OK, 2.5 + your updated rollup + the patch below builds
and boots for me (generic_defconfig):

===== include/asm-ia64/dma-mapping.h 1.4 vs edited =====


---

 25-akpm/arch/ia64/hp/common/sba_iommu.c   |    7 +++++++
 25-akpm/arch/ia64/lib/swiotlb.c           |    7 +++++++
 25-akpm/arch/ia64/sn/io/machvec/pci_dma.c |    7 +++++++
 25-akpm/include/asm-ia64/dma-mapping.h    |    6 ++++++
 25-akpm/include/asm-ia64/machvec.h        |    8 ++++++++
 25-akpm/include/asm-ia64/machvec_hpzx1.h  |    2 ++
 25-akpm/include/asm-ia64/machvec_sn2.h    |    2 ++
 7 files changed, 39 insertions(+)

diff -puN arch/ia64/hp/common/sba_iommu.c~ia64-dma_mapping_error-fix arch/ia64/hp/common/sba_iommu.c
--- 25/arch/ia64/hp/common/sba_iommu.c~ia64-dma_mapping_error-fix	Mon Mar 22 14:34:46 2004
+++ 25-akpm/arch/ia64/hp/common/sba_iommu.c	Mon Mar 22 14:34:46 2004
@@ -1979,6 +1979,12 @@ sba_dma_supported (struct device *dev, u
 	return ((mask & 0xFFFFFFFFUL) == 0xFFFFFFFFUL);
 }
 
+int
+sba_dma_mapping_error (dma_addr_t dma_addr)
+{
+	return 0;
+}
+
 __setup("nosbagart", nosbagart);
 
 static int __init
@@ -2004,6 +2010,7 @@ sba_page_override(char *str)
 
 __setup("sbapagesize=",sba_page_override);
 
+EXPORT_SYMBOL(sba_dma_mapping_error);
 EXPORT_SYMBOL(sba_map_single);
 EXPORT_SYMBOL(sba_unmap_single);
 EXPORT_SYMBOL(sba_map_sg);
diff -puN arch/ia64/lib/swiotlb.c~ia64-dma_mapping_error-fix arch/ia64/lib/swiotlb.c
--- 25/arch/ia64/lib/swiotlb.c~ia64-dma_mapping_error-fix	Mon Mar 22 14:34:46 2004
+++ 25-akpm/arch/ia64/lib/swiotlb.c	Mon Mar 22 14:34:46 2004
@@ -498,6 +498,12 @@ swiotlb_sync_sg_for_device (struct devic
 			sync_single(hwdev, (void *) sg->dma_address, sg->dma_length, dir);
 }
 
+int
+swiotlb_dma_mapping_error(dma_addr_t dma_addr)
+{
+	return 0;
+}
+
 /*
  * Return whether the given PCI device DMA address mask can be supported properly.  For
  * example, if your device can only drive the low 24-bits during PCI bus mastering, then
@@ -518,6 +524,7 @@ EXPORT_SYMBOL(swiotlb_sync_single_for_cp
 EXPORT_SYMBOL(swiotlb_sync_single_for_device);
 EXPORT_SYMBOL(swiotlb_sync_sg_for_cpu);
 EXPORT_SYMBOL(swiotlb_sync_sg_for_device);
+EXPORT_SYMBOL(swiotlb_dma_mapping_error);
 EXPORT_SYMBOL(swiotlb_alloc_coherent);
 EXPORT_SYMBOL(swiotlb_free_coherent);
 EXPORT_SYMBOL(swiotlb_dma_supported);
diff -puN arch/ia64/sn/io/machvec/pci_dma.c~ia64-dma_mapping_error-fix arch/ia64/sn/io/machvec/pci_dma.c
--- 25/arch/ia64/sn/io/machvec/pci_dma.c~ia64-dma_mapping_error-fix	Mon Mar 22 14:34:46 2004
+++ 25-akpm/arch/ia64/sn/io/machvec/pci_dma.c	Mon Mar 22 14:34:46 2004
@@ -652,6 +652,13 @@ sn_dma_sync_sg_for_device(struct device 
 }
 EXPORT_SYMBOL(sn_dma_sync_sg_for_device);
 
+int
+sn_dma_mapping_error(dma_addr_t dma_addr)
+{
+	return 0;
+}
+
+EXPORT_SYMBOL(sn_dma_mapping_error);
 EXPORT_SYMBOL(sn_pci_unmap_single);
 EXPORT_SYMBOL(sn_pci_map_single);
 EXPORT_SYMBOL(sn_pci_dma_sync_single_for_cpu);
diff -puN include/asm-ia64/dma-mapping.h~ia64-dma_mapping_error-fix include/asm-ia64/dma-mapping.h
--- 25/include/asm-ia64/dma-mapping.h~ia64-dma_mapping_error-fix	Mon Mar 22 14:34:46 2004
+++ 25-akpm/include/asm-ia64/dma-mapping.h	Mon Mar 22 14:35:03 2004
@@ -19,6 +19,12 @@
 #define dma_sync_single_for_device platform_dma_sync_single_for_device
 #define dma_sync_sg_for_device	platform_dma_sync_sg_for_device
 
+/* inline function to avoid namespace pollution */
+static inline int dma_mapping_error (dma_addr_t dma_addr)
+{
+	return platform_dma_mapping_error(dma_addr);
+}
+
 #define dma_map_page(dev, pg, off, size, dir)				\
 	dma_map_single(dev, page_address(pg) + (off), (size), (dir))
 #define dma_unmap_page(dev, dma_addr, size, dir)			\
diff -puN include/asm-ia64/machvec.h~ia64-dma_mapping_error-fix include/asm-ia64/machvec.h
--- 25/include/asm-ia64/machvec.h~ia64-dma_mapping_error-fix	Mon Mar 22 14:34:46 2004
+++ 25-akpm/include/asm-ia64/machvec.h	Mon Mar 22 14:34:46 2004
@@ -46,6 +46,7 @@ typedef void ia64_mv_dma_sync_single_for
 typedef void ia64_mv_dma_sync_sg_for_cpu (struct device *, struct scatterlist *, int, int);
 typedef void ia64_mv_dma_sync_single_for_device (struct device *, dma_addr_t, size_t, int);
 typedef void ia64_mv_dma_sync_sg_for_device (struct device *, struct scatterlist *, int, int);
+typedef int ia64_mv_dma_mapping_error (dma_addr_t dma_addr);
 typedef int ia64_mv_dma_supported (struct device *, u64);
 
 /*
@@ -110,6 +111,7 @@ extern void machvec_memory_fence (void);
 #  define platform_dma_sync_sg_for_cpu	ia64_mv.dma_sync_sg_for_cpu
 #  define platform_dma_sync_single_for_device ia64_mv.dma_sync_single_for_device
 #  define platform_dma_sync_sg_for_device ia64_mv.dma_sync_sg_for_device
+#  define platform_dma_mapping_error		ia64_mv.dma_mapping_error
 #  define platform_dma_supported	ia64_mv.dma_supported
 #  define platform_irq_desc		ia64_mv.irq_desc
 #  define platform_irq_to_vector	ia64_mv.irq_to_vector
@@ -158,6 +160,7 @@ struct ia64_machine_vector {
 	ia64_mv_dma_sync_sg_for_cpu *dma_sync_sg_for_cpu;
 	ia64_mv_dma_sync_single_for_device *dma_sync_single_for_device;
 	ia64_mv_dma_sync_sg_for_device *dma_sync_sg_for_device;
+	ia64_mv_dma_mapping_error *dma_mapping_error;
 	ia64_mv_dma_supported *dma_supported;
 	ia64_mv_irq_desc *irq_desc;
 	ia64_mv_irq_to_vector *irq_to_vector;
@@ -202,6 +205,7 @@ struct ia64_machine_vector {
 	platform_dma_sync_sg_for_cpu,		\
 	platform_dma_sync_single_for_device,	\
 	platform_dma_sync_sg_for_device,	\
+	platform_dma_mapping_error,			\
 	platform_dma_supported,			\
 	platform_irq_desc,			\
 	platform_irq_to_vector,			\
@@ -243,6 +247,7 @@ extern ia64_mv_dma_sync_single_for_cpu	s
 extern ia64_mv_dma_sync_sg_for_cpu	swiotlb_sync_sg_for_cpu;
 extern ia64_mv_dma_sync_single_for_device swiotlb_sync_single_for_device;
 extern ia64_mv_dma_sync_sg_for_device	swiotlb_sync_sg_for_device;
+extern ia64_mv_dma_mapping_error		swiotlb_dma_mapping_error;
 extern ia64_mv_dma_supported		swiotlb_dma_supported;
 
 /*
@@ -312,6 +317,9 @@ extern ia64_mv_dma_supported		swiotlb_dm
 #ifndef platform_dma_sync_sg_for_device
 # define platform_dma_sync_sg_for_device	swiotlb_sync_sg_for_device
 #endif
+#ifndef platform_dma_mapping_error
+# define platform_dma_mapping_error		swiotlb_dma_mapping_error
+#endif
 #ifndef platform_dma_supported
 # define  platform_dma_supported	swiotlb_dma_supported
 #endif
diff -puN include/asm-ia64/machvec_hpzx1.h~ia64-dma_mapping_error-fix include/asm-ia64/machvec_hpzx1.h
--- 25/include/asm-ia64/machvec_hpzx1.h~ia64-dma_mapping_error-fix	Mon Mar 22 14:34:46 2004
+++ 25-akpm/include/asm-ia64/machvec_hpzx1.h	Mon Mar 22 14:34:46 2004
@@ -9,6 +9,7 @@ extern ia64_mv_dma_unmap_single		sba_unm
 extern ia64_mv_dma_map_sg		sba_map_sg;
 extern ia64_mv_dma_unmap_sg		sba_unmap_sg;
 extern ia64_mv_dma_supported		sba_dma_supported;
+extern ia64_mv_dma_mapping_error		sba_dma_mapping_error;
 
 /*
  * This stuff has dual use!
@@ -31,5 +32,6 @@ extern ia64_mv_dma_supported		sba_dma_su
 #define platform_dma_sync_single_for_device ((ia64_mv_dma_sync_single_for_device *) machvec_memory_fence)
 #define platform_dma_sync_sg_for_device	((ia64_mv_dma_sync_sg_for_device *) machvec_memory_fence)
 #define platform_dma_supported		sba_dma_supported
+#define platform_dma_mapping_error		sba_dma_mapping_error
 
 #endif /* _ASM_IA64_MACHVEC_HPZX1_h */
diff -puN include/asm-ia64/machvec_sn2.h~ia64-dma_mapping_error-fix include/asm-ia64/machvec_sn2.h
--- 25/include/asm-ia64/machvec_sn2.h~ia64-dma_mapping_error-fix	Mon Mar 22 14:34:46 2004
+++ 25-akpm/include/asm-ia64/machvec_sn2.h	Mon Mar 22 14:34:46 2004
@@ -66,6 +66,7 @@ extern ia64_mv_dma_sync_single_for_cpu	s
 extern ia64_mv_dma_sync_sg_for_cpu	sn_dma_sync_sg_for_cpu;
 extern ia64_mv_dma_sync_single_for_device sn_dma_sync_single_for_device;
 extern ia64_mv_dma_sync_sg_for_device	sn_dma_sync_sg_for_device;
+extern ia64_mv_dma_mapping_error	sn_dma_mapping_error;
 extern ia64_mv_dma_supported		sn_dma_supported;
 
 /*
@@ -111,6 +112,7 @@ extern ia64_mv_dma_supported		sn_dma_sup
 #define platform_dma_sync_sg_for_cpu	sn_dma_sync_sg_for_cpu
 #define platform_dma_sync_single_for_device sn_dma_sync_single_for_device
 #define platform_dma_sync_sg_for_device	sn_dma_sync_sg_for_device
+#define platform_dma_mapping_error		sn_dma_mapping_error
 #define platform_dma_supported		sn_dma_supported
 
 #include <asm/sn/sn2/io.h>

_
