Skip to contentSkip to conversation

MIPS: JZ4740: fixup #include's (sparse)

PATCH In review Brian Norris 3 participants 6 messages Dec 18, 2014 MIPS

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 MIPS: JZ4740: fixup #include's (sparse)

Fixes sparse warnings:

arch/mips/jz4740/irq.c:63:6: warning: symbol 'jz4740_irq_suspend' was not declared. Should it be static? arch/mips/jz4740/irq.c:69:6: warning: symbol 'jz4740_irq_resume' was not declared. Should it be static?

Also, I've seen some elusive build errors on my automated build test where JZ4740_IRQ_BASE and NR_IRQS are missing, but I can't reproduce them manually for some reason. Anyway, mach-jz4740/irq.h should help us avoid relying on some implicit include.

---
 arch/mips/jz4740/irq.c | 3 +++
 1 file changed, 3 insertions(+)
arch/mips/jz4740/irq.c +3 -0
index 2531da1d3add..97206b3deb97 100644
@@ -30,6 +30,9 @@
 #include <asm/irq_cpu.h>
 
 #include <asm/mach-jz4740/base.h>
+#include <asm/mach-jz4740/irq.h>
+
+#include "irq.h"
 
 static void __iomem *jz_intc_base;
 
Signature · 1 line
1.9.1
#1 lore raw
Quoted 9 lines · Brian Norris

Fixes sparse warnings:

arch/mips/jz4740/irq.c:63:6: warning: symbol 'jz4740_irq_suspend' was not declared. Should it be static? arch/mips/jz4740/irq.c:69:6: warning: symbol 'jz4740_irq_resume' was not declared. Should it be static?

Also, I've seen some elusive build errors on my automated build test where JZ4740_IRQ_BASE and NR_IRQS are missing, but I can't reproduce them manually for some reason. Anyway, mach-jz4740/irq.h should help us avoid relying on some implicit include.

Patch is looking good.

There is a known issue building jz in a separate build directory; building in the source directory itself will succeed. Could that be why you can't seem to reproduce the build issue?

Ralf

#2 lore raw
Quoted 9 lines · Ralf Baechle
Quoted 8 lines

arch/mips/jz4740/irq.c:63:6: warning: symbol 'jz4740_irq_suspend' was not declared. Should it be static? arch/mips/jz4740/irq.c:69:6: warning: symbol 'jz4740_irq_resume' was not declared. Should it be static?

Also, I've seen some elusive build errors on my automated build test where JZ4740_IRQ_BASE and NR_IRQS are missing, but I can't reproduce them manually for some reason. Anyway, mach-jz4740/irq.h should help us avoid relying on some implicit include.

Quoted 5 lines

Patch is looking good.

There is a known issue building jz in a separate build directory; building in the source directory itself will succeed. Could that be why you can't seem to reproduce the build issue?

With your patch applied I still can reproduce that build issue issue:

[...]
CC arch/mips/jz4740/irq.o
In file included from /home/ralf/src/linux/linux-mips/include/linux/irq.h:392:0,

                 from /home/ralf/src/linux/linux-mips/include/asm-generic/hardirq.h:12,
                 from /home/ralf/src/linux/linux-mips/arch/mips/include/asm/hardirq.h:16,
                 from /home/ralf/src/linux/linux-mips/include/linux/hardirq.h:8,
                 from /home/ralf/src/linux/linux-mips/include/linux/interrupt.h:12,
                 from /home/ralf/src/linux/linux-mips/arch/mips/jz4740/irq.c:19:
/home/ralf/src/linux/linux-mips/include/linux/irqdesc.h:92:33: error: ‘NR_IRQS’ undeclared here (not in a function)
 extern struct irq_desc irq_desc[NR_IRQS];
                                 ^

