LINUX.ORG.RU

Создан скрипт restore_agesa, возвращающий в БИОС coreboot удалённые AMD-платы

 , , , ,


2

5

Ранее, в прошлогоднем ноябре - вскоре после выхода БИОСа coreboot версии 4.18 - из него удалили всё AMD-железо семейств 14h/15h/16h, вышедших до появления PSP (Platform Security Processor). В качестве причины прекращения поддержки было объявлено, что опенсорсный код AMD AGESA не удовлетворяет некоторым требованиям, и его присутствие «мешает дальнейшей разработке coreboot» (в особенности корпоративным разработчикам). Но данный аргумент многим членам опенсорсного сообщества показался сомнительным - и в результате Майку Бэнону удалось создать скрипт restore_agesa, возвращающий в БИОС coreboot удалённые AMD-платы путём отката группы «плохих коммитов». В результате выяснилось:

  • с момента удаления AMD'шных плат было выпущено 4266 коммитов
  • из них лишь 38 коммитов (менее 1%) несовместимы с AMD'шным кодом по своей природе - или удаляют его / необходимые ему компоненты или вносят в основную часть исходников coreboot ломающие его изменения - в результате чего и требуется удаление их самих
  • остальные откатываемые 118 коммитов (примерно 2.7%) AMD'шному коду не противоречат - и «попадают под горячую руку» только из-за ошибок git revert'ов, вызванных цепной реакцией при попытке отката 38 «плохих коммитов»

Вчера вышла знаковая версия скрипта restore_agesa, возвращающая AMD-платы в свежевыпущенный coreboot 4.21 и успешно протестированная на ноутбуке Lenovo G505S с процессором A10-5750M (в совокупности со скриптом csb_patcher, применяющем группу неофициальных патчей для AMD платформ). Другие возвращаемые платы, включая ASUS A88XM-E и ASUS AM1I-A, также должны работать т.к. их код весьма похож и успешно собирается

>>> Исходники скрипта restore_agesa + обсуждение

★★★★★

Проверено: hobbit ()
Последнее исправление: Dimez (всего исправлений: 3)

Кстати, эта история - один из примеров как корпорации могут негативно влиять на опенсорсный проект, продавливая невыгодные для сообщества решения

SakuraKun ★★★★★
() автор топика

многим членам опенсорсного сообщества

Тебе и ещё 1,5 адептам шапочек из фольги?

и в результате Майку Бэнону удалось создать скрипт

Вот это достижение, вот это помпа.

создать скрипт restore_agesa <…> в совокупности со скриптом csb_patcher <…>

А «многие члены опенсорсного сообщества» полноценно форкнуть не пробовали, вместо того чтобы обмазываться несвежими скриптами в различных комбинациях?

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

Потому что такой «форк без ненужных коммитов» будет постоянно отставать от ветки мастер. Этот же скрипт позволит получать всю пользу от свежих коммитов коребута ценой поддерживания скрипта в актуальном состоянии

SakuraKun ★★★★★
() автор топика
Ответ на: комментарий от SakuraKun

Потому что такой «форк без ненужных коммитов» будет постоянно отставать от ветки мастер. Этот же скрипт позволит получать всю пользу от свежих коммитов коребута ценой поддерживания скрипта в актуальном состоянии

Схера ли? Никто не мешает в кроне просто делать merge или cherry-pick свежих коммитов из апстрима.

hateyoufeel ★★★★★
()
Ответ на: комментарий от intelfx

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

