On Mon, Feb 27, 2023, at 15:28, Dmitry Rokosov wrote: > Hello Neil! > > On Mon, Feb 27, 2023 at 09:15:04AM +0100, neil.armstrong@xxxxxxxxxx wrote: > > [...] > >> I'm aware Amlogic also runs their kernel as 32bit to gain a few kbytes >> of memory, but those processors are ARMv8 and the arm64 arch code >> has been designed for those CPUs. >> >> So far I didn't find a single good reason to add 32bit support for >> ARMv8 Amlogic based SoCs, if you have a solid reason please share. > > I totally agree with you, but I suppose it's fully related to 'big' > Amlogic SoC like S905_ or A311_ series. A113L (aka 'a1') is > a cost-efficient dual-core SoC which is used for small, cheap solutions > with cheap components. Every cent is important during BoM development. > That's why usually ODMs install small ROM and RAM capacity, and each > megabyte is important for RAM/ROM kernel and rootfs footprints. > Why am I talking about rootfs? For such small projects a good > choice is buildroot rootfs assembling framework. Unfortunatelly, > buildroot doesn't support 'compat' mode when kernel and userspace have > a different bitness. In the internal project, we save several > percents of ROM/RAM free space using 32-bit configuration (mostly rootfs > ROM space, to be honest). Therefore, for such 'little' cost-efficient > SoCs we can make an exception and support 32-bit configuration, from my > point of view. > > What do you think about that? I would argue that is a problem with buildroot, and using a 32-bit kernel is not something we should encourage over fixing buildroot to do it right, or building the kernel separately from the rootfs. We do allow building support for a couple of ARMv8 SoCs in 32-bit mode, but that is usually because they ship with a 32-bit bootrom and cannot actually run a 64-bit kernel. The overhead of running a 64-bit kernel is usually a few megabytes compared to a 32-bit kernel, to store the larger kernel .text/.data segments, per-thread stack and page tables as well as 'page', and 'inode' structures. I see that A1 only supports DDR3 and DDR4 memory, so I assume that there are always at least 128MB of total RAM available, or 512MB for the most cost-effective size with a single memory chip. My feeling is that for the 256MB configuration, it is very hard to argue for a 32-bit kernel because of the countless downsides, and even for the 128MB configuration, I would still try to avoid it out of principle. Arnd