Re: [akpm-mm:mm-unstable 93/173] drivers/clk/clk-fixed-mmio.c:33:2: error: call to undeclared function 'iounmap'; ISO C99 and later do not support implicit function declarations

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 2023-07-18 at 08:06 +0800, bhe@xxxxxxxxxx wrote:
> On 07/17/23 at 07:05am, Liu, Yujie wrote:
> > Hi Baoquan,
> > 
> > On Fri, 2023-07-14 at 07:59 +0800, Baoquan He wrote:
> > > > 
> > > > In file included from ./include/linux/io.h:13,
> > > >                  from drivers/clk/clk-fixed-mmio.c:13:
> > > > drivers/clk/clk-fixed-mmio.c: In function 'fixed_mmio_clk_setup':
> > > > ./arch/s390/include/asm/io.h:29:17: error: implicit declaration of function 'iounmap'; did you mean 'vunmap'? [-Werror=implicit-function-declaration]
> > > >    29 | #define iounmap iounmap
> > > >       |                 ^~~~~~~
> > > > drivers/clk/clk-fixed-mmio.c:33:9: note: in expansion of macro 'iounmap'
> > > >    33 |         iounmap(base);
> > > >       |         ^~~~~~~
> > > 
> > > These iorempa/iounmap not defined or declared are not related to my
> > > patches. S390 could set CONFIG_PCI=n, however its ioremap/iounmap code
> > > are all defined in arch/s390/pci/pci.c. Means its ioremap/iounmap code
> > > depends on CONFIG_PCI enabling. So those drivers invoking iomem
> > > functions, (e.g ioremap(), devm_ioremap(), etc) all will be failed to
> > > build if CONFIG_PCI=n on s390.
> > > 
> > > All these errors have been fixed in my another patchset.
> > > 
> > > https://lore.kernel.org/all/20230707135852.24292-1-bhe@xxxxxxxxxx/T/#u
> > 
> > Sorry for the duplicate reports and late reply.
> > 
> > We searched the log of kernel test robot and got the following clues
> > for this case:
> > 
> > This is a randconfig build test, so the kconfig happened to set
> > CONFIG_PCI=n and CONFIG_COMMON_CLK_FIXED_MMIO=y, and it is good to
> > build the clk-fixed-mmio driver in such case before, but it raises a
> > build error after applying your patches, so the bot thought that a new
> > build error was introduced and sent reports to you.
> > 
> > == without the patches (v6.5-rc1 as example) ==
> > 
> > $ git checkout v6.5-rc1
> > HEAD is now at 06c2afb862f9 Linux 6.5-rc1
> > 
> > $ grep -e CONFIG_PCI -e CONFIG_COMMON_CLK_FIXED_MMIO .config
> > # CONFIG_PCI is not set
> > CONFIG_COMMON_CLK_FIXED_MMIO=y
> > 
> > $ COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross LLVM_IAS=1 W=1 ARCH=s390 drivers/clk/clk-fixed-mmio.o
> > ...
> > 
> > $ file drivers/clk/clk-fixed-mmio.o
> > drivers/clk/clk-fixed-mmio.o: ELF 64-bit MSB relocatable, IBM S/390, version 1 (SYSV), not stripped
> > 
> > == with the patches ==
> > 
> > $ git checkout b0f683e34a5b
> > HEAD is now at b0f683e34a5b s390: mm: convert to GENERIC_IOREMAP
> > 
> > $ grep -e CONFIG_PCI -e CONFIG_COMMON_CLK_FIXED_MMIO .config
> > # CONFIG_PCI is not set
> > CONFIG_COMMON_CLK_FIXED_MMIO=y
> > 
> > $ COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang ./make.cross LLVM_IAS=1 W=1 ARCH=s390 drivers/clk/clk-fixed-mmio.o
> > ...
> > drivers/clk/clk-fixed-mmio.c:33:2: error: call to undeclared function 'iounmap'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
> >    33 |         iounmap(base);
> >       |         ^
> > ./arch/s390/include/asm/io.h:29:17: note: expanded from macro 'iounmap'
> >    29 | #define iounmap iounmap
> >       |                 ^
> > drivers/clk/clk-fixed-mmio.c:33:2: note: did you mean 'vunmap'?
> > ./arch/s390/include/asm/io.h:29:17: note: expanded from macro 'iounmap'
> >    29 | #define iounmap iounmap
> >       |                 ^
> > ./include/linux/vmalloc.h:167:13: note: 'vunmap' declared here
> >   167 | extern void vunmap(const void *addr);
> >       |             ^
> > 12 warnings and 1 error generated.
> > make[4]: *** [scripts/Makefile.build:243: drivers/clk/clk-fixed-mmio.o] Error 1
> > make[3]: *** [scripts/Makefile.build:477: drivers/clk] Error 2
> > make[3]: Target 'drivers/clk/clk-fixed-mmio.o' not remade because of errors.
> > make[2]: *** [scripts/Makefile.build:477: drivers] Error 2
> > make[2]: Target 'drivers/clk/clk-fixed-mmio.o' not remade because of errors.
> > make[1]: *** [/home/yujie/linux/Makefile:2020: .] Error 2
> > make[1]: Target 'drivers/clk/clk-fixed-mmio.o' not remade because of errors.
> > make: *** [Makefile:234: __sub-make] Error 2
> > make: Target 'drivers/clk/clk-fixed-mmio.o' not remade because of errors.
> > 
> > 
> > After applying the patchset at
> > https://lore.kernel.org/all/20230707135852.24292-1-bhe@xxxxxxxxxx,
> > above situation cannot happen anymore because CONFIG_PCI and
> > CONFIG_COMMON_CLK_FIXED_MMIO can only be both enabled or both disabled,
> > so the issue has been resolved.
> 
> No, your process may need be improved.
> 
> On linus's master branch, you can pass compiling on
> drivers/clk/clk-fixed-mmio.o, but you absolutely will fail during linking
> stage. As I have explained, ioremap()/iounmap()/ioremap_xx() are all
> defined in arch/s390/pci/pci.c. Setting CONFIG_PCI=n will make you not
> be able to find the implementation of ioremap()/iounmap(). Don't you
> finish the whole building process of kernel image and modules?