make[4]: *** [arch/mips/jz4740/irq.o] Error 1
make[3]: *** [arch/mips/jz4740] Error 2
make[2]: *** [arch/mips] Error 2
make[1]: *** [sub-make] Error 2
make: *** [__sub-make] Error 2
make: Leaving directory `/home/ralf/src/linux/obj/qi_lb60-build'

I haven't looked into depth at this but the issue appears to be that the search order for include files is different between building in the source directory and the object directory and that there are multiple include files with the same name, that is irq.h. are involved.

So changing the name of the header file should fix this issue but really this also is a kbuild bug.

Ralf

Acked-by on v1 1/1
#5 lore raw
In reply to Brian Norris
Quoted 11 lines · Brian Norris

Fixes sparse warnings:

arch/mips/jz4740/irq.c:63:6: warning: symbol 'jz4740_irq_suspend' was not declared. Should it be static? arch/mips/jz4740/irq.c:69:6: warning: symbol 'jz4740_irq_resume' was not declared. Should it be static?

Also, I've seen some elusive build errors on my automated build test where JZ4740_IRQ_BASE and NR_IRQS are missing, but I can't reproduce them manually for some reason. Anyway, mach-jz4740/irq.h should help us avoid relying on some implicit include.

Thanks.

#4 lore raw
In reply to Ralf Baechle
Quoted 12 lines · Ralf Baechle
Quoted 9 lines · Brian Norris

Fixes sparse warnings:

arch/mips/jz4740/irq.c:63:6: warning: symbol 'jz4740_irq_suspend' was not declared. Should it be static? arch/mips/jz4740/irq.c:69:6: warning: symbol 'jz4740_irq_resume' was not declared. Should it be static?

Also, I've seen some elusive build errors on my automated build test where JZ4740_IRQ_BASE and NR_IRQS are missing, but I can't reproduce them manually for some reason. Anyway, mach-jz4740/irq.h should help us avoid relying on some implicit include.

Quoted 5 lines

Patch is looking good.

There is a known issue building jz in a separate build directory; building in the source directory itself will succeed. Could that be why you can't seem to reproduce the build issue?

Yes, that is quite likely the problem.

#3 lore raw
In reply to Ralf Baechle
Quoted 11 lines · Ralf Baechle
Quoted 9 lines · Ralf Baechle
Quoted 8 lines

arch/mips/jz4740/irq.c:63:6: warning: symbol 'jz4740_irq_suspend' was not declared. Should it be static? arch/mips/jz4740/irq.c:69:6: warning: symbol 'jz4740_irq_resume' was not declared. Should it be static?

Also, I've seen some elusive build errors on my automated build test where JZ4740_IRQ_BASE and NR_IRQS are missing, but I can't reproduce them manually for some reason. Anyway, mach-jz4740/irq.h should help us avoid relying on some implicit include.

Quoted 7 lines
Quoted 5 lines

Patch is looking good.

There is a known issue building jz in a separate build directory; building in the source directory itself will succeed. Could that be why you can't seem to reproduce the build issue?

With your patch applied I still can reproduce that build issue issue:

Right, I never did straighten this out entirely for myself. And no, I don't claim to have fixed all build issues here. I think the same issue shows up in several other files which reference irq.h too.

Quoted 18 lines

[...]
CC arch/mips/jz4740/irq.o
In file included from /home/ralf/src/linux/linux-mips/include/linux/irq.h:392:0,

                 from /home/ralf/src/linux/linux-mips/include/asm-generic/hardirq.h:12,
                 from /home/ralf/src/linux/linux-mips/arch/mips/include/asm/hardirq.h:16,
                 from /home/ralf/src/linux/linux-mips/include/linux/hardirq.h:8,
                 from /home/ralf/src/linux/linux-mips/include/linux/interrupt.h:12,
                 from /home/ralf/src/linux/linux-mips/arch/mips/jz4740/irq.c:19:
/home/ralf/src/linux/linux-mips/include/linux/irqdesc.h:92:33: error: ‘NR_IRQS’ undeclared here (not in a function)
 extern struct irq_desc irq_desc[NR_IRQS];
                                 ^

make[4]: *** [arch/mips/jz4740/irq.o] Error 1
make[3]: *** [arch/mips/jz4740] Error 2
make[2]: *** [arch/mips] Error 2
make[1]: *** [sub-make] Error 2
make: *** [__sub-make] Error 2
make: Leaving directory `/home/ralf/src/linux/obj/qi_lb60-build'

Quoted 7 lines

I haven't looked into depth at this but the issue appears to be that the search order for include files is different between building in the source directory and the object directory and that there are multiple include files with the same name, that is irq.h. are involved.

So changing the name of the header file should fix this issue but really this also is a kbuild bug.

The directory ordering differences do sound familiar.

Yeah, I would expect that in-tree and out-of-tree builds should keep as many things as possible the same, to avoid problems like this.

Anyway, address this how you'd like (or not at all). I'm only compile-testing; I don't actually use this build. So I'm not very likely to spend the time to fix this one.

Thanks,
Brian