On Wed, Aug 02, 2023 at 08:17:32PM +0200, Arnd Bergmann wrote: > On Wed, Aug 2, 2023, at 19:37, Linus Torvalds wrote: > > On Wed, 2 Aug 2023 at 09:16, Nathan Chancellor <nat...@kernel.org> wrote: > >> > >> We see this warning with ARCH=arm64 defconfig + CONFIG_CPU_BIG_ENDIAN=y. > > > > Oh Christ. I didn't even realize that arm64 allowed a BE config. > > > > The config option goes back to 2013 - are there actually BE user space > > implementations around? > > At least NXP's Layerscape and Huawei's SoCs ended up in big-endian > appliances, running legacy software ported from mips or powerpc. > I agree this was a mistake, but that wasn't nearly as obvious ten > years ago when there were still new BE-only sparc, mips and powerpc > put on the market -- that really only ended in 2017. > > > People, why do we do that? That's positively crazy. BE is dead and > > should be relegated to legacy platforms. There are no advantages to > > being different just for the sake of being different - any "security > > by obscurity" argument would be far outweighed by the inconvenience to > > actual users. > > > > Yes, yes, I know the aarch64 architecture technically allows BE > > implementations - and apparently you can even do it by exception > > level, which I had to look up. But do any actually exist? > > > > Does the kernel even work right in BE mode? It's really easy to miss > > some endianness check when all the actual hardware and use is LE, and > > when (for example) instruction encoding and IO is then always LE > > anyway. > > This was always only done for compatibility with non-portable > software when companies with large custom network stacks argued > that it was cheaper to build the entire open source software to > big-endian than port their own product to little-endian. ;-) > > We (Linaro) used to test all toolchain and kernel releases in > big-endian mode as member companies had customers that asked > for it, but that stopped a while ago as those legacy software > stacks either got more portable or got replaced over time. > > Many Arm systems won't boot BE kernels any more because UEFI > firmware only supports LE, or because of driver bugs. > Virtual machines are still likely to work fine though. > I'm fairly sure that all Arm Cortex and Neoverse cores still\ > support BE mode in all exception levels, OTOH at least Apple's > custom CPUs do not implement it at all.
Yes, that's right. The CPUs we have *do* tend to support BE, but practically there isn't any software to run on them. I asked about removing it a few years ago: https://lore.kernel.org/linux-arm-kernel/20191011102747.lpbaur2e4nqyf7sw@willie-the-truck/ but Hanjun said that Huawei are using it, so it stayed. Will