Re: [PATCH v4 2/4] mips: add <asm-generic/io.h> including
From: Baoquan He
Date: Tue Mar 14 2023 - 20:51:05 EST
On 03/14/23 at 06:19pm, Arnd Bergmann wrote:
> On Tue, Mar 14, 2023, at 17:31, Florian Fainelli wrote:
> > On 3/14/23 08:34, Thomas Bogendoerfer wrote:
> >> On Tue, Mar 14, 2023 at 10:56:36AM +0800, Baoquan He wrote:
> >>>> In file included from /local/tbogendoerfer/korg/linux/include/linux/spinlock.h:311:0,
> >>>> from /local/tbogendoerfer/korg/linux/include/linux/vmalloc.h:5,
> >>>> from /local/tbogendoerfer/korg/linux/include/asm-generic/io.h:994,
> >>>> from /local/tbogendoerfer/korg/linux/arch/mips/include/asm/io.h:618,
> >>>> from /local/tbogendoerfer/korg/linux/include/linux/io.h:13,
> >>>> from /local/tbogendoerfer/korg/linux/arch/mips/include/asm/mips-cps.h:11,
> >>>> from /local/tbogendoerfer/korg/linux/arch/mips/include/asm/smp-ops.h:16,
> >>>> from /local/tbogendoerfer/korg/linux/arch/mips/include/asm/smp.h:21,
> >>>> from /local/tbogendoerfer/korg/linux/include/linux/smp.h:113,
> >>>> from /local/tbogendoerfer/korg/linux/include/linux/lockdep.h:14,
> >>>> from /local/tbogendoerfer/korg/linux/include/linux/rcupdate.h:29,
> >>>> from /local/tbogendoerfer/korg/linux/include/linux/rculist.h:11,
> >>>> from /local/tbogendoerfer/korg/linux/include/linux/pid.h:5,
> >>>> from /local/tbogendoerfer/korg/linux/include/linux/sched.h:14,
> >>>> from /local/tbogendoerfer/korg/linux/include/linux/utsname.h:6,
> >>>> from /local/tbogendoerfer/korg/linux/init/version.c:17:
> >>
> >> already tried it, but it doesn't fix the issue. I've attached the
> >> config.
> >
> > I had attempted a similar approach before as Baoquan did, but met the
> > same build issue as Thomas that was not immediately clear to me why it
> > popped up. I would be curious to see how this can be resolved.
>
> I think this is the result of recursive header inclusion:
> spinlock.h includes lockdep.h, but its header guard is already
> there from the include chain.
>
> There is probably something in one of the mips asm/*.h headers that
> causes this recursion that is not present elsewhere.
>
> I think this should fix it, but is likely to cause another problem elsewhere:
>
> --- a/arch/mips/include/asm/smp-ops.h
> +++ b/arch/mips/include/asm/smp-ops.h
> @@ -13,8 +13,6 @@
>
> #include <linux/errno.h>
>
> -#include <asm/mips-cps.h>
> -
> #ifdef CONFIG_SMP
>
> #include <linux/cpumask.h>
Will meet below compiling error after appllying above patch. Adding
asm/mips-cps.h including in arch/mips/kernel/setup.c will fix it as below.
arch/mips/kernel/setup.c: In function ‘setup_arch’:
arch/mips/kernel/setup.c:781:9: error: implicit declaration of function ‘mips_cm_probe’ [-Werror=implicit-function-declaration]
781 | mips_cm_probe();
| ^~~~~~~~~~~~~
cc1: all warnings being treated as errors
diff --git a/arch/mips/kernel/setup.c b/arch/mips/kernel/setup.c
index f1c88f8a1dc5..e8c4020ef367 100644
--- a/arch/mips/kernel/setup.c
+++ b/arch/mips/kernel/setup.c
@@ -43,6 +43,7 @@
#include <asm/smp-ops.h>
#include <asm/prom.h>
#include <asm/fw/fw.h>
+#include <asm/mips-cps.h>
#ifdef CONFIG_MIPS_ELF_APPENDED_DTB
char __section(".appended_dtb") __appended_dtb[0x100000];