Арнд Бергманн, Разработчик ядра Linux из ветки Arm-Soc и менеджер пакетов ядра в SUSE выпустил предложение в котором он кладет на стол проблема удаления ядра на базе GCC и создавать инструменты кода для поддержки старых процессоров ARM, связанных с ними ABI, наборов инструкций и возможностей ядра.
Арнд Бергманн упоминает, что основа предложения прекращения поддержки для процессоров ARM старый в кернеl связано с прекращением производства GCC, поскольку некоторые из процессоров, предложенных к удалению, больше не поддерживаются в последних ветках GCC, а другие планируется удалить в будущих выпусках.
Упомяните, что, применяя это, Будет облегчена модернизация и внедрение новых функций в компилятор. ИУдаление поддержки архитектуры в GCC потребует ее удаления из ядра, если будет увеличена минимальная версия GCC, поддерживаемая ядром (в настоящее время для компиляции ядра требуется как минимум GCC версии 5.1).
Между архитектурами, чипами и расширениями которые предлагается удалить из ядра, упоминаются следующие:
- ARMv3: Удален в GCC-9, поэтому в конечном итоге он будет удален из ядра по мере увеличения минимальной версии компилятора.
- ARMv4: Используется для процессоров StrongARM и FA526, до сих пор присутствует на некоторых платах. Даже самым новым чипам около 20 лет. Последней версией Debian, которая их поддерживала, была Lenny (5.0). Шесть семейств SoC с ядрами ARMv4T (ARM720T, ARM920T и ARM922T) по-прежнему поддерживаются. Хоть они и старые, но у них больше пользователей и разработчиков, чем у ARMv4. Debian Stretch (9.0) был последним, кто их поддерживал.
- ARMv5: Около трети поддерживаемых платформ используют ARMv5, но поддержка большинства из них близка к концу.
- ARMv6 ранний: включает ARM1136r0p в NXP i.MX31 и OMAP24xx, в основном в планшетах Nokia N8xx. Требуются специальные хаки для поддержки ядер с SMP. Существует патч, который меняет совместимость ARMv6 с ARMv7 на совместимость с ARMv5, но над ним нужно доработать.
- ARMv6K
АРМв7-М: Cortex-M3/M4/M7 — единственные ядра, поддерживаемые без MMU, в настоящее время на 5 платформах микроконтроллеров. Их могут удалить в 2027 году, но GCC все равно придется поддерживать их в других операционных системах. - iWMMXt: неизвестных оставшихся пользователей iWMMXt нет, а поддержка процессоров ARMv7 PJ4 была удалена. Он поддерживается только на Intel/Marvell PXA и MMP1.
- Ядро ARMv5 с прямым порядком байтов (BE32): Его использует только один SoC — Intel IXP4xx. Debian поддерживает его в режиме прямого порядка байтов, но драйверы в LE не работают.
- Ядро ARMv7 с прямым порядком байтов (BE8)
- Param_struct до ATAGS: Это было амортизировано в 2001 году и должно было быть устранено через «5 лет», что уже произошло.
- Файлы пластин на основе ATAGS: После описанной выше очистки на 29 платформах SoC осталось 10 файлов плат.
- Ядра OABI: Сегодня практически все используют EABI, а поддержка OABI была удалена как цель в GCC-4.8. Ядро по-прежнему можно собрать как OABI с -mabi=apcs-gnu, используемым по умолчанию в ядрах ARMv4/ARMv5.
- Режим совместимости OABI: Это позволяет запускать двоичные файлы OABI с ядром EABI.
- СЗЛПЭ
- Хаймем: Большинство машин ARM могут работать без поддержки highmem, используя CONFIG_VMSPLIT_2GB для адресации до 2 ГБ физической памяти. В 15 году появились более крупные машины с Cortex-A2012, которые быстро были заменены 64-битными чипами.
- Спарсемем: Ведется дискуссия об отмене поддержки традиционного спарсемема. Это также относится к машинам, которым требуется highmem, чтобы использовать всю свою оперативную память.
- РискПК: Это самая старая поддерживаемая платформа, которая в конечном итоге будет удалена, поскольку она не работает с GCC-9 или более поздними версиями из-за удаления ARMv3.
- SA1100, Пешеходный мост: другие платформы на базе StrongARM, актуальные только для ностальгии.
- Близнецы, Моксарт: Оба используют ядро процессора Faraday FA526, которое, как и StrongARM, реализует ARMv4 вместо ARMv4T с большим пальцем. Чипам также более 20 лет, но код ядра был обновлен и не требует обслуживания.
- Файлы платы PXA: В коде PXA остались два файла пластин, которые не были удалены два года назад, в надежде, что это поможет преобразованию в DT.
- ОМАП1: единственная платформа ARMv4T/ARMv5 без поддержки DT, что делает ее целью для удаления в какой-то момент.
- Nspire, AT91RM9200, CLPS711X, EP93xx, iMX1
- OMAP24xx
- iMX31, RealView/интегратор с 1136r0
- S3C64xx (Крагганмор): Это единственная плата ARMv6K без поддержки дерева устройств, и файл платы содержит такую же сложность, как и все остальные файлы плат вместе взятые. В Arch/arm/mach-s3c/Kconfig.s3c64xx указано, что его следует удалить в начале следующего года, что позволит провести большую очистку инфраструктуры и драйверов платформы.
- Файлы Orion5x, mv78xx0, dove board: Как и PXA, они были оставлены в ожидании прогресса в преобразовании DT, но ничего не произошло, за исключением некоторых незначительных исправлений в mv78xx0. Напротив, Debian удалил двоичный файл ядра orion5x, сославшись на отсутствие пользователей, поэтому вероятность его завершения гораздо меньше.
- iMX35, WM8750, AST2500, BCM2835: Все эти четыре платформы являются платформами ARMv6K и хорошо поддерживаются, хотя только AST2500 и BCM2835 имеют активную пользовательскую базу.
- Микроконтроллеры Stm32f4/f7/h7: Это единственные чипы Arm без MMU, которые продолжают развиваться, поскольку ST продолжает поддерживать своих существующих клиентов.
Наконец, следует отметить, что этот план все еще находится на стадии RFC, то есть опубликовано для обсуждения сообществом. В случае одобрения предлагается начать удаление старых процессоров ARM из ядра Linux 6.12, которое ожидается в декабре. Первыми кандидатами на удаление являются ARMv4 (без удаления ARMv4T), iWMMXt, BE32 и OABI.
источник: https://lkml.org