Sorry I didn't make it very clear in the last mail. We also got the
failure in link stage when testing on mainline. After applying your
patch, it became an error in compile stage and won't reach link stage
anymore. In other words, your patch helped to expose an existing issue
earlier from linking to compiling. Our bot cannot handle such case very
well for now since the compiling error and linking error are very
different. Of course this should be a false positive report and your
patch should not be blamed for exposing an existing issue. Sorry for
any misleading or disturbing. We will consider some optimizations for
similar cases.

Thanks,
Yujie

> Please see below building log, the linking is failed. I got a new s390x
> machine, and git clone linus's tree and build with randconfig from this
> lkp report. 
> 
> When I made below patch and tested, I also only git clone linus's latest
> kernel tree. I didn't apply any patch. The current lkp report and your
> checking could be misleading.
> 
> [PATCH 0/8] Make several Kconfig options depend on HAS_IOMEM
> https://lore.kernel.org/all/20230707135852.24292-1-bhe@xxxxxxxxxx,
> 
> =====
>   AR      drivers/iio/built-in.a
>   AR      drivers/built-in.a
>   AR      built-in.a
>   AR      vmlinux.a
>   LD      vmlinux.o
>   OBJCOPY modules.builtin.modinfo
>   GEN     modules.builtin
>   MODPOST vmlinux.symvers
>   UPD     include/generated/utsversion.h
>   CC      init/version-timestamp.o
>   LD      .tmp_vmlinux.kallsyms1
> ld: drivers/clk/clk-fixed-mmio.o: in function `fixed_mmio_clk_setup':
> clk-fixed-mmio.c:(.text+0x44): undefined reference to `of_iomap'
> ld: clk-fixed-mmio.c:(.text+0x9c): undefined reference to `iounmap'
> ld: drivers/pcmcia/cistpl.o: in function `set_cis_map':
> cistpl.c:(.text+0x52a): undefined reference to `ioremap'
> ld: cistpl.c:(.text+0x602): undefined reference to `iounmap'
> ld: cistpl.c:(.text+0x650): undefined reference to `iounmap'
> ld: cistpl.c:(.text+0x668): undefined reference to `ioremap'
> ld: drivers/pcmcia/cistpl.o: in function `release_cis_mem':
> cistpl.c:(.text+0x85c): undefined reference to `iounmap'
> make[2]: *** [scripts/Makefile.vmlinux:36: vmlinux] Error 1
> make[1]: *** [/root/linux/Makefile:1238: vmlinux] Error 2
> make: *** [Makefile:234: __sub-make] Error 2
> 
> 





[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux