Linux nüvəsində köhnə ARM prosessorlarının dəstəyinin dayandırılması planı

Arnd Bergmann, the person responsible for kernel packages at SUSE, published on the Linux kernel developers' mailing list a plan to remove legacy CPU support for ARM and related ABIs, instruction sets, and kernel capabilities from the kernel and GCC-based build tools. The plan is currently at the RFC stage, meaning it is open for community discussion. If approved, the removal of old ARM processors is proposed to begin with Linux kernel version 6.12, expected to be released in December. The first candidates for removal are ARMv4 (without removing ARMv4T), iWMMXt, BE32, and OABI.

The end of support for old ARM CPUs in the kernel coincides with their phasing out in GCC — some of the CPUs presented for removal are already unsupported in newer GCC branches, while others are planned for removal in future releases, simplifying the modernization and implementation of new features in the compiler. The removal of architecture support in GCC will require the removal of its support from the kernel in case the minimum supported GCC version by the kernel is raised (currently, a minimum of GCC 5.1 is required to build the kernel).

The architectures, chips, and extensions proposed for removal from the kernel:

  • ARMv3 — support has already been discontinued in GCC 9.
  • ARMv4 — used for still common StrongARM and FA526 processors, with the newest of these chips released around 20 years ago. Support for ARMv4 has ended in Debian 5.0. It is proposed to first discontinue support for ARMv4 in GCC, and a few years later in the kernel.
  • ARMv4T — there are 6 families of SoCs with ARM720T, ARM920T, and ARM922T cores, which are more widespread than ARMv4-based SoCs. Support for ARMv4T has ended in Debian 9.0. The kernel plans to discontinue support for ARMv4T no sooner than the support for ARMv5 ends.
  • ARMv5 — used in about 1/3 of all the platforms supported by the kernel, but most of these platforms are nearing the end of their lifecycle. Debian continues to support ARMv5, but due to the absence of FPU and atomic operations, maintaining support is becoming increasingly difficult and, likely soon, the Debian port for ARMv5 will be moved to unofficial status.
  • Initial generations of ARMv6 — used in SoCs such as ARM1136r0p (NXP i.MX31) and OMAP24xx (Nokia N8xx), but their support requires hacks to work in SMP kernels.
  • ARMv6K — used in ARM1176 (Raspberry Pi 1, AST2500) and ARM1136r1. There are no obstacles to discontinuing support in the kernel, but in distributions, challenges arise due to non-conformance to the typical armv7-a+vfpv3-d16 set.
  • ARMv7-M — Cortex-M3/M4/M7 əsaslı mikroontrollerlərdə istifadə olunur, bunlar yaddaş idarəetmə blokları (MMU) olmayan çip nüvələrinin sonuncularıdır. MMU olmayan sistemlər üçün nüvələrdə iş 2017-ci ildən dayandırılıb, bu cür çiplər üçün RTOS-lar, məsələn, Zephyr-in inkişafına keçid edilib. ARMv7-M-ə dəstəyin 2027-ci ildən, inkişafın dayandırılmasından 10 il sonra silinməsi tövsiyə olunur, buna baxmayaraq GCC-də dəstəyin davam etdiyi bildirilir.
  • iWMMXt — nüvədə artıq ARMv7 PJ4 CPU (MMP2, Berlin) ilə dəstək dayandırılıb, bundan sonra bu təlimat dəstini istifadə edən mövcud sistemlər qalmayıb. iWMMXt üçün dəstək artıq Clang-da dayandırılıb və GCC-dən silinməsi təklif olunub.
  • BE32 (big endian ARMv5) — yalnız Intel IXP4xx SoC-də istifadə edilir. Köhnə Debian versiyalarında yalnız little-endian rejimi dəstəklənir, amma sürücülərdə hələ də həll olunmamış problemlər var. BE32 dəstəyinin GCC və nüvədən silinməsi tövsiyə olunur, çünki son illərdə sürücülərdə heç kim bu problemləri həll etməyə cəhd etməyib.
  • BE8 (big-endian ARMv7) — bir çox sürücüdə problemlərlə üzləşir, test etmə işləri dayandırılıb və mövcud cihazlar haqqında məlumat yoxdur. BE8 rejimi, big-endian sistemlərdə istifadəçi məkan komponentlərinin test edilməsi üçün maraqlı ola bilər, buna görə BE8 dəstəyinin nüvə və GCC-də ən azı bir neçə il saxlanılması planlaşdırılır ki, o, problem yaratmağa başlamazdan əvvəl.

