Re: [PATCH v3 09/11] s390: mm: Convert to GENERIC_IOREMAP

Niklas Schnelle
2022-10-10T11:54:00Z

On Mon, 2022-10-10 at 18:38 +0800, Baoquan He wrote:
> On 10/09/22 at 09:54pm, kernel test robot wrote:
> > Hi Baoquan,
> >
> > I love your patch! Yet something to improve:
> >
> > [auto build test ERROR on linus/master]
> > [also build test ERROR on next-20221007]
> > [cannot apply to akpm-mm/mm-everything openrisc/for-next deller-parisc/for-next s390/features v6.0]
> > [If your patch is applied to the wrong git tree, kindly drop us a note.
> > And when submitting patch, we suggest to use '--base' as documented in
> > https://git-scm.com/docs/git-format-patch#_base_tree_information]
> >
> > url: https://github.com/intel-lab-lkp/linux/commits/Baoquan-He/mm-ioremap-Convert-architectures-to-take-GENERIC_IOREMAP-way/20221009-183524
> > base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git a6afa4199d3d038fbfdff5511f7523b0e30cb774
> > config: s390-buildonly-randconfig-r006-20221009
> > compiler: s390-linux-gcc (GCC) 12.1.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://github.com/intel-lab-lkp/linux/commit/69f65149d2e87de076edbb2b4dd9532f8f57dd8b
> > git remote add linux-review https://github.com/intel-lab-lkp/linux
> > git fetch --no-tags linux-review Baoquan-He/mm-ioremap-Convert-architectures-to-take-GENERIC_IOREMAP-way/20221009-183524
> > git checkout 69f65149d2e87de076edbb2b4dd9532f8f57dd8b
> > # save the config file
> > mkdir build_dir && cp config build_dir/.config
> > COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=s390 SHELL=/bin/bash
> >
> > If you fix the issue, kindly add following tag where applicable
> > > Reported-by: kernel test robot <lkp@intel.com>
> >
> > All errors (new ones prefixed by >>):
> >
> > s390-linux-ld: mm/ioremap.o: in function `ioremap_prot':
> > > > ioremap.c:(.text+0x9a): undefined reference to `arch_ioremap'
> > s390-linux-ld: mm/ioremap.o: in function `iounmap':
> > > > ioremap.c:(.text+0x234): undefined reference to `arch_iounmap'
> > s390-linux-ld: drivers/dma/qcom/hidma.o: in function `hidma_probe':
> > hidma.c:(.text+0x4b46): undefined reference to `devm_ioremap_resource'
> > s390-linux-ld: hidma.c:(.text+0x4b9e): undefined reference to `devm_ioremap_resource'
>
> The above compiling errors are caused by unsetting CONFIG_PCI in
> s390-buildonly-randconfig-r006-20221009 attached. I keep the items for
> reference. Because s390 puts io mem functions in arch/s390/pci/pci.c.
> While building arch/s390/pci/pci.c in needs CONFIG_PCI enabled. I don't
> think disabling CONFIG_PCI in s390x makes sense in reality, except of
> the randconfig testing.
>
> Hi Niklas, lkp
>
> What do you think about this? We can just ignore this building error
> with randconfig in lkp?

Hmm, that's a bummer. As s390 systems (aka mainframes) do have classic
channel devices for networking and permanent storage that are currently
even more common than PCI devices you can definitely have a fully
functional system with CONFIG_PCI=n. Also the drivers for these channel
devices do not use ioremap() which is only used for PCI, so in theory
it should be fine not to have ioremap() for CONFIG_PCI=n.

I think the reason for this concrete failure to compile is a missing
HAS_IOMEM dependency for CONFIG_QCOM_HIDMA. I'm not sure how many other
cases there are though as I think we might be the only ones where
HAS_IOMEM is only sometimes available (it depends on CONFIG_PCI for
us). Ideally I think we would have the driver dependencies. I'm a bit
confused though since in the current code it looks to me like
ioremap_prot() will be declared but not defined for CONFIG_PCI=n too as
far as I can tell at least.

>
> > --
> > 0-DAY CI Kernel Test Service
> > https://01.org/lkp
> > #
> > # Automatically generated file; DO NOT EDIT.
> > # Linux/s390 6.0.0 Kernel Configuration
> > #
> ......
> > # end of General setup
> >
> > CONFIG_MMU=y
> ......
> > # Device Drivers
> > #
> > CONFIG_HAVE_PCI=y
> > # CONFIG_PCI is not set
> ......
>