SakuraKun ★★★★★
() автор топика
Последнее исправление: SakuraKun (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

Этот крон должен где-то вертется, его нужно поддерживать и т.д. А скрипт - он просто лежит в plain text и всегда готов к применению. К тому же, он делает более очевидным список «плохих коммитов» - благодаря чему несовместимости на виду и в теории будет легче их устранить при возможной попытке возвращения в ветку мастер

SakuraKun ★★★★★
() автор топика
Ответ на: комментарий от SakuraKun

Этот крон должен где-то вертется, его нужно поддерживать и т.д.

Ну, да. Тут некоторые эрекцию поддержать не в состоянии, а уж целый крон – это уже из области фантастики.

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от intelfx

многим членам опенсорсного сообщества

Здесь имеется в виду опенсорсное сообщество пользователей и разработчиков coreboot - ну, те кто желает избежать низкоуровневых зондов в своих ПК

SakuraKun ★★★★★
() автор топика
Ответ на: комментарий от SakuraKun

Ты же сам написал что

из них лишь 38 коммитов (менее 1%) несовместимы с AMD’шным кодом по своей природе

И далее по списку описано так что смысла удалять код амд просо не было, чисто политика корпоративная у них такая. И вообще что значит несовместимый код? Размеры коммитов и что они трогали, ибо судят по всему если скриптом всё откатывается и более того работает, никаких проблем прям так уж и не было, не ну в смысле были, но разрабы просто положили болт, их проект имеют право как говорится.

один из примеров как корпорации могут негативно влиять на опенсорсный проект, продавливая невыгодные для сообщества решения

Вово, как и разработчики гнома, которые с садисткими наклонностями обновляя свой шелл говорят в лицо всем разработчикам расширений «факйю бичесс» и харчу в лицо ещё тем кто не понял посыла.

А удаление поддержки оборудования, а не разделение кодовой базы является выгодным для сообщества? Почему нельзя навесить ifdef раз изменений фатальных для совместимости так мало?

Никого не защищаю и не обвиняю. Бэн молодец, откатил ломающие железо обновления и поделился, корбутовцам похер у них корпоратив и бизнес, амд похер у них корпоратив и бизнес. Во и всё.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от intelfx

Тебе и ещё 1,5 адептам…

А может просто довольно большому количеству уважающих себя людей, которые во-первых не хотят мирится с проприетарным ПО БСВВ с закрытым исходным кодом (BIOS, UEFI) и поломанным IOMMU, в то время когда есть открытые и свободные БСВВ (Coreboot+SeaBIOS, Coreboot+Tianocore) и во-вторых не приемлют огромное количество уязвимостей процессоров Intel (Meltdown, Spectre V2, ZombieLoad, RIDL, Fallout, SWAPGS, LVI, Foreshadow, Snoop, PortSmash, LazyFP, BranchScope, Retbleed, Spoiler, NetCAT, SgxPectre, SpectreRSB, TPM-Fail, Plundervolt, Platypus, BHI, Downfall и тп), при том что устранение каждой из них заметно снижает производительность.

open-source
()
Ответ на: комментарий от open-source

во-первых не хотят мирится с проприетарным ПО БСВВ с закрытым исходным кодом (BIOS, UEFI)

Если бы Coreboot был для новых плат, цены бы ему не было. Но он поддерживает либо что-то нишевое, либо что-то очень древнее :(

во-вторыхне приемлют огромное количество уязвимостей процессоров Intel

А как Coreboot устраняет дыры в процессорах-то?

hateyoufeel ★★★★★
()
Ответ на: комментарий от hateyoufeel

А как Coreboot устраняет дыры в процессорах-то?

Никак он их не устраняет. Тут был вопрос в том, почему так важна поддержка устройств на без PSP’шных (да и в целом хоть каких-нибудь) процессорах AMD открытым ПО БСВВ «Coreboot».

open-source
()
Ответ на: комментарий от hateyoufeel

Если бы Coreboot был для новых плат

Coreboot есть и для новых плат, например MSI PRO Z690-A WiFi DDR5 - эта плата и новая и мощная и коребутом поддерживается, но придётся мириться с ME и кучей блобов, не говоря об интелоспецифичных уязвимостях... Современное x86-железо, как ни крути, куда менее свободное чем 10 лет назад - и, если человеку хочется не только открытого БИОСа но и без'PSP'шного AMD, ничего круче чем это ~2013 железо я предложить не могу, остаётся лишь прокачать его по максимуму и радоваться «беззондовости» (по крайней мере, QubesOS напичканная виртуалками - на нём вполне себе работает если поставить оперативки >=16 гигов)

SakuraKun ★★★★★
() автор топика
Ответ на: комментарий от SakuraKun

Coreboot есть и для новых плат, напримерMSI PRO Z690-A WiFi DDR5- эта плата и новая и мощная и коребутом поддерживается

А.. ну уже хорошо.

но придётся мириться с ME

Не. Он вырубается парой хаков.

не говоря об интелоспецифичных уязвимостях…

Ты забыл про AMD-специфичные уязвимости.

hateyoufeel ★★★★★
()
Ответ на: комментарий от hateyoufeel

Если бы Coreboot был для новых плат, цены бы ему не было. Но он поддерживает либо что-то нишевое, либо что-то очень древнее :(

И тем не менее вариантов довольно много, есть что выбрать для каждой поставленной задачи. В порядке увеличения производительности список будет выглядеть примерно так: маломощные ОПК 86duino, среднемощные ОПК Gizmosphere Gizmo / Gizmosphere Gizmo 2, ноутбук Lenovo Thinkpad G505S, материнская плата mini-ITX Asus AM1I-A, материнская плата micro-ATX Asus F2A85-M, материнская плата micro-ATX Asus A88XM-E, материнская плата SSI EEB Asus KGPE-D16.

open-source
()
Ответ на: комментарий от open-source

Если бы Coreboot был для новых плат, цены бы ему не было. Но он поддерживает либо что-то нишевое, либо что-то очень древнее :(

И тем не менее вариантов довольно много, есть что выбрать для каждой поставленной задачи. В порядке увеличения производительности список будет выглядеть примерно так: маломощные ОПК 86duino, среднемощные ОПК Gizmosphere Gizmo / Gizmosphere Gizmo 2, ноутбук Lenovo Thinkpad G505S, материнская плата mini-ITX Asus AM1I-A, материнская плата micro-ATX Asus F2A85-M, материнская плата micro-ATX Asus A88XM-E, материнская плата SSI EEB Asus KGPE-D16.

Это всё довольно дерьмовые варианты.

В порядке увеличения производительности

материнская плата SSI EEB Asus KGPE-D16.

Это плата с DDR3 под древние оптероны, чувак. Не шути так.

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 2)
Ответ на: комментарий от hateyoufeel

Не. Он вырубается парой хаков.

Он «типа» вырубается парой хаков. На самом деле его невозможно отключить, что доказано здесь и здесь и ещё много где. А ещё даже после перепрошивки на Coreboot, скажем, новой материнской платы MSI PRO Z690-A, там всё равно останется 95 КБ кода от IntelME, что не мало для бэкдора. Так как даже если сам бэкдор вдруг никак не помещается (учитывая LZMA-сжатие), всегда есть вариант с минималистичным загрузчиком бэкдора, который через модуль PXE (использующийся для загрузки по сети) может подгружать основное тело бэкдора.

open-source
()
Ответ на: комментарий от open-source

Не. Он вырубается парой хаков.

Он «типа» вырубается парой хаков. На самом деле его невозможно отключить, что доказаноздесьиздесьи ещё много где. А ещё даже после перепрошивки на Coreboot, скажем, новой материнской платы MSI PRO Z690-A, там всё равноостанется 95 КБ кодаот IntelME, что не мало для бэкдора. Так как даже если сам бэкдор вдруг никак не помещается (учитывая LZMA-сжатие), всегда есть вариант с минималистичным загрузчиком бэкдора, который через модуль PXE (использующийся для загрузки по сети) может подгружать основное тело бэкдора.

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

hateyoufeel ★★★★★
()
Ответ на: комментарий от SakuraKun

и, если человеку хочется не только открытого БИОСа но и без'PSP'шного AMD, ничего круче чем это ~2013 железо я предложить не могу, остаётся лишь прокачать его по максимуму

Кстати, какое точно? Помню до каких-то FX не было PSP, потом появилось.

praseodim ★★★★★
()
Ответ на: комментарий от hateyoufeel

Это всё равно не решит главной проблемы, так как IntelME — это автономная подсистема, которая состоит из проприетарной прошивки, исполняемой отдельным микропроцессором, другими словами IntelME — это аппаратно-программный комплекс. Соответственно если удалить программную его часть, то всё остальное остаётся, и можно будет только надеяться, что эти действия нарушат работоспособность IntelME, о чём сказанно как минимум здесь.

open-source
()
Ответ на: комментарий от open-source

Это всё равно не решит главной проблемы, так как IntelME — это автономная подсистема, которая состоит из проприетарной прошивки, исполняемой отдельным микропроцессором,

Только это не проблема. Проблема в том, что Intel ME нельзя изолировать через тот же IOMMU. Но если он почти ничего не делает, то и хер бы с ним.

Тут просто для многих может быть сюрпризом, что их компьютер – это не один компьютер, а с десяток маленьких в плаще. Тот же Intel одно время экспериментировал с видеокартами на Линуксе. В них даже можно было залезть и в баше там покопаться.

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

да он вообще для производителей плат а не для постмаркета так-то..

Thero ★★★★★
()
Ответ на: комментарий от praseodim

Кстати, какое точно? Помню до каких-то FX не было PSP, потом появилось.

Последний и самый мощный процессор от AMD без PSP это FX 9590, только вот для него нет никакой материнской платы с поддержкой открытой и свободной БСВВ типа Coreboot.

open-source
()

опенсорсный код AMD AGESA не удовлетворяет некоторым требованиям

Лучше бы портировали код на RESOURCE_ALLOCATOR_V4, а не страдали ерундой с откатом патчей.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

Только это не проблема. Проблема в том, что Intel ME нельзя изолировать через тот же IOMMU.

Невозможность изоляции IntelME в рамках одного компьютера это тоже проблема. По прежнему единственным надёжным методом избавления от IntelME на современном процессоре Intel для обычного человека — это удар кувалдой со всей силы прямо по центру крышки процессора.

open-source
()
Ответ на: комментарий от cumvillain

А почему вы его так боитесь-то.

IntelME имеет полный доступ к памяти (безо всякого ведома на то родительского ЦПУ) и к TCP/IP-стеку, соответственно может как посылать, так и принимать пакеты независимо от операционной системы, обходя таким образом её брандмауэр. Также, ни один из возможных методов не способен полностью отключить IntelME, так как без него невозможна загрузка процессора.

open-source
()
Ответ на: комментарий от open-source

Удивительно, что без сервисного модуля материнской платы, задача которого – инициализировать процессор, не работает инициализация процессора. Кто бы мог подумать?

hateyoufeel ★★★★★
()
Ответ на: комментарий от hateyoufeel

IntelME не всегда содержала функции инициализатора, перенесённые в неё несколько лет назад из BIOS’а. Это подтвержадается как минимум тем, что компьютеры работали и загружались и до начала внедрения в процессоры Intel подсистемы Intel ME. Помимо этого, Intel заявляет, что главная функция IntelME — это обеспечение максимальной производительности. Таким образом частичная инициализация — это дополнительная функция. Точный же принцип работы не документирован, а исходный код обфусцирован с помощью кода Хаффмана, таблица для которого хранится непосредственно в аппаратуре, поэтому сама прошивка IntelME не содержит информации для своего раскодирования.

open-source
()
Ответ на: комментарий от intelfx

Вообще то у нас опенсурце вроде, кому нужен форк пусть форкает, кому не нужен это его право.

mx__ ★★★★★
()

Ого, даже не знал, что AMD открыл AGESA. Да и вообще, не следил за этим всем.

Gonzo ★★★★★
()

А вот интересно, вопрос не совсем в тему но я думаю тема уже исчерпала себя.

Вспоминая всю эволюцию процев от Интел и АМД и сравнивая их, что происходит сейчас … что процессора х86 уже все ? По сути их развития уже не будет или что ?

Да я понимаю что могут перейти на процессоры с поддержкой шины DDR6,7 и т.д., ну приблизят RAM к L3 кашу … а сами процы уже все ?

mx__ ★★★★★
()
Ответ на: комментарий от SPRATAY

История коммитов для MSI PRO Z690-A (поддерживаются и DDR4 и DDR5 варианты плат) доступна на Github (ms7d25 - альтернативное название этой платформы) . Для разработки пришлось использовать Intel'овские FSP-блобы (Firmware Support Package), таблица с ситуацией по блобам здесь (расписано для версии DDR4, но для DDR5 аналогично). История разработки обозревалась Phoronix'ом

SakuraKun ★★★★★
() автор топика
Ответ на: комментарий от praseodim

На x86 безME'/безPSP'-шный максимум был FX-9590, но если хочется ещё и опенсорсного БИОСа то мы дополнительно ограничены списком поддерживаемых им плат - и, как правильно написал open-source :

«В порядке увеличения производительности список будет выглядеть примерно так: маломощные ОПК 86duino, среднемощные ОПК Gizmosphere Gizmo / Gizmosphere Gizmo 2, ноутбук Lenovo Thinkpad G505S, материнская плата mini-ITX Asus AM1I-A, материнская плата micro-ATX Asus F2A85-M, материнская плата micro-ATX Asus A88XM-E, материнская плата SSI EEB Asus KGPE-D16»

Поэтому в итоге максимум производительности на «без'PSP + coreboot» можно получить комбинациями Lenovo G505S + A10-5750M, ASUS AM1I-A + Athlon 5370, ASUS F2A85-M + A10-6700 / A10-6800K, ASUS A88XM-E + A10-6700 / A10-6800K (к сожалению, хоть у этой платы сокет и FM2+, процессоры A10-7*** не поддерживаются coreboot'ом из-за отсутствия для них открытого кода AGESA), ASUS KGPE-D16 + 2 x Opteron 6386 SE

SakuraKun ★★★★★
() автор топика
Ответ на: комментарий от SakuraKun

и новая и мощная и коребутом поддерживается, но придётся мириться с ME и кучей блобов

А железо без блобов регулярно выкидывается из корбута, либо нафиг никому из разработчиков не нужно оказывается.

Ребят, вы не в ту сторону воюете)

devl547 ★★★★★
()
Ответ на: комментарий от X512

Для RESOURCE_ALLOCATOR_V4 были как минимум этот и этот коммиты - причём A88XM-E успешно грузилась и эти коммиты можно было бы добить. Основной причиной удаления скорее стало отсутствие LEGACY_SMP_INIT, который с виду воплотить значительно сложнее + нет гарантии что на следующем релизе не придерутся к отсутствию какой-то другой «корпоративной фичи», преимущества воплощения которой неочевидны а человекочасов нужно затратить много. Хотели бы сохранить - добавили бы парочку ifdef'ов. Наше AMD пытались удалить ещё 8 лет назад, но тогда влияние корпораций было не так велико и его удалось отстоять

SakuraKun ★★★★★
() автор топика
Ответ на: комментарий от mx__

В плане свободы x86 уж точно всё, а без свободы мы существовать не можем, так что придётся переползать на другие архитектуры - например, на POWER9 создали свободную рабочую станцию TALOSII : мощная, но дорогая

SakuraKun ★★★★★
() автор топика
Ответ на: комментарий от devl547

Простым разработчикам-то железо без блобов разумеется нужно - хотя бы судя по созданию скрипта restore_agesa - а вот корпоративным разработчикам оно «мешается» ;-) Нанятым индусам приходится чуть больше работать, больше риса просят, а coreboot у них только на работе - им то конечно безблобовое железо «нафиг не нужно», быстрей бы проект спихнуть и получить свои доллары...

