Message ID | 20230707135852.24292-9-bhe@redhat.com |
---|---|
State | Accepted |
Commit | 7e08baf6a89c8758050a3593aedc949f44fe3413 |
Headers | show |
Series | None | expand |
On Fri, 07 Jul 2023 21:58:52 +0800, Baoquan He wrote: > On s390 systems (aka mainframes), it has classic channel devices for > networking and permanent storage that are currently even more common > than PCI devices. Hence it could have a fully functional s390 kernel > with CONFIG_PCI=n, then the relevant iomem mapping functions > [including ioremap(), devm_ioremap(), etc.] are not available. > > In LKP error report at below on s390: > ------ > ld: kernel/dma/coherent.o: in function `dma_init_coherent_memory': > coherent.c:(.text+0x102): undefined reference to `memremap' > ld: coherent.c:(.text+0x226): undefined reference to `memunmap' > ld: kernel/dma/coherent.o: in function `dma_declare_coherent_memory': > coherent.c:(.text+0x8b8): undefined reference to `memunmap' > ld: kernel/dma/coherent.o: in function `dma_release_coherent_memory': > coherent.c:(.text+0x9aa): undefined reference to `memunmap' > ------ > > In the config file, several Kconfig options are: > ------ > '# CONFIG_PCI is not set' > CONFIG_OF_EARLY_FLATTREE=y > CONFIG_DMA_DECLARE_COHERENT=y > ------ > > So, enabling OF_EARLY_FLATTREE will select DMA_DECLARE_COHERENT > and cause above building errors even though they are not needed > because CONFIG_PCI is disabled. > > Here let OF_EARLY_FLATTREE depend on HAS_IOMEM so that it won't > be built to cause compiling error if PCI is unset. > > Reported-by: kernel test robot <lkp@intel.com> > Closes: https://lore.kernel.org/oe-kbuild-all/202306211329.ticOJCSv-lkp@intel.com/ > Signed-off-by: Baoquan He <bhe@redhat.com> > Cc: Rob Herring <robh+dt@kernel.org> > Cc: Frank Rowand <frowand.list@gmail.com> > Cc: devicetree@vger.kernel.org > --- > drivers/of/Kconfig | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > Applied, thanks!
diff --git a/drivers/of/Kconfig b/drivers/of/Kconfig index e40f10bf2ba4..da9826accb1b 100644 --- a/drivers/of/Kconfig +++ b/drivers/of/Kconfig @@ -55,7 +55,7 @@ config OF_FLATTREE config OF_EARLY_FLATTREE bool - select DMA_DECLARE_COHERENT if HAS_DMA + select DMA_DECLARE_COHERENT if HAS_DMA && HAS_IOMEM select OF_FLATTREE config OF_PROMTREE
On s390 systems (aka mainframes), it has classic channel devices for networking and permanent storage that are currently even more common than PCI devices. Hence it could have a fully functional s390 kernel with CONFIG_PCI=n, then the relevant iomem mapping functions [including ioremap(), devm_ioremap(), etc.] are not available. In LKP error report at below on s390: ------ ld: kernel/dma/coherent.o: in function `dma_init_coherent_memory': coherent.c:(.text+0x102): undefined reference to `memremap' ld: coherent.c:(.text+0x226): undefined reference to `memunmap' ld: kernel/dma/coherent.o: in function `dma_declare_coherent_memory': coherent.c:(.text+0x8b8): undefined reference to `memunmap' ld: kernel/dma/coherent.o: in function `dma_release_coherent_memory': coherent.c:(.text+0x9aa): undefined reference to `memunmap' ------ In the config file, several Kconfig options are: ------ '# CONFIG_PCI is not set' CONFIG_OF_EARLY_FLATTREE=y CONFIG_DMA_DECLARE_COHERENT=y ------ So, enabling OF_EARLY_FLATTREE will select DMA_DECLARE_COHERENT and cause above building errors even though they are not needed because CONFIG_PCI is disabled. Here let OF_EARLY_FLATTREE depend on HAS_IOMEM so that it won't be built to cause compiling error if PCI is unset. Reported-by: kernel test robot <lkp@intel.com> Closes: https://lore.kernel.org/oe-kbuild-all/202306211329.ticOJCSv-lkp@intel.com/ Signed-off-by: Baoquan He <bhe@redhat.com> Cc: Rob Herring <robh+dt@kernel.org> Cc: Frank Rowand <frowand.list@gmail.com> Cc: devicetree@vger.kernel.org --- drivers/of/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)