Как стать автором
Обновить

Торвальдс предложил отказаться от поддержки процессоров i486, так как они не умеют работать с инструкцией cmpxchg8b

Время на прочтение1 мин
Количество просмотров19K
Всего голосов 28: ↑28 и ↓0+28
Комментарии31

Комментарии 31

хм, а что там в Cc делает Michael Larabel - тип, который пилит phoronix? Он тоже из этих, мейнтейнеров arch/x86?

Распространяет новости, как минимум :)

Вот пруф: https://www.phoronix.com/news/Intel-i486-Linux-Possible-Drop

могу предположить, что линус хотел получить максимально возможный отклик вроде «не делайте так, мы выпускаем железки на процессоре xxx, который не поддерживает эту команду, и нам важно иметь свежее ядро», чтобы быть уверенным, что это изменение не преждевременно

Думал написать "а те, у кого они еще есть, могут использовать OpenBSD"... Пошёл на сайт OpenBSD, а там "All CPUs compatible with the Intel Pentium or later".

Остаётся NetBSD

Те, у кого они есть, в основном используют их как музейные экспонаты. А на таких ПК вполне логично крутить и старые ядра. Если, например, я захочу собрать ретро-ПК, я же не буду туда ставить современную ОС.

Ну их где то надо брать старые ядра. Хорошо если они где то лежат еще готовые, и не факт, что старое ядро получится собрать из исходников с новым тулчейном.

тоже мне проблема.
поднял виртуалку с debian 3 (или ещё чем-то подобным по вкусу) и собирай.

Старое ядро можно взять из условной слаки 7 или даже 4. До сих пор люди ими пользуются, как раз на ретро компах

5.15 в данном случае "старое ядро".

А исправления найденных уязвимостей?

если их в музее не подключать к сети, то уязвимости не страшны

Ну так и пеньки выкинуть, ведь cmpxchg8b в них глючная. F0 bug.

Если я правильно помню, баг не в том, что команда как-то не так работает при штатном использовании, а в том, что будучи предварена (ненужным) lock она вешает процессор.

Баг в том, что команда предназначена для операций с восемью битами, но только в первых пеньках ей можно передать аргумент в 16/32 бита, тем самым вызвать нештатную ситуацию. Ну а lock, да, он попросту препятствует выводу процессора из состояния неопределённости, т.е. получаем аппаратно повисший проц.

НЛО прилетело и опубликовало эту надпись здесь

Если вам важна поддержка этих процессов в свежих ядрах, напишите в список рассылки, поставьте Линуса в cc

если дело в поддержке только одной инструкции - то ее можно на бинарном уровне сэмулировать (прямо в объектных файлах, перед линковкой).

Я ж не думаю, что кто-то ее вставляет на уровне С\С++ в код ?

Вопрос не на прикладном уровне, инструкция нужна самому ядру.

и что - есть какие-то препятствия вместо нее использовать набор других инструкций, получая в итоге такой же результат ?

Не могу сказать точно, но могу предположить, что нужно вместо просто вставки cmpxchg8b иметь код эмуляции, и главное чтобы кто-то это всё поддерживал ради практически неиспользуемого 486.

По мнению создателя Linux, нужно перестать пытаться эмулировать работу данной инструкции на процессорах, которые уже никто не использует.

Так и происходит
Чем им не угодил процессор-то… Памяти у таких машин все равно мало, 64-битные идентификаторы вряд ли будут полезны, для 32-битных вроде есть команда-аналог.
Про 80386 — тоже грустно, хоть и понятно, что он весьма стар. Ну могли бы для истории оставить ветку…
Ах, да, для современных свистоперделок 4Гб оперативки недостаточно, без PAE уже не обойтись… Так у 80386 и i486 столько не поставишь все равно, разве что на их основе кто сделает «современный» процессор для встраиваемых решений. А зачем процессору с частотой 40Мгц гигабайт оперативки — ума не приложу, как и процессору с частотой 133Мгц, кстати, тоже… И никто не будет использовать их на полную катушку, вряд ли даже GUI станут запускать — не дождешься же.

а в чём проблема использовать старые ядра?


вот ядро с поддержкой 80386 получало патчи до 2018 года (ещё пять лет после выхода 3.8, в котором поддержку 80386 выпилили):
https://cdn.kernel.org/pub/linux/kernel/v3.0/ChangeLog-3.2.102


ядра с поддержкой 80486 также будут получать бэкпорты важных исправлений ещё несколько лет.

а в чём проблема использовать старые ядра?

Скорее всего, когда-нибудь может наступить тот момент, когда софт не будет с ним работать. Теоретически. Но можно ведь и не обновлять софт...

тут всё зависит от упоротости )))


смотрю на wifi-роутер:


Linux Wive-NG-MT 3.4.113.192 #1 SMP Sat Oct 5 17:02:13 +05 2019 mips GNU/Linux

человеку оказалось проще бэкпортировать wireguard и прочие радости в 3.4, чем натягивать sdk от mtk на современные ядра.
а в кинетиках на том же железе 4.9
а в openwrt 5.10 (и куча проблем с wifi, ибо непатченный код от mtk крив, а патчами никто из тех, кто пилит коммерческие прошивки, особо не делится).


и на что влияет версия ядра для конечного пользователя? да ни на что.

wifi-роутер
на что влияет версия ядра для конечного пользователя? да ни на что.

"Новый ботнет X насчитывает 100500 роутеров".


И чёт я уверен, что " проще бэкпортировать wireguard и прочие радости в 3.4" не значит "бекпортированы все патчи безопасности".

И чёт я уверен, что " проще бэкпортировать wireguard и прочие радости в 3.4" не значит "бекпортированы все патчи безопасности"

почему нет? если этим занимается команда на full-time.
если говорить именно про wive-ng, то в changelog «kernel» встречается чуть ли не в каждом релизе.


"Новый ботнет X насчитывает 100500 роутеров".

это, всё-таки, больше про userspace, чем про ядро.
уязвимости с rce в ядре бывают, конечно, но обычно или для их эксплуатации нужны какие-то очень экзотические условия, или поднимается шум, так что пропустить такое сложно.

Я даже несколько удивлён, что что-то настолько древнее всё ещё поддерживается.

НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Другие новости

Истории