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

From: Stephen Rothwell <[email-masked]>
Date: Tue, 19 Feb 2019 17:36:54 +1100

Hi Arnd,

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

arch/powerpc/kernel/iomap.c:18:14: error: conflicting types for 'ioread8'
 unsigned int ioread8(void __iomem *addr)
              ^~~~~~~
In file included from arch/powerpc/include/asm/io.h:653,
                 from include/linux/io.h:25,
                 from include/linux/irq.h:20,
                 from arch/powerpc/include/asm/hardirq.h:6,
                 from include/linux/hardirq.h:9,
                 from include/linux/interrupt.h:11,
                 from include/linux/pci.h:32,
                 from arch/powerpc/kernel/iomap.c:7:
include/asm-generic/iomap.h:29:21: note: previous declaration of 'ioread8' was here
 extern unsigned int ioread8(const void __iomem *addr);
                     ^~~~~~~
arch/powerpc/kernel/iomap.c:22:14: error: conflicting types for 'ioread16'
 unsigned int ioread16(void __iomem *addr)
              ^~~~~~~~
In file included from arch/powerpc/include/asm/io.h:653,
                 from include/linux/io.h:25,
                 from include/linux/irq.h:20,
                 from arch/powerpc/include/asm/hardirq.h:6,
                 from include/linux/hardirq.h:9,
                 from include/linux/interrupt.h:11,
                 from include/linux/pci.h:32,
                 from arch/powerpc/kernel/iomap.c:7:
include/asm-generic/iomap.h:30:21: note: previous declaration of 'ioread16' was here
 extern unsigned int ioread16(const void __iomem *addr);
                     ^~~~~~~~
arch/powerpc/kernel/iomap.c:26:14: error: conflicting types for 'ioread16be'
 unsigned int ioread16be(void __iomem *addr)
              ^~~~~~~~~~
In file included from arch/powerpc/include/asm/io.h:653,
                 from include/linux/io.h:25,
                 from include/linux/irq.h:20,
                 from arch/powerpc/include/asm/hardirq.h:6,
                 from include/linux/hardirq.h:9,
                 from include/linux/interrupt.h:11,
                 from include/linux/pci.h:32,
                 from arch/powerpc/kernel/iomap.c:7:
include/asm-generic/iomap.h:31:21: note: previous declaration of 'ioread16be' was here
 extern unsigned int ioread16be(const void __iomem *addr);
                     ^~~~~~~~~~
arch/powerpc/kernel/iomap.c:30:14: error: conflicting types for 'ioread32'
 unsigned int ioread32(void __iomem *addr)
              ^~~~~~~~
In file included from arch/powerpc/include/asm/io.h:653,
                 from include/linux/io.h:25,
                 from include/linux/irq.h:20,
                 from arch/powerpc/include/asm/hardirq.h:6,
                 from include/linux/hardirq.h:9,
                 from include/linux/interrupt.h:11,
                 from include/linux/pci.h:32,
                 from arch/powerpc/kernel/iomap.c:7:
include/asm-generic/iomap.h:32:21: note: previous declaration of 'ioread32' was here
 extern unsigned int ioread32(const void __iomem *addr);
                     ^~~~~~~~
arch/powerpc/kernel/iomap.c:34:14: error: conflicting types for 'ioread32be'
 unsigned int ioread32be(void __iomem *addr)
              ^~~~~~~~~~
In file included from arch/powerpc/include/asm/io.h:653,
                 from include/linux/io.h:25,
                 from include/linux/irq.h:20,
                 from arch/powerpc/include/asm/hardirq.h:6,
                 from include/linux/hardirq.h:9,
                 from include/linux/interrupt.h:11,
                 from include/linux/pci.h:32,
                 from arch/powerpc/kernel/iomap.c:7:
include/asm-generic/iomap.h:33:21: note: previous declaration of 'ioread32be' was here
 extern unsigned int ioread32be(const void __iomem *addr);
                     ^~~~~~~~~~
arch/powerpc/kernel/iomap.c:142:6: error: conflicting types for 'ioread8_rep'
 void ioread8_rep(void __iomem *addr, void *dst, unsigned long count)
      ^~~~~~~~~~~
In file included from arch/powerpc/include/asm/io.h:653,
                 from include/linux/io.h:25,
                 from include/linux/irq.h:20,
                 from arch/powerpc/include/asm/hardirq.h:6,
                 from include/linux/hardirq.h:9,
                 from include/linux/interrupt.h:11,
                 from include/linux/pci.h:32,
                 from arch/powerpc/kernel/iomap.c:7:
include/asm-generic/iomap.h:82:13: note: previous declaration of 'ioread8_rep' was here
 extern void ioread8_rep(const void __iomem *port, void *buf, unsigned long count);
             ^~~~~~~~~~~
arch/powerpc/kernel/iomap.c:146:6: error: conflicting types for 'ioread16_rep'
 void ioread16_rep(void __iomem *addr, void *dst, unsigned long count)
      ^~~~~~~~~~~~
In file included from arch/powerpc/include/asm/io.h:653,
                 from include/linux/io.h:25,
                 from include/linux/irq.h:20,
                 from arch/powerpc/include/asm/hardirq.h:6,
                 from include/linux/hardirq.h:9,
                 from include/linux/interrupt.h:11,
                 from include/linux/pci.h:32,
                 from arch/powerpc/kernel/iomap.c:7:
include/asm-generic/iomap.h:83:13: note: previous declaration of 'ioread16_rep' was here
 extern void ioread16_rep(const void __iomem *port, void *buf, unsigned long count);
             ^~~~~~~~~~~~
arch/powerpc/kernel/iomap.c:150:6: error: conflicting types for 'ioread32_rep'
 void ioread32_rep(void __iomem *addr, void *dst, unsigned long count)
      ^~~~~~~~~~~~
In file included from arch/powerpc/include/asm/io.h:653,
                 from include/linux/io.h:25,
                 from include/linux/irq.h:20,
                 from arch/powerpc/include/asm/hardirq.h:6,
                 from include/linux/hardirq.h:9,
                 from include/linux/interrupt.h:11,
                 from include/linux/pci.h:32,
                 from arch/powerpc/kernel/iomap.c:7:
include/asm-generic/iomap.h:84:13: note: previous declaration of 'ioread32_rep' was here
 extern void ioread32_rep(const void __iomem *port, void *buf, unsigned long count);
             ^~~~~~~~~~~~

Caused by commit

  8e074c243ed3 ("iomap: add missing const to ioread*/iowrite addr arg")

The const qualifiers are also missing in:

arch/parisc/lib/iomap.c
arch/sh/kernel/iomap.c

I have reverted that commit for today.

BTW, that commit only added the const to the ioread* functions ...
-- 
Cheers,
Stephen Rothwell