SakuraKun ★★★★★
() автор топика
Ответ на: комментарий от SakuraKun

нет гарантии что на следующем релизе не придерутся к отсутствию какой-то другой «корпоративной фичи»,

Выходит что CoreBoot уже тоже захватили корпорации и там больше никакой свободы нет?

X512 ★★★★★
()
Ответ на: комментарий от hateWin

Наверное потому что автор такого форка не сможет следить за мастером 24/7 и моментально тащить оттуда всякий появившийся коммит в свой форк. Уже сколько таких «This branch is X commits behind» форков я видел на Github'е. А при помощи скрипта со списком откатываемых коммитов, который применяется поверх master'а, мы гарантированно будем идти вровень с мастером - разве что если в мастер закоммитят что-нибудь вредное то для успешной работы скрипта (пока не добавили в него новую git revert - строчку) придётся предварительно делать git reset --hard для возврата на последний момент времени когда этот скрипт работал

SakuraKun ★★★★★
() автор топика
Ответ на: комментарий от SakuraKun

а вот корпоративным разработчикам оно «мешается» ;-)

Опубликовавший код AGESA, AMD – это не корпоративный разработчик? О каких корпорациях идёт речь?

X512 ★★★★★
()
Ответ на: комментарий от X512

Прежде всего Intel, но и Google здесь тоже замешан. а AMD - после того как опубликовала код AGESA (при помощи которого сообщество портировало коребут на некоторые из AMD'шных плат) - надолго ушла из coreboot'а; сейчас AMD вроде бы пытается вернуться в мир опенсорсных прошивок (проскакивала новость про AMD OpenSIL), но для своих старых платформ они разрабатывать не будут

SakuraKun ★★★★★
() автор топика
Ответ на: комментарий от X512

Основной код-то пока свободный, но для нового x86-железа всё больше блобов и - если дела так и пойдут дальше - то coreboot превратится лишь в минимально настраиваемую обёртку поверх пачки из блобов. в том коде AMD AGESA даже инициализация DDR3 была на 100% опенсорсной, а для новых плат о таком можно только мечтать

SakuraKun ★★★★★
() автор топика
Последнее исправление: SakuraKun (всего исправлений: 1)

Движуху в целом поддерживаю. Но не пробовал ли автор патча протолкнуть свои наработки в апстрим, предложив себя в качестве сопровождающего?

Есть ненулевая (хоть и не стопроцентная) вероятность, что выпилили эти процессоры не под давлением того же AMD или ещё каких-то корпораций, а банально потому, что их некому поддерживать и не на чем тестировать. Да, официальная причина может звучать и по-другому…

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 2)
Ответ на: комментарий от hobbit

