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

From: Stephen Rothwell
Date: Tue Feb 19 2019 - 01:37:02 EST


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

Attachment: pgp35f_fVp0cX.pgp
Description: OpenPGP digital signature