ARM: make ARCH_MULTIPLATFORM user-visible
authorArnd Bergmann <arnd@arndb.de>
Wed, 27 Jul 2022 12:08:24 +0000 (14:08 +0200)
committerArnd Bergmann <arnd@arndb.de>
Tue, 30 Aug 2022 09:18:09 +0000 (11:18 +0200)
Some options like CONFIG_DEBUG_UNCOMPRESS and CONFIG_CMDLINE_FORCE are
fundamentally incompatible with portable kernels but are currently allowed
in all configurations. Other options like XIP_KERNEL are essentially
useless after the completion of the multiplatform conversion.

Repurpose the existing CONFIG_ARCH_MULTIPLATFORM option to decide
whether the resulting kernel image is meant to be portable or not,
and using this to guard all of the known incompatible options.

This is similar to how the RISC-V kernel handles the CONFIG_NONPORTABLE
option (with the opposite polarity).

A few references to CONFIG_ARCH_MULTIPLATFORM were left behind by
earlier clanups and have to be removed now up.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
arch/arm/Kconfig
arch/arm/Kconfig.debug
arch/arm/kernel/devtree.c
arch/arm/mach-dove/Makefile
arch/arm/mach-mv78xx0/Makefile
arch/arm/mach-mvebu/Makefile
arch/arm/mach-orion5x/Makefile

index 5375a6ac0cd24523c7ad3c52d3731b2559e3c3b2..380455005514188f3a4162aacb292d9bd6e77e5e 100644 (file)
@@ -320,7 +320,19 @@ config ARCH_MMAP_RND_BITS_MAX
        default 16
 
 config ARCH_MULTIPLATFORM
-       def_bool MMU && !(ARCH_FOOTBRIDGE || ARCH_RPC || ARCH_SA1100)
+       bool "Require kernel to be portable to multiple machines" if EXPERT
+       depends on MMU && !(ARCH_FOOTBRIDGE || ARCH_RPC || ARCH_SA1100)
+       default y
+       help
+         In general, all Arm machines can be supported in a single
+         kernel image, covering either Armv4/v5 or Armv6/v7.
+
+         However, some configuration options require hardcoding machine
+         specific physical addresses or enable errata workarounds that may
+         break other machines.
+
+         Selecting N here allows using those options, including
+         DEBUG_UNCOMPRESS, XIP_KERNEL and ZBOOT_ROM. If unsure, say Y.
 
 menu "Platform selection"
        depends on MMU
@@ -1609,6 +1621,7 @@ config CMDLINE_EXTEND
 
 config CMDLINE_FORCE
        bool "Always use the default kernel command string"
+       depends on !ARCH_MULTIPLATFORM
        help
          Always use the default kernel command string, even if the boot
          loader passes other arguments to the kernel.
index 655f84ada30f4df0e4f03a9cedde608c6a952309..c345775f035bc4c3c3d86a1a3591554529d5d509 100644 (file)
@@ -1904,6 +1904,7 @@ config DEBUG_UART_8250_PALMCHIP
 
 config DEBUG_UNCOMPRESS
        bool "Enable decompressor debugging via DEBUG_LL output"
+       depends on !ARCH_MULTIPLATFORM
        depends on !(ARCH_FOOTBRIDGE || ARCH_RPC || ARCH_SA1100)
        depends on DEBUG_LL && !DEBUG_OMAP2PLUS_UART && \
                     (!DEBUG_TEGRA_UART || !ZBOOT_ROM) && \
index 02839d8b6202027ad34743c2537268075dc61f71..264827281113b02cc66b03e4a6a752607eb95ef6 100644 (file)
@@ -194,14 +194,12 @@ const struct machine_desc * __init setup_machine_fdt(void *dt_virt)
 {
        const struct machine_desc *mdesc, *mdesc_best = NULL;
 
-#if defined(CONFIG_ARCH_MULTIPLATFORM) || defined(CONFIG_ARM_SINGLE_ARMV7M)
        DT_MACHINE_START(GENERIC_DT, "Generic DT based system")
                .l2c_aux_val = 0x0,
                .l2c_aux_mask = ~0x0,
        MACHINE_END
 
        mdesc_best = &__mach_desc_GENERIC_DT;
-#endif
 
        if (!dt_virt || !early_init_dt_verify(dt_virt))
                return NULL;
index e83f6492834d4ef2b7dedaf7c53c1ec25331c019..da373a5768bae513ec18be64a607a0bd59d7ba5d 100644 (file)
@@ -1,5 +1,5 @@
 # SPDX-License-Identifier: GPL-2.0
-ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/arch/arm/plat-orion/include
+ccflags-y := -I$(srctree)/arch/arm/plat-orion/include
 
 obj-y                          += common.o
 obj-$(CONFIG_DOVE_LEGACY)      += irq.o mpp.o
index a839e960b8c6f2fb6961090c29eb27c4cbf475c3..50aff70065f2edb326a6e1be25d380736408551d 100644 (file)
@@ -1,5 +1,5 @@
 # SPDX-License-Identifier: GPL-2.0
-ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/arch/arm/plat-orion/include
+ccflags-y := -I$(srctree)/arch/arm/plat-orion/include
 
 obj-y                          += common.o mpp.o irq.o pcie.o
 obj-$(CONFIG_MACH_DB78X00_BP)  += db78x00-bp-setup.o
index cb106899dd7c8c220d75245add6342cc8cec1107..c21733cbb4fa4e4b3defdba9f2897e676fa1f734 100644 (file)
@@ -1,5 +1,5 @@
 # SPDX-License-Identifier: GPL-2.0
-ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/arch/arm/plat-orion/include
+ccflags-y := -I$(srctree)/arch/arm/plat-orion/include
 
 AFLAGS_coherency_ll.o          := -Wa,-march=armv7-a
 CFLAGS_pmsu.o                  := -march=armv7-a
index 1a585a62d5e67de4159d111847408d50c614fe23..572c3520f7fed55c4f77a4e6ee72bd9abea4e4ab 100644 (file)
@@ -1,5 +1,5 @@
 # SPDX-License-Identifier: GPL-2.0
-ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/arch/arm/plat-orion/include
+ccflags-y := -I$(srctree)/arch/arm/plat-orion/include
 
 obj-y                          += common.o pci.o irq.o mpp.o
 obj-$(CONFIG_MACH_DB88F5281)   += db88f5281-setup.o