Message ID | 20220830195520.1668785-1-bvanassche@acm.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ARM: riscpc: Unbreak the build | expand |
On Tue, Aug 30, 2022 at 12:55:17PM -0700, Bart Van Assche wrote: > This patch fixes the following build error: > > In file included from ./include/linux/io.h:13, > from ./arch/arm/mach-rpc/include/mach/uncompress.h:9, > from arch/arm/boot/compressed/misc.c:31: > ./arch/arm/include/asm/io.h:85:22: error: conflicting types for ‘__raw_writeb’ > 85 | #define __raw_writeb __raw_writeb > | ^~~~~~~~~~~~ > ./arch/arm/include/asm/io.h:86:20: note: in expansion of macro ‘__raw_writeb’ > 86 | static inline void __raw_writeb(u8 val, volatile void __iomem *addr) > | ^~~~~~~~~~~~ > In file included from arch/arm/boot/compressed/misc.c:26: > arch/arm/boot/compressed/misc-ep93xx.h:13:20: note: previous definition of ‘__raw_writeb’ was here > 13 | static inline void __raw_writeb(unsigned char value, unsigned int ptr) > | ^~~~~~~~~~~~ > > To: Russell King <linux@armlinux.org.uk> > Cc: Arnd Bergmann <arnd@arndb.de> > Cc: linux-arm-kernel@lists.infradead.org > Signed-off-by: Bart Van Assche <bvanassche@acm.org> Please work out which commit caused this breakage, thanks.
On 8/30/22 12:58, Russell King (Oracle) wrote: > On Tue, Aug 30, 2022 at 12:55:17PM -0700, Bart Van Assche wrote: >> This patch fixes the following build error: >> >> In file included from ./include/linux/io.h:13, >> from ./arch/arm/mach-rpc/include/mach/uncompress.h:9, >> from arch/arm/boot/compressed/misc.c:31: >> ./arch/arm/include/asm/io.h:85:22: error: conflicting types for ‘__raw_writeb’ >> 85 | #define __raw_writeb __raw_writeb >> | ^~~~~~~~~~~~ >> ./arch/arm/include/asm/io.h:86:20: note: in expansion of macro ‘__raw_writeb’ >> 86 | static inline void __raw_writeb(u8 val, volatile void __iomem *addr) >> | ^~~~~~~~~~~~ >> In file included from arch/arm/boot/compressed/misc.c:26: >> arch/arm/boot/compressed/misc-ep93xx.h:13:20: note: previous definition of ‘__raw_writeb’ was here >> 13 | static inline void __raw_writeb(unsigned char value, unsigned int ptr) >> | ^~~~~~~~~~~~ >> >> To: Russell King <linux@armlinux.org.uk> >> Cc: Arnd Bergmann <arnd@arndb.de> >> Cc: linux-arm-kernel@lists.infradead.org >> Signed-off-by: Bart Van Assche <bvanassche@acm.org> > > Please work out which commit caused this breakage, thanks. Hi Russell, A bisect led to the following: Fixes: 0361c7e504b1 ("ARM: ep93xx: multiplatform support") Please let me know if you want me to repost this patch with the Fixes tag included. Thanks, Bart.
On Tue, Aug 30, 2022 at 01:55:50PM -0700, Bart Van Assche wrote: > On 8/30/22 12:58, Russell King (Oracle) wrote: > > On Tue, Aug 30, 2022 at 12:55:17PM -0700, Bart Van Assche wrote: > > > This patch fixes the following build error: > > > > > > In file included from ./include/linux/io.h:13, > > > from ./arch/arm/mach-rpc/include/mach/uncompress.h:9, > > > from arch/arm/boot/compressed/misc.c:31: > > > ./arch/arm/include/asm/io.h:85:22: error: conflicting types for ‘__raw_writeb’ > > > 85 | #define __raw_writeb __raw_writeb > > > | ^~~~~~~~~~~~ > > > ./arch/arm/include/asm/io.h:86:20: note: in expansion of macro ‘__raw_writeb’ > > > 86 | static inline void __raw_writeb(u8 val, volatile void __iomem *addr) > > > | ^~~~~~~~~~~~ > > > In file included from arch/arm/boot/compressed/misc.c:26: > > > arch/arm/boot/compressed/misc-ep93xx.h:13:20: note: previous definition of ‘__raw_writeb’ was here > > > 13 | static inline void __raw_writeb(unsigned char value, unsigned int ptr) > > > | ^~~~~~~~~~~~ > > > > > > To: Russell King <linux@armlinux.org.uk> > > > Cc: Arnd Bergmann <arnd@arndb.de> > > > Cc: linux-arm-kernel@lists.infradead.org > > > Signed-off-by: Bart Van Assche <bvanassche@acm.org> > > > > Please work out which commit caused this breakage, thanks. > > Hi Russell, > > A bisect led to the following: > > Fixes: 0361c7e504b1 ("ARM: ep93xx: multiplatform support") > > Please let me know if you want me to repost this patch with the Fixes tag > included. That is indeed the cause, and I'd say that the patch to fix it is incorrect. misc-ep93xx.h brings in EP93xx specific raw IO accessors into the decompressor, but we've already had (and correctly had) linux/io.h included. The problem is misc-ep93xx.h. Why is it defining these accessors? That's a question for Arnd.
On Tue, Aug 30, 2022, at 11:27 PM, Russell King (Oracle) wrote: > On Tue, Aug 30, 2022 at 01:55:50PM -0700, Bart Van Assche wrote: >> > > >> > > In file included from ./include/linux/io.h:13, >> > > from ./arch/arm/mach-rpc/include/mach/uncompress.h:9, >> >> A bisect led to the following: >> >> Fixes: 0361c7e504b1 ("ARM: ep93xx: multiplatform support") >> >> Please let me know if you want me to repost this patch with the Fixes tag >> included. > > That is indeed the cause, and I'd say that the patch to fix it is > incorrect. > > misc-ep93xx.h brings in EP93xx specific raw IO accessors into the > decompressor, but we've already had (and correctly had) linux/io.h > included. > > The problem is misc-ep93xx.h. Why is it defining these accessors? > That's a question for Arnd. The mach-ep93xx uncompress.h had these since the ep93xx got added in 2006, the idea was probably to avoid including linux/*.h headers in the decompressor and it was copied from arch-l7200, which was the first to do the same thing. Having the custom definition was probably never needed on ep93xx even if it was perhaps needed on one of the others that did the same thing. I agree that removing the #include from the rpc version is the wrong fix, but I can see a couple of others that all seem fine to me: - put the '#include "misc-ep93xx.h"' in an #ifdef as we do for the users - rename the custom __raw_writel etc to something with ep93xx prefix, or just open-code them - remove the custom functions and include linux/io.h unconditionally The last one is probably the cleanest, but also the most likely the cause regressions for another corner case. The other two remaining uncompress.h versions each just open-code the pointer dereference. Arnd
On Tue, Aug 30, 2022, at 11:27 PM, Russell King (Oracle) wrote: > On Tue, Aug 30, 2022 at 01:55:50PM -0700, Bart Van Assche wrote: >> > > >> > > In file included from ./include/linux/io.h:13, >> > > from ./arch/arm/mach-rpc/include/mach/uncompress.h:9, >> >> A bisect led to the following: >> >> Fixes: 0361c7e504b1 ("ARM: ep93xx: multiplatform support") >> >> Please let me know if you want me to repost this patch with the Fixes tag >> included. > > That is indeed the cause, and I'd say that the patch to fix it is > incorrect. > > misc-ep93xx.h brings in EP93xx specific raw IO accessors into the > decompressor, but we've already had (and correctly had) linux/io.h > included. > > The problem is misc-ep93xx.h. Why is it defining these accessors? > That's a question for Arnd. The mach-ep93xx uncompress.h had these since the ep93xx got added in 2006, the idea was probably to avoid including linux/*.h headers in the decompressor and it was copied from arch-l7200, which was the first to do the same thing. Having the custom definition was probably never needed on ep93xx even if it was perhaps needed on one of the others that did the same thing. I agree that removing the #include from the rpc version is the wrong fix, but I can see a couple of others that all seem fine to me: - put the '#include "misc-ep93xx.h"' in an #ifdef as we do for the users - rename the custom __raw_writel etc to something with ep93xx prefix, or just open-code them - remove the custom functions and include linux/io.h unconditionally The last one is probably the cleanest, but also the most likely the cause regressions for another corner case. The other two remaining uncompress.h versions each just open-code the pointer dereference. Arnd
diff --git a/arch/arm/mach-rpc/include/mach/uncompress.h b/arch/arm/mach-rpc/include/mach/uncompress.h index 1fbe7eb956fd..97edaf6a1f07 100644 --- a/arch/arm/mach-rpc/include/mach/uncompress.h +++ b/arch/arm/mach-rpc/include/mach/uncompress.h @@ -6,7 +6,6 @@ */ #define VIDMEM ((char *)SCREEN_START) -#include <linux/io.h> #include <mach/hardware.h> #include <asm/setup.h> #include <asm/page.h>
This patch fixes the following build error: In file included from ./include/linux/io.h:13, from ./arch/arm/mach-rpc/include/mach/uncompress.h:9, from arch/arm/boot/compressed/misc.c:31: ./arch/arm/include/asm/io.h:85:22: error: conflicting types for ‘__raw_writeb’ 85 | #define __raw_writeb __raw_writeb | ^~~~~~~~~~~~ ./arch/arm/include/asm/io.h:86:20: note: in expansion of macro ‘__raw_writeb’ 86 | static inline void __raw_writeb(u8 val, volatile void __iomem *addr) | ^~~~~~~~~~~~ In file included from arch/arm/boot/compressed/misc.c:26: arch/arm/boot/compressed/misc-ep93xx.h:13:20: note: previous definition of ‘__raw_writeb’ was here 13 | static inline void __raw_writeb(unsigned char value, unsigned int ptr) | ^~~~~~~~~~~~ To: Russell King <linux@armlinux.org.uk> Cc: Arnd Bergmann <arnd@arndb.de> Cc: linux-arm-kernel@lists.infradead.org Signed-off-by: Bart Van Assche <bvanassche@acm.org> --- arch/arm/mach-rpc/include/mach/uncompress.h | 1 - 1 file changed, 1 deletion(-)