
Разработчики Linux обсуждают отказ от поддержки некоторых старых процессоров, которые в настоящее время включены в основной состав ядра. Архитектуры многих процессоров, которые предлагается удалить, не обновлялись долгое время, поясняют разработчики в рассылке.
«После официального выхода Linux 5.10 я рассмотрел платформы ARM, которые долго не видели никаких обновлений. Три года назад я удалил несколько архитектур ЦП, однако имеет смысл сделать это оптом», — указывает разработчик Арнд Бергманн. Он отметил, что в список для удаления, вероятно, вошли и те процессоры, которые еще используются.
Бергманн предложил удалить из состава ядра Linux следующие процессоры ARM:
ASM9260
AXXIA
BCM/Kona
DigiColor
Dove
EFM32
NSPIRE
PicoXcell
PRIMA2
Spear
Tango
U300
VT8500
ZX
Как пишет Phoronix, решение о прекращении поддержки PicoXcell, выпущенного компанией PicoChip более десяти лет назад, уже принято. Также предлагается удалить некоторые платформы ARM, получившие обновления относительно недавно:
CLPS711x
CNS3xxx
EP93xx
Footbridge
Gemini
HISI
Highbank
IOP32x
IXP4xx
LPC18xx
LPC32xx
MMP
Moxart
MV78xx0
Nomadik
OXNA
PXA
RPC
SA1100
Также есть несколько кандидатов на удаление среди не-ARM платформ:
H8300
C6X
SPARC/Sun4M
PowerPC/CELL (отдельно от кода PlayStation 3)
PowerPC/CHRP
PowerPC/AmigaOne
PowerPC/Maple
M68K для Apollo, HP300, Sun3 и Q40
MIPS JAZZ
MIPS Cobalt
Наконец, в список вошли некоторые старые платформы, которые, по мнению разработчиков, пора списать:
80486SX/DX
Alpha 2106x
IA64 Merced (Itanium первого поколения)
MIPS R3000/TX39xx
SuperH SH-2
68000/68328 (Dragonball)
старые модели PowerPC (после PowerPC 601)
Решение об удалении пока не принято; обсуждение началось в пятницу.
Ядро Linux 5.10 вышло в середине декабря. Оно относится к ветке LTS, что означает, что оно будет поддерживаться как минимум в течение следующих пяти лет. В новую версию вошло более 17 тыс. исправлений, 42% которых связаны с драйверами устройств.
NeoCode
Все это наводит на мысль о недостаточной модульности ядра и недостаточной поддержке модульности со стороны языка Си. Зачем удалять, если оно работает? Любой новый код по идее вообще никак не должен влиять на старый.
proninyaroslav
В связи с тем что ядро линукс по природе своей монолитно, почти всё находится в основной ветке, и это раздувает и так немалую кодовую базу. Без мейнтейнеров этого легаси ядро просто превратится в помойку.
alexxz
Это не ядро монолитно, а репозиторий исходного кода довольно монолитен. Не путайте пожалуйста. Само ядро довольно модульное ровно до той степени до которой модульность не вредит стабильности и производительности.
wigneddoom
Ага, сейчас, в сказках только. API драйверов менятся, новые алгоритмы и внутреядерные фреймворки вводятся. Новый код ещё как влият на старый, который нужно дописывать/переписывать, а тестировать не на чём и мантейнеров нет. И Си тут ни при чем.
mynameco
Ну ядро на то и ядро, к нему требований модульности нет.
А выглядит это скорей всего так, иструкция симд, это макрос, и в хедере огромная портянка из ифдифов под каждую платформу. И так для каждой инструкции. И это еще хороший вариант, если там целые функции под платформы, то очень много кода лишнего и время компиляции. А как это помодульнее сделать и чтобы не заваливать мусором код, сообщество еще не придумало.
AllexIn
Все HAL придумали, а сообщество Линукс — нет…
Не делает никто ifdef. Делают хал, который снаружи торчит интерфейсами, а внутри реализует конкретные платформозависимые вещи.
Проблемы в возможностях. Когда появляется очередная фича в процессорах — для старых надо сделать реализацию в HAL, ну или как минимум заглушку. А как это тестировать, если железа нет? И желающих этим заниматься тоже нет.
wigneddoom
Всё верно, кроме собщества Линукс. Никто ещё не придумал такой HAL. В темах про Win не зря плач Ярославны стоит, что драйвера из семёрки в 10-ке не работают, да и процессоры старые давно дропнули.
Из банального, ты делаешь лок-фри алгоритмы, а на старых cpu нет нормальных atomic операций.
AllexIn
Драйверы из семерки в десятке не работают не из-за HAL, а из-за изменения API.
API и HAL вещи перпендикулярные.
А это то, о чем я говорил. Только такие вещи всё равно обходятся. Только делать обход для процессора, которого нет на руках — крайне сложно.
NeoCode
То что драйвера семерки не работают в десятке это кстати тоже проблемы модульности. Как и то что драйвера семерки или десятки не работают в линуксе.
Да, это проблемы другого уровня (отсутствие стандартизированного на уровне ISO интерфейса драйвера, отсутствие возможности автогенерации адаптера драйвера для конкретной ОС по метаинформации, хранящейся в драйвере).
qw1
AllexIn
HAL это абстракция, стоимость которой напрямую зависит от совпадения архитектуры процессора с интерфейсом этой абстракции.
В идеальном случае HAL это просто обертка вокруг вызовов, как раз с нулевой стоимостью.
Но, т.к. процессоры имеют разную архитектуру — HAL не будет иметь нулевую стоимость на большинстве платформ, что естественно.
dimorphus
1. Зачем удалять, если оно работает?
Никто не знает, работает ли оно или нет. У разработчиков нет этого оборудования (его трудно найти, нового нет). Правки в код этих систем не вносили уже 5 лет. Люди, ответственные за поддержку этого кода самоустранились (потеряли интерес, сменили работу, и т.д.).
Код останется в прошлых версиях ядер и будет поддерживаться в LTS релизах.
2. Любой новый код по идее вообще никак не должен влиять на старый.
В ядре сильно влияет. Внешние интерфейсы сохраняют совместимость, внутренний API — нет.
dartraiden
Более того, подозреваю, что этого не знают даже сами владельцы устройств. Потому что вряд ли на такое железо ставят новые ядра.