Linux nüvəsindən silinməsi təklif olunan imkanlar:

  • ATAGS (ARM Tag-Area) istifadə olunan param_struct strukturu — 2001-ci ildən etibarən köhnəlmiş hesab olunur, lakin RiscPC və Footbridge platformaları üçün kodda hələ də istifadə olunur.
  • ATAGS strukturu əsasında parametrlər faylları (Cihaz Ağacına qədər konfiqurasiya məlumatlarını ötürmək üçün istifadə olunub) — nüvədə ATAGS istifadə edən 10 platforma ilə əlaqəli 29 fayl qalır.
  • OABI (Old ABI, ARM arxitekturası üçün köhnə ABI) — artıq demək olar ki, hər yerdə EABI (Embedded ABI) istifadə edilir. OABI bir çox səhvlərə səbəb olur, çünki sürücü inkişaf etdiriciləri bununla bağlı bəzi xüsusiyyətləri nəzərə almağı dayandırıblar. OABI-nin istifadəçilər üçün komponentlərin hazırlanmasında dəstəyi GCC 4.8-də dayandırılıb, lakin nüvə üçün «-mabi=apcs-gnu» bayrağı saxlanılıb. OABI-ni saxlamaq tövsiyə olunur, lakin səhvən daxil olmağı çətinləşdirmək.
  • OABI ilə uyğunluq rejimi (OABI_COMPAT) — OABI üçün hazırlanmış icra olunan faylları EABI ilə nüvə istifadə edərək icra etməyə imkan tanıyır. ioctl ilə uyğun gəlmədiyi üçün sürücülərdə xüsusi problemlər yaranır, lakin bu rejimin dəstəklənməsinin çətinlikləri OABI ilə nüvələrin dəstəklənməsindən xeyli azdır. StrongARM dəstəyini saxlamaq üçün OABI və ya OABI_COMPAT dəstəyinin saxlanması məqsədəuyğun olacaq.
  • NWFPE (No Floating Point Emulator, üzməli əməliyyatlarla işləyən emulyator) — silmək üçün patçlar 11 il əvvəl təklif edilib, lakin NWFPE, OABI üçün toplanan istifadəçi sahəsi komponentlərinin işləməsi üçün tələb olunur, buna görə də NWFPE dəstəyi OABI və ya OABI_COMPAT dəstəyi olduğu müddətcə saxlanılmalıdır.
  • Highmem (1 GB-dan sonra yaddaşın idarə olunması üçün istifadə olunur) — əksər ARM sistemləri highmem aktiv olmadan işləyə bilər və ya ilk 2GB fiziki yaddaşa daxil olmaq üçün CONFIG_VMSPLIT_2GB istifadə edə bilər. LPAE (Cortex-A7/A15) ilə sistemlərdə 4 GB RAM-a girişin təşkili üzərində iş gedir, tamamlandıqdan sonra Highmem dəstəyi silinə bilər.
  • Sparsemem — highmem tələb edən sistemlər üçün tələb olunur.

Silinməsi təklif olunan platformalar:

  • RiscPC — nüvə tərəfindən dəstəklənən ən qədim platformadır. ARMv3 dəstəyinin silinməsindən sonra GCC-də dəstəklənmir, yoldaş platformada nüvənin işləməsini test etməyə davam edir, lakin əsl istifadəçilərin olmadığı görünür, buna görə də yoldaşın marağı itirilərsə, dəstəyin dayandırılması mümkündür.
  • SA1100, Footbridge — nostalji səbəblərdən saxlanılan köhnəlmiş platformalar. Bu platformalar üçün şemalarla bağlı faylların əksəriyyəti nüvə 6.3-də silinib, yalnız ipaq h3600, assabet, netwinder və ebsa285 cihazlarının dəstəyi qaldı. Silinməsi sualı yoldaşın niyyətlərindən asılıdır.
  • Gemini, Moxart — ARMv4 bazasında CPU istifadə edir. Çiplər 20 ildən çox əvvəl istehsal edilib, lakin onların dəstəyi əlavə dəstək tələb etmir, buna görə də StrongARM platforması silinənə qədər silinməsi mənasızdır.
  • PXA dəstəyi üçün fayllar — platforma tərk edilmiş vəziyyətdədir və köhnəlmişdir, maraq geri dönməzsə, 2025-in əvvəlində silinməsi planlaşdırılır.
  • OMAP1 — bir tərəfdən, Device Tree dəstəyi olmadan ARMv4T/ARMv5 üzərində tək platformadır və Device Tree-yə keçid ilə bağlı heç bir hərəkət görünmür, lakin digər tərəfdən, platformada istifadəçilər qalmaqdadır.
  • Nspire, AT91RM9200, CLPS711X, EP93xx, iMX1 — ARMv4T bazasında CPU istifadə edir. Şemaların Device Tree-yə köçürülməsi üzərində iş gedir, lakin onları dəstəkləmək mənası yalnız ARMv5 dəstəyi olduğu müddətcə qalır.
  • OMAP24xx — aktiv istifadəçiləri olan tək ARMv6 bazasında platformadır. Dəstəyin saxlanılması arm1136r0 CPU-nun dəstəklənməsindən asılıdır.
  • iMX31 — aktiv istifadəçilərin olub-olmaması ilə bağlı məlumat yoxdur, lakin OMAP2-dən əvvəl silmək mənasızdır.
  • S3C64xx (Cragganmore) — Device Tree dəstəyi olmayan yeganə ARMv6K bazasında platformadır. Platforma səs kodlaşdırıcılarını test etmək üçün istifadə edilməyə davam edir, buna görə də silinməsi digər plata köçürülənə qədər təxirə salınır.
  • Orion5x, mv78xx0 — silsilənin ləğv olunması məsələsi gələn ilin əvvəllərində nəzərdən keçiriləcək.
  • iMX35, WM8750, AST2500, BCM2835 — yaxşı dəstəklənir və aktiv istifadəçiləri var, hələ ləğv olunması planlaşdırılmır.
  • stm32f4/f7/h7 — MMU olmadan mikroprosessorlar, nüvədə dəstək davam edir və aktiv istifadəçiləri mövcuddur. Ləğv olunma məsələsi 2026-cı ildən etibarən nəzərdən keçiriləcək.

Mənbə: opennet.ru

DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər 🔥 DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər | ProHoster