некому поддерживать и не на чем тестировать

Сообщество до последнего присылало патчи (из наиболее значимых - для поддержки кастомных таймингов и XMP-профилей) и результаты тестирования новых релизов, даже полные отчёты board_status с риском утечки приватной информации, но это не помогло

официальная причина может звучать и по-другому…

Она указана здесь - в двух словах, не захотели ставить ifdef'ы даже ради сохранения плат:

«The reason for deprecation is that having 2 codepaths to do the virtually the same increases maintenance burden on the community a lot»

- что примечательно пытаются говорить за «community», притом что само «community» на самом деле не хочет терять платы: хотя бы судя по комментам к новостям о релизах коребута, где в очередной раз выкинули группу плат

Но не пробовал ли автор патча протолкнуть свои наработки в апстрим, предложив себя в качестве сопровождающего?

Разумеется, после того как на примере этого скрипта показали что без выкидывания AMD'шных плат можно было и обойтись относительно небольшими изменениями, теперь можно попытаться вернуть эти платы в апстрим. Поговорю с Майком на эту тему

SakuraKun ★★★★★
() автор топика
Ответ на: комментарий от SakuraKun

Прежде всего Intel

Зачем ему вообще нужен CoreBoot, если он традиционно сотрудничает с вендорами проприетарных BIOS?

X512 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.