Subject: linux-next: build failure after merge of the asm-generic tree

From: Stephen Rothwell <[email-masked]>
Date: Wed, 19 Nov 2014 18:54:14 +1100

Hi Arnd,

After merging the asm-generic tree, today's linux-next build (sparc
defconfig) failed like this:

In file included from include/linux/io.h:22:0,
                 from include/linux/irq.h:23,
                 from include/asm-generic/hardirq.h:12,
                 from arch/sparc/include/asm/hardirq_32.h:10,
                 from arch/sparc/include/asm/hardirq.h:6,
                 from include/linux/hardirq.h:8,
                 from include/linux/memcontrol.h:24,
                 from include/linux/swap.h:8,
                 from arch/sparc/include/asm/pgtable_32.h:17,
                 from arch/sparc/include/asm/pgtable.h:6,
                 from include/linux/mm.h:52,
                 from include/linux/pagemap.h:7,
                 from include/linux/blkdev.h:14,
                 from init/do_mounts.h:2,
                 from init/do_mounts_rd.c:21:
arch/sparc/include/asm/io.h:14:0: warning: "readb_relaxed" redefined
 #define readb_relaxed(__addr)  readb(__addr)
 ^
In file included from arch/sparc/include/asm/io_32.h:13:0,
                 from arch/sparc/include/asm/io.h:6,
                 from include/linux/io.h:22,
                 from include/linux/irq.h:23,
                 from include/asm-generic/hardirq.h:12,
                 from arch/sparc/include/asm/hardirq_32.h:10,
                 from arch/sparc/include/asm/hardirq.h:6,
                 from include/linux/hardirq.h:8,
                 from include/linux/memcontrol.h:24,
                 from include/linux/swap.h:8,
                 from arch/sparc/include/asm/pgtable_32.h:17,
                 from arch/sparc/include/asm/pgtable.h:6,
                 from include/linux/mm.h:52,
                 from include/linux/pagemap.h:7,
                 from include/linux/blkdev.h:14,
                 from init/do_mounts.h:2,
                 from init/do_mounts_rd.c:21:
include/asm-generic/io.h:183:0: note: this is the location of the previous definition
 #define readb_relaxed readb
 ^

And many, many more :-(

Caused by commit 1191ccb34cf8 ("sparc: io: implement dummy relaxed
accessor macros for writes").

I applied the following fix patch:

From: Stephen Rothwell <[email-masked]>
Date: Wed, 19 Nov 2014 18:49:07 +1100
Subject: [PATCH] sparc: io: fix for implement dummy relaxed accessor macros for writes

Signed-off-by: Stephen Rothwell <[email-masked]>
---
 arch/sparc/include/asm/io.h    | 9 ---------
 arch/sparc/include/asm/io_32.h | 9 +++++++++
 arch/sparc/include/asm/io_64.h | 9 +++++++++
 3 files changed, 18 insertions(+), 9 deletions(-)

diff --git a/arch/sparc/include/asm/io.h b/arch/sparc/include/asm/io.h
index 493f22c4684f..f6902cf3cbe9 100644
--- a/arch/sparc/include/asm/io.h
+++ b/arch/sparc/include/asm/io.h
@@ -10,15 +10,6 @@
  * Defines used for both SPARC32 and SPARC64
  */
 
-/* Relaxed accessors for MMIO */
-#define readb_relaxed(__addr)		readb(__addr)
-#define readw_relaxed(__addr)		readw(__addr)
-#define readl_relaxed(__addr)		readl(__addr)
-
-#define writeb_relaxed(__b, __addr)	writeb(__b, __addr)
-#define writew_relaxed(__w, __addr)	writew(__w, __addr)
-#define writel_relaxed(__l, __addr)	writel(__l, __addr)
-
 /* Big endian versions of memory read/write routines */
 #define readb_be(__addr)	__raw_readb(__addr)
 #define readw_be(__addr)	__raw_readw(__addr)
diff --git a/arch/sparc/include/asm/io_32.h b/arch/sparc/include/asm/io_32.h
index 407ac14295f4..9484c8ec18cf 100644
--- a/arch/sparc/include/asm/io_32.h
+++ b/arch/sparc/include/asm/io_32.h
@@ -4,6 +4,15 @@
 #include <linux/kernel.h>
 #include <linux/ioport.h>  /* struct resource */
 
+/* Relaxed accessors for MMIO */
+#define readb_relaxed(__addr)		readb(__addr)
+#define readw_relaxed(__addr)		readw(__addr)
+#define readl_relaxed(__addr)		readl(__addr)
+
+#define writeb_relaxed(__b, __addr)	writeb(__b, __addr)
+#define writew_relaxed(__w, __addr)	writew(__w, __addr)
+#define writel_relaxed(__l, __addr)	writel(__l, __addr)
+
 #define IO_SPACE_LIMIT 0xffffffff
 
 #define memset_io(d,c,sz)     _memset_io(d,c,sz)
diff --git a/arch/sparc/include/asm/io_64.h b/arch/sparc/include/asm/io_64.h
index d50e6127325d..078f600376c6 100644
--- a/arch/sparc/include/asm/io_64.h
+++ b/arch/sparc/include/asm/io_64.h
@@ -265,6 +265,15 @@ static inline void iowrite32_rep(void __iomem *port, const void *buf, unsigned l
 	outsl((unsigned long __force)port, buf, count);
 }
 
+/* Relaxed accessors for MMIO */
+#define readb_relaxed(__addr)		readb(__addr)
+#define readw_relaxed(__addr)		readw(__addr)
+#define readl_relaxed(__addr)		readl(__addr)
+
+#define writeb_relaxed(__b, __addr)	writeb(__b, __addr)
+#define writew_relaxed(__w, __addr)	writew(__w, __addr)
+#define writel_relaxed(__l, __addr)	writel(__l, __addr)
+
 /* Valid I/O Space regions are anywhere, because each PCI bus supported
  * can live in an arbitrary area of the physical address range.
  */
-- 
2.1.3

-- 
Cheers,
Stephen Rothwell                    [email-masked]