diff mbox series

ARM: riscpc: Unbreak the build

Message ID 20220830195520.1668785-1-bvanassche@acm.org (mailing list archive)
State New, archived
Headers show
Series ARM: riscpc: Unbreak the build | expand

Commit Message

Bart Van Assche Aug. 30, 2022, 7:55 p.m. UTC
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(-)

Comments

Russell King (Oracle) Aug. 30, 2022, 7:58 p.m. UTC | #1
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.
Bart Van Assche Aug. 30, 2022, 8:55 p.m. UTC | #2
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.
Russell King (Oracle) Aug. 30, 2022, 9:27 p.m. UTC | #3
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.
Arnd Bergmann Aug. 31, 2022, 7:33 a.m. UTC | #4
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
Arnd Bergmann Aug. 31, 2022, 8:56 p.m. UTC | #5
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 mbox series

Patch

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>