linux-yocto/drivers/of/Kconfig
Baoquan He 7e08baf6a8 of: make OF_EARLY_FLATTREE depend on HAS_IOMEM
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
Link: https://lore.kernel.org/r/20230707135852.24292-9-bhe@redhat.com
Signed-off-by: Rob Herring <robh@kernel.org>
2023-07-10 08:48:35 -06:00

2.7 KiB

SPDX-License-Identifier: GPL-2.0

config DTC bool

menuconfig OF bool "Device Tree and Open Firmware support" help This option enables the device tree infrastructure. It is automatically selected by platforms that need it or can be enabled manually for unittests, overlays or compile-coverage.

if OF

config OF_UNITTEST bool "Device Tree runtime unit tests" depends on !SPARC select IRQ_DOMAIN select OF_EARLY_FLATTREE select OF_RESOLVE help This option builds in test cases for the device tree infrastructure that are executed once at boot time, and the results dumped to the console.

  This option should only be enabled for a development kernel. The tests
  will taint the kernel with TAINT_TEST. The tests will cause ERROR and
  WARNING messages to print on the console. The tests will cause stack
  traces to print on the console.  It is possible that the tests will
  leave the devicetree in a corrupted state.

  The unittest output will be verbose.  Copy the output to a file
  via capturing the console output or via the dmesg command.  Process
  this file with scripts/dtc/of_unittest_expect to reduce the
  verbosity, test whether expected output is present, and to
  summarize the results.

  If unsure, say N here. This option is not safe to enable.

config OF_ALL_DTBS bool "Build all Device Tree Blobs" depends on COMPILE_TEST select DTC help This option builds all possible Device Tree Blobs (DTBs) for the current architecture.

  If unsure, say N here, but this option is safe to enable.

config OF_FLATTREE bool select DTC select LIBFDT select CRC32

config OF_EARLY_FLATTREE bool select DMA_DECLARE_COHERENT if HAS_DMA && HAS_IOMEM select OF_FLATTREE

config OF_PROMTREE bool

config OF_KOBJ def_bool SYSFS

Hardly any platforms need this. It is safe to select, but only do so if you

need it.

config OF_DYNAMIC bool "Support for dynamic device trees" if OF_UNITTEST select OF_KOBJ help On some platforms, the device tree can be manipulated at runtime. While this option is selected automatically on such platforms, you can enable it manually to improve device tree unit test coverage.

config OF_ADDRESS def_bool y depends on !SPARC && (HAS_IOMEM || UML)

config OF_IRQ def_bool y depends on !SPARC && IRQ_DOMAIN

config OF_RESERVED_MEM def_bool OF_EARLY_FLATTREE

config OF_RESOLVE bool

config OF_OVERLAY bool "Device Tree overlays" select OF_DYNAMIC select OF_FLATTREE select OF_RESOLVE help Overlays are a method to dynamically modify part of the kernel's device tree with dynamically loaded data. While this option is selected automatically when needed, you can enable it manually to improve device tree unit test coverage.

config OF_NUMA bool

endif # OF