Message ID | 20241204102904.1863796-3-arnd@kernel.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | ARM: platform and feature deprecation | expand |
On Wed, Dec 4, 2024 at 11:29 AM Arnd Bergmann <arnd@kernel.org> wrote: > From: Arnd Bergmann <arnd@arndb.de> > > As discussed on the mailing lists, there is no way to build OABI userspace > binaries any more since gcc-4.8, and now support is also getting dropped in > binutils, which will make it impossible to build pure OABI kernels at some > point in the future. > > I found no evidence of anyone still sing OABI userspace on embedded systems > that keep getting kernel updates, but there are a few desktop-class machines > that date back to the 1990s using Intel StrongARM processors that were > supported by old versions of Debian, Red Hat or the official Corel > Netwinder distribution. > > Add a much stricter Kconfig dependency for both native OABI and OABI_COMPAT > enabled kernels, only allowing either of them to be selected when building > a kernel that targets a StrongARM based machine. > > Link: https://lore.kernel.org/lkml/2831c5a6-cfbf-4fe0-b51c-0396e5b0aeb7@app.fastmail.com/ > Signed-off-by: Arnd Bergmann <arnd@arndb.de> For > arch/arm/configs/versatile_defconfig | 1 - Acked-by: Linus Walleij <linus.walleij@linaro.org> > diff --git a/arch/arm/configs/footbridge_defconfig b/arch/arm/configs/footbridge_defconfig (...) > CONFIG_ARCH_NETWINDER=y > +# CONFIG_AEABI is not set > CONFIG_FPE_NWFPE=y > CONFIG_FPE_NWFPE_XP=y > -# CONFIG_AEABI is not set Hm why do we need a separate netwinder_defconfig if this defconfig already supports it? I am occasionally booting the NetWinder and then I use this defconfig, the netwinder_defconfig wasn't even working for me. Do you want to propose a separate patch to delete netwinder_defconfig, otherwise I can send one. I think everyone (which is like ... 3 people) are using footbridge_defconfig. Yours, Linus Walleij
On Wed, Dec 4, 2024 at 8:59 AM Linus Walleij <linus.walleij@linaro.org> wrote: > Hm why do we need a separate netwinder_defconfig if this defconfig already > supports it? AFAIK footbridge_defconfig is for the "Compaq Personal Server", which is different than NetWinder. They could probably be reconciled by using devicetree and converting any platform devices. However testing could be a challenge, not sure who has working hardware anymore. > I am occasionally booting the NetWinder and then I use this defconfig, > the netwinder_defconfig wasn't even working for me. Interesting. I successfully used netwinder_defconfig a few years ago. I have several times thought about updating the netwinder, starting with a more modern bootloader (I got u-boot working at one point), so we no longer need ATAGS. However toolchain support is problematic ("bx" hack anyone?) and there are so many cheaper faster boards (RPi for example) which require much less effort. Regards -Ralph
On Wed, Dec 04, 2024 at 09:50:57AM -0500, Ralph Siemsen wrote: > On Wed, Dec 4, 2024 at 8:59 AM Linus Walleij <linus.walleij@linaro.org> wrote: > > > Hm why do we need a separate netwinder_defconfig if this defconfig already > > supports it? > > AFAIK footbridge_defconfig is for the "Compaq Personal Server", which > is different than NetWinder. They could probably be reconciled by > using devicetree and converting any platform devices. However testing > could be a challenge, not sure who has working hardware anymore. It's entirely possible to build one kernel that supports the EBSA285, NetWinder and Compaq Personal Server. They're all the same machine at the end of the day (PCI based SA110.) As long as the boot loaders pass the correct machine type, the correct board file will be selected to set things up. However, if I remember correctly, Compaq seemed to be anti-mainline, so didn't implement the machine ID and other things. I ended up implementing a shim around the kernel to make mainline bootable on the platform to correct the stuff that they couldn't be bothered to implement. I may be adversely blaming them, as history from back then is rather fuzzy, but I do remember mainline doesn't work because of all sorts of weirdness they did.
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index f8f127650ace..54f5cc12dea4 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -1161,8 +1161,7 @@ config ARM_PATCH_IDIV code to do integer division. config AEABI - bool "Use the ARM EABI to compile the kernel" if !CPU_V7 && \ - !CPU_V7M && !CPU_V6 && !CPU_V6K && !CC_IS_CLANG + bool "Use the ARM EABI to compile the kernel" if CPU_SA110 || CPU_SA1100 default y help The Arm EABI is the default ABI on all modern Linux @@ -1172,9 +1171,13 @@ config AEABI Everyone should enable this, as support for OABI user space was dropped in gcc-4.8 and most distributions after ca. 2013. + Support for OABI mode will be removed from the kernel + once Intel StrongARM CPUs are phased out. + config OABI_COMPAT bool "Allow old ABI binaries to run with this kernel (EXPERIMENTAL)" depends on AEABI && !THUMB2_KERNEL + depends on CPU_SA110 || CPU_SA1100 help This option preserves the old syscall interface along with the new (ARM EABI) one. It also provides a compatibility layer to @@ -1187,11 +1190,8 @@ config OABI_COMPAT selected, since there is no way yet to sensibly distinguish between calling conventions during filtering. - If you know you'll be using only pure EABI user space then you - can say N here. If this option is not selected and you attempt - to execute a legacy ABI binary then the result will be - UNPREDICTABLE (in fact it can be predicted that it won't work - at all). If in doubt say N. + Support for OABI_COMPAT will be removed from the kernel + once Intel StrongARM CPUs are phased out. config ARCH_SELECT_MEMORY_MODEL def_bool y diff --git a/arch/arm/configs/am200epdkit_defconfig b/arch/arm/configs/am200epdkit_defconfig index 22397d45f4a0..55c5c08a5f96 100644 --- a/arch/arm/configs/am200epdkit_defconfig +++ b/arch/arm/configs/am200epdkit_defconfig @@ -7,7 +7,6 @@ CONFIG_EXPERT=y # CONFIG_ARCH_MULTI_V7 is not set CONFIG_ARCH_PXA=y CONFIG_ARCH_GUMSTIX=y -# CONFIG_OABI_COMPAT is not set CONFIG_CMDLINE="console=ttyS0,115200n8 root=1f01 rootfstype=jffs2" CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y diff --git a/arch/arm/configs/axm55xx_defconfig b/arch/arm/configs/axm55xx_defconfig index 39b06d59d87a..9d14b987ee94 100644 --- a/arch/arm/configs/axm55xx_defconfig +++ b/arch/arm/configs/axm55xx_defconfig @@ -38,7 +38,6 @@ CONFIG_PCIE_AXXIA=y CONFIG_SMP=y CONFIG_NR_CPUS=16 CONFIG_HOTPLUG_CPU=y -CONFIG_OABI_COMPAT=y CONFIG_HIGHMEM=y CONFIG_ARM_APPENDED_DTB=y CONFIG_ARM_ATAG_DTB_COMPAT=y diff --git a/arch/arm/configs/footbridge_defconfig b/arch/arm/configs/footbridge_defconfig index 589b7b1df8c6..e8bf9847d35d 100644 --- a/arch/arm/configs/footbridge_defconfig +++ b/arch/arm/configs/footbridge_defconfig @@ -9,9 +9,9 @@ CONFIG_ARCH_MULTI_V4=y CONFIG_ARCH_FOOTBRIDGE=y CONFIG_ARCH_EBSA285_HOST=y CONFIG_ARCH_NETWINDER=y +# CONFIG_AEABI is not set CONFIG_FPE_NWFPE=y CONFIG_FPE_NWFPE_XP=y -# CONFIG_AEABI is not set CONFIG_MODULES=y CONFIG_PARTITION_ADVANCED=y CONFIG_ACORN_PARTITION=y diff --git a/arch/arm/configs/neponset_defconfig b/arch/arm/configs/neponset_defconfig index a8833b2ce335..7a7b6a896f85 100644 --- a/arch/arm/configs/neponset_defconfig +++ b/arch/arm/configs/neponset_defconfig @@ -6,12 +6,12 @@ CONFIG_ARCH_MULTI_V4=y CONFIG_ARCH_SA1100=y CONFIG_SA1100_ASSABET=y CONFIG_ASSABET_NEPONSET=y +# CONFIG_AEABI is not set CONFIG_ZBOOT_ROM_TEXT=0x80000 CONFIG_ZBOOT_ROM_BSS=0xc1000000 CONFIG_ZBOOT_ROM=y CONFIG_CMDLINE="console=ttySA0,38400n8 cpufreq=221200 rw root=/dev/mtdblock2 mtdparts=sa1100:512K(boot),1M(kernel),2560K(initrd),4M(root) load_ramdisk=1 prompt_ramdisk=0 mem=32M noinitrd initrd=0xc0800000,3M" CONFIG_FPE_NWFPE=y -# CONFIG_AEABI is not set CONFIG_PM=y CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y diff --git a/arch/arm/configs/versatile_defconfig b/arch/arm/configs/versatile_defconfig index 8e89debb5a5b..bb9eb9ccbbde 100644 --- a/arch/arm/configs/versatile_defconfig +++ b/arch/arm/configs/versatile_defconfig @@ -6,7 +6,6 @@ CONFIG_LOG_BUF_SHIFT=14 CONFIG_BLK_DEV_INITRD=y # CONFIG_ARCH_MULTI_V7 is not set CONFIG_ARCH_VERSATILE=y -CONFIG_OABI_COMPAT=y CONFIG_CMDLINE="root=1f03 mem=32M" CONFIG_FPE_NWFPE=y CONFIG_VFP=y