Re: ./include/generated/autoconf.h:1601:33: fatal error: mach/debug-macro.S: No such file or directory

From: Arnd Bergmann
Date: Tue Nov 17 2020 - 08:59:34 EST


On Sat, Nov 14, 2020 at 12:58 AM Alexandre Belloni
<alexandre.belloni@xxxxxxxxxxx> wrote:
> On 11/11/2020 09:51:26+0100, Linus Walleij wrote:
> > On Wed, Nov 11, 2020 at 7:18 AM kernel test robot <lkp@xxxxxxxxx> wrote:
> >
> > > In file included from include/linux/kconfig.h:7,
> > > from <command-line>:
> > > >> ./include/generated/autoconf.h:1601:33: fatal error: mach/debug-macro.S: No such file or directory
> > > 1601 | #define CONFIG_DEBUG_LL_INCLUDE "mach/debug-macro.S"
> > > | ^~~~~~~~~~~~~~~~~~~~
> > > compilation terminated.
> >
> > This is an interesting one!
> >
> > It happens when CONFIG_DEBUG_LL_INCLUDE does not have a custom
> > debug header for the platform under arch/arm/include/debug and the
> > KConfig falls through to the default value, which is <mach/debug-macro.S>.
> >
> > Only that the majority is not using <mach/*> anymore.
> >
> > I feel a bit like setting the default to debug/8250.S or something.
> >
> > Suggestions?
> >
> > Then the actual bug exposed:
> >
> > The config tested by the robot is using
> > CONFIG_ARCH_AT91=y
> > CONFIG_SOC_SAMV7=y
> >
> > When I look into Kconfig.debug it seems that this will define
> > DEBUG_AT91_SAMV7_USART1 but only a physical address,
> > no virtual address and and actually no debug header. It seems
> > LL_DEBUG is broken on SAMV7 and never really worked
> > so now that crops up.

The last mach/debug-macro.S file was apparently removed in 2015,
in commit 0045c0dd2f64 ("ARM: debug-ll: rework footbridge handling").
At that point we should have changed the fallback

> > Nicolas, something that should be fixed, I think?
> >
>
> I confirm DEBUG_LL is not broken on SAMV7. The config used by lkp doen't
> define DEBUG_AT91_SAMV7_USART1, it is not the culprit. Select it and the
> problem is gone since DEBUG_AT91_SAMV7_USART1 selects DEBUG_AT91_UART
> and DEBUG_LL_INCLUDE has:
> default "debug/at91.S" if DEBUG_AT91_UART
>
> Your issue is CONFIG_DEBUG_SEMIHOSTING

Right, in particular, semihosting is not handled in
arch/arm/boot/compressed/head.S the way it is handled in
arch/arm/boot/compressed/debug.S, arch/arm/kernel/debug.S
and arch/arm/kernel/head.S.

I wonder if we should move the semihosting code into a separate
arch/arm/include/debug/semihosting.S to make the generic
code treat it the same as all the other options.

Alternatively, disabling CONFIG_DEBUG_UNCOMPRESS
when SEMIHOSTING is set would be the cheapest workaround
for the particular build failure.

Arnd