Re: [driver-core:driver-core-testing 28/31] WARNING: modpost: vmlinux.o(.text.unlikely+0x156c): Section mismatch in reference from the function bitmap_equal() to the variable .init.data:initcall_level_names

From: Barry Song
Date: Sat Aug 14 2021 - 20:04:41 EST


On Sun, Aug 15, 2021 at 5:18 AM Andy Shevchenko
<andy.shevchenko@xxxxxxxxx> wrote:
>
> On Sat, Aug 14, 2021 at 4:36 PM Greg Kroah-Hartman
> <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
> > On Sat, Aug 14, 2021 at 07:03:00PM +0800, kernel test robot wrote:
> > > tree: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git driver-core-testing
> > > head: 3b35f2a6a625126c57475aa56b5357d8e80b404c
> > > commit: 291f93ca339f5b5e6e90ad037bb8271f0f618165 [28/31] lib: test_bitmap: add bitmap_print_bitmask/list_to_buf test cases
> > > config: xtensa-randconfig-r004-20210814 (attached as .config)
> > > compiler: xtensa-linux-gcc (GCC) 11.2.0
> > > reproduce (this is a W=1 build):
> > > wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> > > chmod +x ~/bin/make.cross
> > > # https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git/commit/?id=291f93ca339f5b5e6e90ad037bb8271f0f618165
> > > git remote add driver-core https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git
> > > git fetch --no-tags driver-core driver-core-testing
> > > git checkout 291f93ca339f5b5e6e90ad037bb8271f0f618165
> > > # save the attached .config to linux build tree
> > > mkdir build_dir
> > > COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=xtensa SHELL=/bin/bash
> > >
> > > If you fix the issue, kindly add following tag as appropriate
> > > Reported-by: kernel test robot <lkp@xxxxxxxxx>
> > >
> > > All warnings (new ones prefixed by >>, old ones prefixed by <<):
> > >
> > > >> WARNING: modpost: vmlinux.o(.text.unlikely+0x156c): Section mismatch in reference from the function bitmap_equal() to the variable .init.data:initcall_level_names
> > > The function bitmap_equal() references
> > > the variable __initdata initcall_level_names.
> > > This is often because bitmap_equal lacks a __initdata
> > > annotation or the annotation of initcall_level_names is wrong.
> > >
> > > The below error/warnings are from parent commit:
> > > << WARNING: modpost: vmlinux.o(.data+0x1a86d8): Section mismatch in reference from the variable qed_mfw_legacy_maps to the variable .init.rodata:__setup_str_initcall_blacklist
> > > << WARNING: modpost: vmlinux.o(.data+0x1a87c8): Section mismatch in reference from the variable qed_mfw_ext_maps to the variable .init.rodata:__setup_str_initcall_blacklist
> > > << WARNING: modpost: vmlinux.o(.data+0x1a8948): Section mismatch in reference from the variable qede_forced_speed_maps to the variable .init.rodata:__setup_str_initcall_blacklist
>
> > Barry, can I get a fix for this?
>
> Max already pointed out, but I guess you were not in Cc list, that
> it's a GCC bug in his opinion, but GCC people don't ack it.
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92938

I really don't understand what is going on here. My understanding is
this report has nothing to do with the
new commit and it doesn't report any valid place where kernel code is wrong.

with xtensa gcc 11.1 which is the one i can easily download from here
after google:
http://kernel.c3sl.ufpr.br/pub/tools/crosstool/

i could somehow reproduce this kind of very odd section mismatch
report from bitmap:
$ ./build-xenta.sh
...
MODPOST vmlinux.symvers
WARNING: modpost: vmlinux.o(.text.unlikely+0x4d64): Section mismatch
in reference from the function bitmap_equal() to the variable
.init.rodata:__setup_str_initcall_blacklist
The function bitmap_equal() references
the variable __initconst __setup_str_initcall_blacklist.
This is often because bitmap_equal lacks a __initconst
annotation or the annotation of __setup_str_initcall_blacklist is wrong.

...
WARNING: modpost: lib/find_bit_benchmark.o(.text.unlikely+0x0):
Section mismatch in reference from the (unknown reference) (unknown)
to the variable .init.data:bitmap2
The function (unknown)() references
the variable __initdata bitmap2.
This is often because (unknown) lacks a __initdata
annotation or the annotation of bitmap2 is wrong.
...

But after reverting my commit, it is *still* there:

$ git revert 2069b8b9ce8b758e015ce49225b1fedac4accd9c
[scheduler e158c85c6ccc] Revert "lib: test_bitmap: add
bitmap_print_bitmask/list_to_buf test cases"
1 file changed, 150 deletions(-)

$ ./build-xenta.sh
...
MODPOST vmlinux.symvers
WARNING: modpost: vmlinux.o(.text.unlikely+0x4d64): Section mismatch
in reference from the function bitmap_equal() to the variable
.init.rodata:__setup_str_initcall_blacklist
The function bitmap_equal() references
the variable __initconst __setup_str_initcall_blacklist.
This is often because bitmap_equal lacks a __initconst
annotation or the annotation of __setup_str_initcall_blacklist is wrong.
...
WARNING: modpost: lib/find_bit_benchmark.o(.text.unlikely+0x0):
Section mismatch in reference from the (unknown reference) (unknown)
to the variable .init.data:bitmap2
The function (unknown)() references
the variable __initdata bitmap2.
This is often because (unknown) lacks a __initdata
annotation or the annotation of bitmap2 is wrong.

Kernel: arch/xtensa/boot/boot-elf/../Image.elf is ready
GEN Module.symvers

>
> --
> With Best Regards,
> Andy Shevchenko

Thanks
Barry