Should we continue to support ARMv6 and KZM/imx31

Currently, the KZM platform is the only ARMv6 platform that we support and supporting it requires a few work-arounds. In particular, to support thread-local identifiers (such as a TLS_BASE and the IPC buffer address) the kernel maps a common page into all address spaces in which it stores the values of these virtual registers.

It would be useful to know who is currently using this platform and how much interest there is in ongoing support for this platform.

Internally at Data61 we have discussed this before, and decided to keep the kzm/ARMv6 port around until it became a maintenance burden. I think we’ve hit this point. Most of our projects are using ARMv7 or ARMv8 and AFAIK there haven’t been any requests for ARMv6 support.

I think the CDDC is v6. But it can probably live with a frozen kernel source

From the verification side, ARMv7 is now the main platform. ARMv6/KZM is still very close and could be resurrected quickly, but is not actually supported right now. Dropping it would not have any major impact on verification (until somebody suddenly wants it again, of course ;-)).

My understanding is that older versions of ARMv6 that do not support process identifiers via co-processor registers (ARMv6 & ARMv6T2) are the main issue as they require the GLOBALS_FRAME to, in some part account for this.

That said, we could continue to support these architectures by reserving the general purpose platform register (r9) as a process identifier with the RFC-3 change (in a similar manner to RISC-V).

We could just require that code is compiled with -ffixed-r9 and use r9 for TLS. This would obviate the need for the GLOBALS_FRAME whilst maintaining support for ARMv6.

I don’t know of any on-going seL4 projects that need v6 support. I believe kernel.org removed the BSP for it back in 2015.

My vote is to remove support.

1 Like

@ihor.kuz do you know what arm version the CDDC is looking at using?

spoke to @ihor.kuz via email, we don’t have any projects using armv6.

If we ever want to run seL4 on Raspberry Pi Zero that’s an ARM11. But I don’t think that not being able to run in RPI zero would be a huge loss.

Versions of ARMv6 after ARMv6k are not a problem, it’s only the ARMv6 platforms without thread ID registers in CP15. This only includes the first two versions.

I don’t see any value in retaining this support. I say drop it.

What is required to support ARMv6 that we don’t get from our support of ARMv7?