Message ID | 20190419094754.24667-7-yamada.masahiro@socionext.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | compiler: allow all arches to enable CONFIG_OPTIMIZE_INLINING | expand |
Hi, On Fri, Apr 19, 2019 at 12:06 PM Masahiro Yamada <yamada.masahiro@socionext.com> wrote: > > This prepares to move CONFIG_OPTIMIZE_INLINING from x86 to a common > place. We need to eliminate potential issues beforehand. > > If it is enabled for mips, the following errors are reported: > > arch/mips/mm/sc-mips.o: In function `mips_sc_prefetch_enable.part.2': > sc-mips.c:(.text+0x98): undefined reference to `mips_gcr_base' > sc-mips.c:(.text+0x9c): undefined reference to `mips_gcr_base' > sc-mips.c:(.text+0xbc): undefined reference to `mips_gcr_base' > sc-mips.c:(.text+0xc8): undefined reference to `mips_gcr_base' > sc-mips.c:(.text+0xdc): undefined reference to `mips_gcr_base' > arch/mips/mm/sc-mips.o:sc-mips.c:(.text.unlikely+0x44): more undefined references to `mips_gcr_base' Tested with success on ppc32/G4. But on CI20 (ci20_defconfig from master), I get: MODPOST vmlinux.o mipsel-linux-gnu-ld: arch/mips/kernel/traps.o: in function `addr_gcr_err_control': /home/mathieu/tmp/linux/linux/ci20/../arch/mips/include/asm/mips-cm.h:169: undefined reference to `mips_gcr_base' mipsel-linux-gnu-ld: /home/mathieu/linux/linux/ci20/../arch/mips/include/asm/mips-cm.h:169: undefined reference to `mips_gcr_base' mipsel-linux-gnu-ld: arch/mips/mm/sc-mips.o: in function `addr_gcr_l2_pft_control': /home/mathieu/linux/linux/ci20/../arch/mips/include/asm/mips-cm.h:246: undefined reference to `mips_gcr_base' mipsel-linux-gnu-ld: /home/mathieu/linux/linux/ci20/../arch/mips/include/asm/mips-cm.h:246: undefined reference to `mips_gcr_base' mipsel-linux-gnu-ld: /home/mathieu/linux/linux/ci20/../arch/mips/include/asm/mips-cm.h:246: undefined reference to `mips_gcr_base' mipsel-linux-gnu-ld: arch/mips/mm/sc-mips.o:/home/mathieu/linux/linux/ci20/../arch/mips/include/asm/mips-cm.h:246: more undefined references to `mips_gcr_base' follow > Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> > --- > > Changes in v2: > - new patch > > arch/mips/include/asm/bitops.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/mips/include/asm/bitops.h b/arch/mips/include/asm/bitops.h > index 830c93a010c3..6a26ead1c2b6 100644 > --- a/arch/mips/include/asm/bitops.h > +++ b/arch/mips/include/asm/bitops.h > @@ -482,7 +482,7 @@ static inline void __clear_bit_unlock(unsigned long nr, volatile unsigned long * > * Return the bit position (0..63) of the most significant 1 bit in a word > * Returns -1 if no 1 bit exists > */ > -static inline unsigned long __fls(unsigned long word) > +static __always_inline unsigned long __fls(unsigned long word) > { > int num; > > -- > 2.17.1 >
On Sat, Apr 20, 2019 at 12:45 AM Mathieu Malaterre <malat@debian.org> wrote: > > Hi, > > On Fri, Apr 19, 2019 at 12:06 PM Masahiro Yamada > <yamada.masahiro@socionext.com> wrote: > > > > This prepares to move CONFIG_OPTIMIZE_INLINING from x86 to a common > > place. We need to eliminate potential issues beforehand. > > > > If it is enabled for mips, the following errors are reported: > > > > arch/mips/mm/sc-mips.o: In function `mips_sc_prefetch_enable.part.2': > > sc-mips.c:(.text+0x98): undefined reference to `mips_gcr_base' > > sc-mips.c:(.text+0x9c): undefined reference to `mips_gcr_base' > > sc-mips.c:(.text+0xbc): undefined reference to `mips_gcr_base' > > sc-mips.c:(.text+0xc8): undefined reference to `mips_gcr_base' > > sc-mips.c:(.text+0xdc): undefined reference to `mips_gcr_base' > > arch/mips/mm/sc-mips.o:sc-mips.c:(.text.unlikely+0x44): more undefined references to `mips_gcr_base' > > Tested with success on ppc32/G4. But on CI20 (ci20_defconfig from > master), I get: Thanks for the test! OK, I saw this error for ci20_defconfig. I inline'd __ffs() to fix it and sumitted v3. Thank you. > MODPOST vmlinux.o > mipsel-linux-gnu-ld: arch/mips/kernel/traps.o: in function > `addr_gcr_err_control': > /home/mathieu/tmp/linux/linux/ci20/../arch/mips/include/asm/mips-cm.h:169: > undefined reference to `mips_gcr_base' > mipsel-linux-gnu-ld: > /home/mathieu/linux/linux/ci20/../arch/mips/include/asm/mips-cm.h:169: > undefined reference to `mips_gcr_base' > mipsel-linux-gnu-ld: arch/mips/mm/sc-mips.o: in function > `addr_gcr_l2_pft_control': > /home/mathieu/linux/linux/ci20/../arch/mips/include/asm/mips-cm.h:246: > undefined reference to `mips_gcr_base' > mipsel-linux-gnu-ld: > /home/mathieu/linux/linux/ci20/../arch/mips/include/asm/mips-cm.h:246: > undefined reference to `mips_gcr_base' > mipsel-linux-gnu-ld: > /home/mathieu/linux/linux/ci20/../arch/mips/include/asm/mips-cm.h:246: > undefined reference to `mips_gcr_base' > mipsel-linux-gnu-ld: > arch/mips/mm/sc-mips.o:/home/mathieu/linux/linux/ci20/../arch/mips/include/asm/mips-cm.h:246: > more undefined references to `mips_gcr_base' follow
diff --git a/arch/mips/include/asm/bitops.h b/arch/mips/include/asm/bitops.h index 830c93a010c3..6a26ead1c2b6 100644 --- a/arch/mips/include/asm/bitops.h +++ b/arch/mips/include/asm/bitops.h @@ -482,7 +482,7 @@ static inline void __clear_bit_unlock(unsigned long nr, volatile unsigned long * * Return the bit position (0..63) of the most significant 1 bit in a word * Returns -1 if no 1 bit exists */ -static inline unsigned long __fls(unsigned long word) +static __always_inline unsigned long __fls(unsigned long word) { int num;
This prepares to move CONFIG_OPTIMIZE_INLINING from x86 to a common place. We need to eliminate potential issues beforehand. If it is enabled for mips, the following errors are reported: arch/mips/mm/sc-mips.o: In function `mips_sc_prefetch_enable.part.2': sc-mips.c:(.text+0x98): undefined reference to `mips_gcr_base' sc-mips.c:(.text+0x9c): undefined reference to `mips_gcr_base' sc-mips.c:(.text+0xbc): undefined reference to `mips_gcr_base' sc-mips.c:(.text+0xc8): undefined reference to `mips_gcr_base' sc-mips.c:(.text+0xdc): undefined reference to `mips_gcr_base' arch/mips/mm/sc-mips.o:sc-mips.c:(.text.unlikely+0x44): more undefined references to `mips_gcr_base' Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> --- Changes in v2: - new patch arch/mips/include/asm/bitops.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)