В репозиторий, в котором формируется выпуск ядра Linux 5.19, принят очередной набор изменений, связанных с подсистемой DRM (Direct Rendering Manager) и графическими драйверами. Принятый набор патчей интересен тем, что включает 495 тысяч строк кода, что сопоставимо с общим размером изменений в каждой ветке ядра (например, в ядре 5.17 было добавлено 506 тысяч строк кода)...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=57260
разрастается так сильно, что станет невозможно поддерживатьнадо было слушать Таненбаума и делать микроядро!
Ну так сделай. Покажи всем, как надо!
Давай деняк.
Линус начинал без деняк.
Зато с блатом. Не у каждого дедушка профессор и его ВУЗ ходишь, открывая пинками все двери
> Зато с блатом. Не у каждого дедушка профессор и его ВУЗ ходишь,
> открывая пинками все двериC гей,тсс!ом перепутано, сущие мелочи. И не вуз а айбиэм между прочим.
даю денёк. действуй.
Так бери, всё сделано, всё работает).
Ты из танка что ли?? Уже давно сделано - Minix-3!
И на расте на расте непременно, чтобы обмазаться безопасностью
seL4
А там описание регистров железки волшебным образом уменьшится? :) Кажется понятно: на микроядре будет с такой скоростью рисовать что можно выкинуть и оставить VGA адаптер. Эврика, сразу в 100500 раз меньше регистров!
По-твоему сопровождать надо будет только код микроядра, а серверов вокруг не надо?
Скорее - наоборот. Код самого микроядра при правильном дизайне особого сопровождения не требует. А драйверы-микросерверы можно раздать отдельным мейнтейнерам. Но это всё в теории. И да, SEL4 чем-то налазит на данную концепцию.
> разрастается так сильноТак тут особо ничего и не разрослось. Подавляющая часть патча - предельно тупой генереный include (сам можешь посмотреть https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin... ) от amd формата
#define SOMETHING_NAME 0x0000FFFF
Ну вот драйвер у них так устроен, что теперь поделать. Поддерживать это совершенно не надо, вполне очевидно, что AMD это генерирует скриптом.
> Ну вот драйвер у них так устроен, что теперь поделать.Вести разъяснительную работу.
Интересно, нельзя ли генерировать эту простыню во время компиляции ядра? Положить какой-нибудь скриптик и те исходные файлы из которых они эти заголовочные файлы сделали.
Она генерируется при билдовке СОРЦОВ ЧИПА GPU фирмачами из амд, внезапно. Вот прям из тех же сорцов хидер и кроится их билдсистемой. Тебе дать сорцы чипа и ниипический обвес который позволяет сгененрить ЭТО, на миллиарды транзисторов, а заодно, вот, регистрики выгрузить в .h файл для дровописак? :) Облом состоит в том что даже в HDL все эти регистры таки будут прописаны - и меньше это точно не станет :P. Там так то еще и имплементация железок, что-то делающих на основе содержимого этих регистров, кроме самих региствро...
О, алилуя, кто-то еще сорцы еще и читает вместо того чтобы умничать про микроядра и прочие серебряные^W пули из куриного помета.Это амд нагенерили хидеров для своих железок. Их много но это тупое описание железа. Хочу посмотреть как от вгрузки описания пачки регистров что-то само по себе сколлапсирует :)
> разрастается так сильно, что станет невозможно поддерживатьчто значит "поддерживать" ?
> Около 400 тысяч добавленных строк приходится на автоматически сгенерированные заголовочные файлы с данными для регистров
это описание аппаратуры на уровне регистров - его написали один раз и ничего не поменяется, причём не вручную пишут а сгенерированный код
Или написать FUSE для видеодрайверов.
> Или написать FUSE для видеодрайверов.И получить трехмерное слайдшоу с жором в полку вообще всех доступных ядер? Так, глядя на FUSE кладуший в полку одно ядро довольно мощного проца при куда более скромном потоке данных чем в GPU на экран летает :)
А на сколько сократится ядро Линукса, если не считать драйверов?Если вынести дрова в отдельную ветку, или пустить их вообще в своюодное плавание, то проблем только уведичится. Железки сразу станут однодневными, а написание дров превратится из кошмара в ад ни с чем не совместимый.
>Железки сразу станут однодневнымиЭто при возможности поднять сразу несколько версий систем инфраструктуры драйверов?
Хочешь микроядра - бери SEL4
А толку? Сейчас ядро пишется с оглядкой на дрова, а дрова пишутся с оглядкой на ядро. Линус фактически силой вытащил всех этих производителей из проприетарных подземелий возможностью работать совместно. Уберите из ядра дрова и они исчезнут со всех ггитхабов, потому что писать просто в воздух не имеет смысла. И разрабатывать дрова, постоянно догоняя поезд (ядро, которое кинутся упрощать и оптимизировать горячие анонимусы лора и опеннета), никто не захочет. Будет снова так - выпустил телефон, поставил на него текущий андроид и забыл.
>А толку?Вот когда тебе всунут systemd в ядро, узнаешь.
systemd — это гриб-паразит, паразитирующий на живом организме (ядре Linux).
Ну уж не юзеру фрибзды с бутлоадером на луа, чтоли, рассуждать про такие вещи.
> Ну уж не юзеру фрибзды с бутлоадером на луа, чтоли, рассуждать про такие вещи.Опять слышал звон, рассуждатель?
man src.conf
WITHOUT_LOADER_LUA
Set to not build LUA bindings for the boot loader.
This is a default setting on powerpc/powerpc, powerpc/powerpc64,
Да сам маны на свой бесполезняк читай. Я вообще не вдупляю зачем в бутлоадере луа вперся. Это что, не только скриптить его по мелочи но и хардкорно кодить ему логику предлагается? Если мне приспичит похардкорить я и на сях могу, спасибо.
>> Опять слышал звон, рассуждатель?
> Да сам маны на свой бесполезняк читай.Т.е. я угадал - опять рассуждал с умным и уверенным видом, не зная матчасти и сел в лужу.
> Я вообще не вдупляю зачем в бутлоадере луа вперся. Это что, не только скриптить его по
> мелочи но и хардкорно кодить ему логику предлагается? Если мне приспичит похардкорить я и на сях могу, спасибо.Я не совсем понял - ты считаешь, что лучше было бы сваять свой, наколенной [S]аналоговнетный[/S] язык или просто демонстрируешь новые грани своего ламеризма?
Я считаю что при нужде немного скриптануть бутлоадер, я ок с тем что сделано в grub и uboot, т.е. мелкое подобие шелскриптов. А если что-то радикально перепахать - на сях. На кой черт там луа вперся ума не приложу. Бздюки как обычно сами придумали проблему, сами ее с понтом решили и почему-то уверены что это круто. Все полтора инвалида юзающих эти высококонцептуальные брейнфарты.
>>> grub.cfg is written in GRUB’s built-in scripting language, which has a syntax quite similar to that of GNU Bash and other Bourne shell derivatives....
> Я считаю что при нужде немного скриптануть бутлоадер, я ок с тем
> что сделано в grub и uboot, т.е. мелкое подобие шелскриптов.А, ну да, "Grub - это другое!".
> если что-то радикально перепахать - на сях. На кой черт там
> луа вперся ума не приложу. Бздюки как обычно сами придумали проблему,
> сами ее с понтом решили и почему-то уверены что это круто.Т.е. как обычно - опять сам себе что-то придумал, опять сам что-то с понтом опроверг и почему-то уверен что это круто.
Как правильно делать - давно в винде сделано. Драйвера отдельно ставятся и никто не таскает всю гору драйверов с собой.
> Как правильно делать - давно в винде сделано. Драйвера отдельно ставятся и
> никто не таскает всю гору драйверов с собой.Тебе правильно - вот и проваливай на винду. А для меня линуксный амдшный драйвер почему-то работает сильно лучше виндового. И где живые девелы линуксного драйвера обитают - я знаю, а в маздае при проблемах с драйвером вообще не доорешься ни до кого.
https://ventureoo.github.io/ARU/source/mini-kernel.html
Ну так студенты лучше профессоров знают как делать)))
Что будет лет через 10 сколько будет весить ядро? Монолит тупиковая ветвь.
Пора валить на хурд. Ах да, он же не работает на реальном железе...
на Fuchsia или Haiku)
>на FuchsiaСколько раз в месяц пекарню придётся обновлять?
> или Haiku- Во первых - не микроядро, а косой и кривой гибрид, глючнее вантуза. Рахитектурно его напоминает.
- Во вторых - было бы неплохо чтобы оно вообще загружалось на железе, но настоящих любителей гайки это конечно не остановит.
> на железеТак оно загружается и даже работает долгое время
> на FuchsiaЕсли ты сотрудник гулага, начни пожалуйста выкладывать сырцы на торрент.сру хотя бы раз в полгода в виде снэпшотов. Они же часть компонентов прикрыли пару лет назад, но всё ещё продолжают её опенсорцом называть.
Это же драйвер, берёшь и не включаешь его.
Можно добавить поддержку модулей в ядро и выделить самые тяжёлые вещи (типо этих графических драйверов) в эти самые модули. Чтобы по умолчанию был какой-нибудь простенький базовый драйвер, выводящий графику в стандартном расширении без ускорения на все устройства, а пользователь потом мог установить нужный именно для его видеокарты модуль, не тратя место на остальные
Вы изобрели DKMS
Проблема в том, что тут миллионы строк всё равно включены в базовое ядро, про что и написано в новости, а нужно всё это полностью в эти DKMS вынести тогда
так ведь не в ядро, а в исходники. Во время компиляции подтянется только малая часть из того, что есть.
DKMS это про блободрайверы. А модули в составе ядра как-то и не нуждаются в этом DKMS, make menuconfig рулит.
Вы назвали fbdev dkms
> Можно добавить поддержку модулей в ядро и выделить самые тяжёлые вещи (типо этих графических драйверов) в эти самые модулиИзобрели config
> простенький базовый драйвер, выводящий графику в стандартном расширении без ускорения на все устройства
Изобрели консоль
> а пользователь потом мог установить нужный именно для его видеокарты модуль, не тратя место на остальные
Изобрели пакетный менеджер
Изобрели *BSD.
И получилась гента
Которая и так есть? При компиляции ядра не критичные вещи можно вынести в виде отдельных файлов модулей, что и делают все дистры. В /usr/lib/modules заходили? Никто не запрещает поудалять неиспользуемые. А о том что можно собрать ядро самостоятельно только с нужными модулями вообще молчу.
В Бубунте нет такой папки, а где взять рендер ферму для пересборки ядра с выходом каждой новой версии? Скоро для сборки ядра нужно будет 32 ядра по минимуму.
Не гони про ферму сборки. На древнем Core 2 Duo у меня заняло, примерно, 1 ч 40 мин.
Эх, блин, а когда-то у меня на 486-м собиралось за 15 минут.
Может продолжать использовать 486 раз там все так прекрасно?
Я бы с удовольствием юзал 486, если бы знал где взять недорого.
Тут есть завсегдатай Zenitur, у него в запасе их есть. Может, сторгуешься.
На sandybridge(4 ядра вроде, частоту не помню) минута-полторы, на Allwinner A10(ARM Cortex-A7, 1 ядро, 1.08ГГц) 10 минут, на RK3328(ARM Cortex-A*, 4 ядра, 2ГГц вроде) 3-5 минут
> На sandybridge(4 ядра вроде, частоту не помню) минута-полторы, на Allwinner A10(ARM Cortex-A7,
> 1 ядро, 1.08ГГц) 10 минут, на RK3328(ARM Cortex-A*, 4 ядра, 2ГГц
> вроде) 3-5 минутТак ты небось на армах и конфиги минимальные билдил. А если на такой мелкоте современный десктоп кернел билдить с конфигом от типового дистра - будет неспешно, да. А кто виноват что железок понаделали и там метров сто драйверов одних? Для себя или группы однотипщины их можно и заскипать но система тогда неуниверсальная будет.
Половину драйверов можно выкинуть и будет работать на домашних ПК. Но кому надо разбираться и конфиг править? Это куда дольше, чем собрать всё подряд.
> Половину драйверов можно выкинуть и будет работать на домашних ПК. Но кому
> надо разбираться и конфиг править? Это куда дольше, чем собрать всё подряд.У домашних пк дофига железяк. Особенно если учитывать гибридные уродцы типа полупланшетов/трансформеров, где впаяный проц косит под SoC и обвешан "околоэмбедовочным" добром, на которое сотни дров нужны. И этого добра по десяткам наименований каждые кернел добавляется, чипмейкеры пекут эти чипы быстрее чем бабка пирожки. А если не компилять то что-то где-то не заработает и это уже не универсальный кернел. Серверное железо в этом плане так то стабильнее и дров там не так уж много по сравнению с вот этим.
У дистров бывают ядра под виртуалку. Там попроще, железа мало и оно известное. Вот это да, можно здорово быстрее ребилдить, но оно только на виртуалке и заработает.
У меня такой планшет валяется и я под него когда-то конфиг делал, когда во всяких Ubuntu не включали нужные опции, т.к. экспериментальные. Там почти все сетевые устройства можно было отключить, поскольку родной Wi-Fi в staging. На ПК уже побольше надо, SATA и т.п., но всякие датчики навряд ли нужны. Но в итогде будет оно в три раза быстрее собираться, тридцать минут сэкономил, а перед этим три часа конфигуратор тыкал, а потом ещё и запустилось с третьего раза.
> Эх, блин, а когда-то у меня на 486-м собиралось за 15 минут.Так и билдуйте тот кернел, тем компилером. Что, кернел древний, код неоптимальный и все такое? Зато на современном железе секунд за 10 скомпиляется! На этом достоинства правда и кончатся :)
А ежели вы хотите поддержку GPU который сложнее (и производительнее) целого дома набитого 486-ми от и до, тогда, наверное и тот факт что у него большой и сложный драйвер не должен удивлять...
Да что ты?!> ls -l /usr/lib/modules
итого 12
drwxr-xr-x 2 root root 4096 мая 25 11:23 5.15.0-27-generic
drwxr-xr-x 6 root root 4096 мая 18 18:50 5.15.0-30-generic
drwxr-xr-x 6 root root 4096 мая 24 00:11 5.15.0-33-generic
ls -l /usr/lib/modules
ls: невозможно получить доступ к '/usr/lib/modules': Нет такого файла или каталога
Тогда может это проблема кривой бубунты, а не ядра?
нельзя. потому что stable API no sence.
Как будто, сейчас видедрайвера нельзя модулями собрать.
Ничего страшного не случится. Повысятся требования к размеру ОЗУ, и все.
Можно будет переходить с 2.4?
Торопидзе нинада ©
Жги ещё. D
Зачем? У тебя же и так всё работает.
Нэ тарапися
у нэго "патчэное")))) еще лет этак цать пропашет.
> Общий размер драйвера для GPU AMD превысил 4 млн строк кодаНеудивительно, что работает через пень-колоду
Нада переписать на Rust? Строк будет (если вообще будет) на порядок меньше?
Diff с каждой новой версией раста пролезать не будет.
> Общий размер драйвера для GPU AMD превысил 4 млн строк кодаЭто ужасно.
>> Общий размер драйвера для GPU AMD превысил 4 млн строк кода
> Это ужасно.Самое ужасное, что этот код даже не компилируется. А если начать про фазы трансляции - вот тогда настанет настоящий ужас.
Компилируется. Иначе бы не попал в ядро.
Нет, там одни директивы препроцессора.
> Компилируется. Иначе бы не попал в ядро.Повеяло ведущим программистом POCA LINUX, у которого #define объявляет переменную.
> Самое ужасное, что этот код даже не компилируется.Хочешь получить принудительный компил всех регистров которые есть в видеокарте, независимо от того пользуется ими драйвер или нет? Очень так себе идея: это и будет еще дольше, и код неиллюзорно распухнет. Пачка #define'ов регистров один из самых безобидных по ресурсам способ декларации со всех сторон. Остальное бывает даже хуже.
Если кто не понял: это generated. Из сорцов железа. И там вообще все что при сборке железа посчитали нужным вывесить как интерфейс железки наружу, на случай что когданить может понадобиться. Доброй половиной драйвер может не пользоваться, но под рукой прогера это должно быть на случай если понадобится подкрутить дефолты в регистре или для какой-то фичи стало все же надо. И таки да, у большого программноаппаратного комплекса - чуть более чем дохрена регистров.
Ну попробуйте объяснить это комментатору из ответа №97 выше. Пусть лучше боится и держится подальше.
Жирно конечно, но что делать...
Это враги раскармливают, чтобы выкатить своё новое легкое, пушистое.
Вот Redox как выкатят...
Потом они внезапно обнаружат что количество регистров в железке - инвариант относительно типа операционки. А если их не описывать - тогда и поддержки amd gpu не будет. Вон вам, колибри дос, только 3D ускорения с крутой графикой вы там не увидите.
Было бы приколько удалить их все, и даже не извлекать из тарбола. Во-первых, это долго, во-вторых насилует ссд. Ну и место занимает тоже.
Генту и арч ждут тебя.
О чём я и говорю.
Плохо говоришь. В генте из тарбола извлекается только мажорная версия, а дальше патчи
Ты можешь сам собрать монолитное ядро с поддержкой только нужного. И вообще речь не о 650+ мегабайтном драйвере как на винде.
Ребята, ребята. Проблема не в лишних модулях или долгой компиляции (их можно не компилировать). Проблема в том, что их придётся скачать и извлечь, потом ещё скопировать несколько раз.
\dev\shm в помощь
Вот ты и спалился, вендузятник. Ребята, на кол его!
Не знал что в айти сообществе такие тоже бывают.
Каждый первый.
Ты таки жесточайше спалился слешами, маздаец. Маздайцы последние чьи советы по билдовке кернела стоит слушать. У них в этом вообще опыта - ноль. Почему-то.
Кстати, да, Windows NT (а стало быть и Бесяточка) понимает обычные слеши в путях, и про это виндузятникам должно быть хорошо известно, иначе не понятно, что они там вообще делают.
На винде драйвер Nvidia уже перевалил за 750Mb :-)
>драйвер NvidiaЭто который пресеты и настраивалка со сбандленных чромом?
Все видеодрайверы? Можешь сымитировать ситуцию, установив ядро linux-libre. Насладись видео!
А в либре разве не только блобы необходимые для работы порезаны? Ну и потом, остальное то железо ничем не виновато, только амдшное.
Блобы, но, с точки зрения пользователя видеокарт, ситуция будет выглядеть одинаково.
Скачать на tmpfs религия не позволяет?
> Скачать на tmpfs религия не позволяет?Пакетный менеджер скачивает исходники на один диск, распаковывает и патчит их на втором, устанавливает на третий, потом ручками ядро компилируется и устанавливается на 4, а модули отправляются на 5, после чего лишние генерированные файлы удаляются (что немного ломает установку out-of-tree драйверов). На каком из этих этапов и чем мне поможет tmpfs?
> этапов и чем мне поможет tmpfs?на этапе ssd
Долгих лет проекту!!!
> Около 400 тысяч добавленных строк приходится на автоматически сгенерированные заголовочные файлы с данными для регистров ASIC в драйвере для GPU AMD.Это вам не блобомикрокод, это опенсорс!
Конечно, сразу видно, что лишних инструкций GPU нет.
Это шутка? Чем отличается "лишняя инструкция" gpu от "магических констант" для регистров gpu? И этих "магических констант" добавили 400 тыс. штук.
Хочу заметить блоб - это точно такой же набор магических констант.
>блоб - это точно такой же набор магических констант.Хз-хз. Не факт, что только констант, а и не машинных инструкций тоже.
> констант
> машинных инструкцийВ современных пост-фейнмановских архитектурах код (машинные инструкции) - это константные данные.
-пост-фейнмановских
+пост-фоннеймановских
> Это шутка? Чем отличается "лишняя инструкция" gpu от "магических констант" для регистров gpu?Блин действительно, чем отличается регистр железа (и его описание) от инструкций? :)
Привет, скакун!Что такое "инструкция" железа? Дай определение без использования "регистров" и их "магических значений".
Генерированные файлы раздражают на самом деле, вон у нуво маленькие аккуратные исходники, да и интела вроде ничего такого страшного.
> Генерированные файлыЭто абсолютно бессмысленный "опенсорс".
Такой "опенсорс" невозможно сопровождать без настоящих исходников. Нужно открывать (и требовать открыть) то, из чего, чем и как генерируется.
Не поминайте Нуво,дикий УГ,а блоб Нвидиа и на либрегнутом отлично работает на моем железе.
Да нормально всё с ним, никак не хуже амд. Только cuda и vulkan отсутствуют, а так почти то же самое. И даже по производительности не особо отличается от официального. Если карта достаточно старая, конечно. За блобы видеокарт я переживаю меньше всего, вот у остального железа не обновлённые блобы это грустно.
> блоб Нвидиа и на либрегнутом отлично работает на моем железе.Вот это я понимаю, иллюстрация на тему "бессмысленно и беспощадно"
на расте строчек в 10 уложились бы
> на расте строчек в 10 уложились быПри этом оно бы не компилировалось. Но некомпилировалось бы БЕЗОПАСНО!
Казалось-бы, при чём тут раст? Параноик?
Ему буфер порвало от обиды
Вывод "Hello, World!" уложилось бы.
На расте? Не факт. А на асме вполне.Метка main, три команды на запись в регистры, системный вызов, возврат и текст.
Три команды можно заменить на одну загрузку в несколько регистров и три констатны в одну строку.
Итого 6 строк.
А так поржать, вон те простыни вообще код не генерят. Его ровно ноль - пока регистр по факту не задействован. Это лишь декларации формальных сущностей. Которыми потом можно пользоваться где-то в коде. Это не подразумевает ни аллокации каких либо ресурсов, ни потребления памяти, ни генерации какого либо кода.Просто куча чисел (параметры регистра) заменяемых на текстовые обозначения которые можно потом где-то юзать. А если нигде не юзается - на фазе компила это вообще не фигурирует.
На асме, как минимум макро, тоже наверное можно такое. Это как раз очень эффективно, в том плане что какой-то код и константы в фактическом бинаре будут только когда кто-то решит что-то по факту сделать с вон тем регистром. А еще так по приколу LTO умеет круто коллапсировать повторные вгрузки констант и прочие вещи. На жирном коде ты опупеешь аллокацию регистров трекать, а LTO, вот, помнит что килобайт назад мы уже в R7 вгрузили потребную базу, ща мы дескать от нее мелким смещением оттанцуем - и вот оно, порядочек. Допрешь ли ты сам такое завернуть - ну, на куске в 20 байтов может и допрешь. А в килобайтах потеряешься.
...это тебе мнение того кто смотрел в asm'овый генеренный код, изучая во что разные сишные конструкции могут транслироваться - и как сделать это максимально эффективным.
> Это лишь декларации формальных сущностейИ что они декларируют? В чем разница между "магическим числом" и "именем из бессмысленных символов"? В количестве использованных символов ascii? Нужен твой любимый libastral, чтобы узнать разницу?
> И что они декларируют? В чем разница между "магическим числом" и "именем
> из бессмысленных символов"?Они сами по себе декларируют ... просьбу к ПРЕПРОЦЕССОРУ заменить вон ту, удобную для понимания человеку строку с названием сущностей регистра, на фактическое число, описывающее его свойства (адрес/смещение оного, маску, или что там еще было задумано).
Если в коде нет упоминания этого регистра - ну, препроцессор, конечно, будет жевать весь хидер, но вот ни в какой код это не оттранслируется вообще: если нет текста с упоминанием строки, его и заменять на вон те определения не надо. И откуда бы тут взяться коду или данным при таком раскладе?
В ассемблерных терминах это будет что-то типа кучи EQU, чтоли. В какой код или данные сам по себе EQU транслируется? Его тоже вроде макропроцесор заменяет по мере надобности, но сами по себе более 9000 EQU еще ничего не генерят. Прошу прощения, я на асме ща пишу мало и делаю это в гибридном с сями стиле как asm(), так что если слегка прогнал с EQU (.equ, ... ) сорянчик, в сях можно их определениями пользоваться.
> В количестве использованных символов ascii? Нужен твой любимый libastral, чтобы узнать разницу?
Экспертиза опеннета во всей красе? Спасибо, я не сомневался в вашей квалификации, а именно ее полном отсутствии.
А разница между нами в том что я таки написал эн таких простынок, парясь эффективностью. И потому сильно лучше вашего знаю в какой код и данные (а точнее их отсутствие) это отливается. Такая вот фигня, мистер эксперт.
> Они сами по себе декларируют"Экспертиза опеннета во всей красе"
> А разница между нами в том что я таки написал эн таких простынок, парясь эффективностью.
"Экспертиза опеннета во всей красе"
Я бы сказал, жирнотролль опеннета во всей красе. ЧСХ он таки не предложит более удачных методов делания того же самого - за скудностью своего троллиного умишки, например.
> ЧСХ он таки не предложит более удачных методов делания того же самого - за скудностью своего троллиного умишки, например.Было предложено: раскрывайте исходник для генерации или блоб (так как между сгенерированными магическими константами и блобом нет разницы). Ты своим глубоким экспертным умишком отверг эти варианты.
Ты, как эксперт заявляешь, лучше иметь сгенерированный код драйвера размер сравнимым со всем остальным кодом ядра и прочих драйверов.
> так как между сгенерированными
> магическими константами и блобом нет разницыА это смотря для кого. Вот есть такая "магическая константа" 0x90. Что это? Если нет ответа, уймитесь и не лезьте не в своё дело.
> А это смотря для кого
> "магическая константа"Магическая, потому что, чтобы узнать для чего эта константа, надо воспользоваться libastral'ом. Или другой воровской магией. Что является уголовно наказуемым магическим действием.
> Если нет ответа, уймитесь и не лезьте не в своё дело.
Если не хотите делится магией, то не называйте эту магию открытой, из открытых источников магии.
>> А это смотря для кого
>> "магическая константа"
> Магическая, потому что, чтобы узнать для чего эта константа, надо воспользоваться libastral'ом.
> Или другой воровской магией. Что является уголовно наказуемым магическим действием.У меня сроду не было libastral-а, но я знаю, и я такой не один. Так что прекращайте врать.
>> Если нет ответа, уймитесь и не лезьте не в своё дело.
> Если не хотите делится магией, то не называйте эту магию открытой, из
> открытых источников магии.Она открыта и давно, просто кто-то не обладает необходимыми навыками и потому не может найти.
> но я знаюНапиши хотя бы инициализацию графики используя только эти заголовочные файлы с магическими константами. Покажи свое знание.
> Напиши хотя бы инициализацию графики используя только эти заголовочные файлы с магическими
> константами. Покажи свое знание.Это не магические константы а описалово регистров железки, лол. Местами конечно они еще оптом меняют значения регистров - но там забавная история, когда даже сами амдшники порой не помнят и не знают почему так: хмырь еще из ати кодивший IP блок уволился i++ лет назад, а его железку или ее кусок копипастой так и таскают.
А процесс взлета современного GPU весьма нетривиальная штука с вгрузкой нескольких внешних фирмварей и потом игры с ними в командную игру, инициализации кучи субблоков, при том см выше как оно бывает.
Ну например AMDшники вгрузив фирмварь SMU какого (отвечает за системные дела/dvfs) когда оно взлетает ему грузят кучу параметров-пожеланий к DVFS и power management/профайлам, а иногда и жесткий оверрайд таблиц VBIOS кастомными, если известно что вендор ж@порук и в вон те модели прошил в VBIOS какой-то хлам с которым оно вообще виснет раз в 15 минут.
> Это не магические константы а описалово регистров железки, лол.
> забавная история, когда даже сами амдшники порой не помнят и не знаютОчень описательная история внутренней кухни описания. Так, как пользователю этого описания инициализировать графику? Нужна ли эта кухня в публичном проекте?
Надо бы еще GPL лицензию прочитать, что там говорится про сгенеренные "исходники" из недоступных исходников. Особенно, когда эти сгенеренные "исходники" из недоступных исходников занимают большую часть кода.
>> но я знаю
> Напиши хотя бы инициализацию графики используя только эти заголовочные файлы с магическими
> константами. Покажи свое знание.В IA32 0x90 это опкод NOP, нет операции. Как видно, разница с блобом есть. Так что оставьте эти манипуляции "слабо", показав незнание.
> Было предложено: раскрывайте исходник для генерацииФирма AMD генерит хидеры с описанием регистров и полей из HDL исходников чипов. Логично же, там уже есть описание внешнего интерфейса чипа. Вам дать сорцы чипа GPU? LOL :)
> или блоб (так как между сгенерированными магическими константами и блобом нет разницы).
Что за блоб? И что с ним делать? В тех простынках описание регистров, типа смещений, масок полей и т.п. требухи. Это описание - по мере надобности - используется драйвером. Чтобы, внезапно, поменять что-то в том поле вон того регистра, узнав где регистр, сколько битов поле и т.п.
Само это описание - например, пачка #define которое не транслируется ни в какой код и данные покуда драйвер не захочет что-то реально сделать с вот именно этим регистром. Это весьма эффективно - никакого кода и данных покуда кто-то не захочет реально потрогать тот регистр.
> Ты своим глубоким экспертным умишком отверг эти варианты.
Странно что я отверг идиотию от ламо. Сам не понимаю что за фигня. Я так то сам такие простынки умею. Правда HDL сорцы чипов зажимают чота, приходится по даташиту/спекам, в лучшем случае "полуавтоматически" если удалось параметры в машиночитаемом виде сносно сдернуть.
> Ты, как эксперт заявляешь, лучше иметь сгенерированный код драйвера размер сравнимым со
> всем остальным кодом ядра и прочих драйверов.Я как эксперт заявляю:
1) Это не "код" а "описание параметров регистров".
2) Пачка #define не есть предмет аллокации или кодогенерации сам по себе и весьма эффективно.
3) Блобы и что еще за бред никак не помогут вон тому куску на си узнать по какому смещению интересующий нас регистр, какой ширины вон то битовое поле в нем и т.п..
4) Вы совершенно не рубите в теме но свое ценное мнение имеете.
5) Я таки успешно скроил энное количество сравнимых штук, даже малость доразвив идею, и это даде еще и работает. И я таки очень сильно парился эффективностью этого. Поэтому получше вас знаю где и кого (не)реально обставить.
> Фирма AMD генерит хидеры с описанием регистров и полей из HDL исходников чипов.Напиши минимальный драйвер по этому "описанию".
Это не описание, это недокументированная функциональность, закрытый API.> Пачка #define не есть предмет ... кодогенерации
Если что, эти заголовочные файлы - результат кодогенерации.
> Я таки успешно скроил энное количество сравнимых штук
Молодец, но кого из пользователей интересует этот сгенеренный код? Может лучше сразу бинарник?
>> Пачка #define не есть предмет ... кодогенерации
> Если что, эти заголовочные файлы - результат кодогенерации.Если что, бывает код машинный и код исходный. И хорошо бы уметь понимать из контекста, когда и о чём речь.
Это как волшебная кнопка сделать за....., только на 10 строчек на расте. Адепты и того, и другого верят, и вера их не ослабевает.
Чего Вам покоя не дает Rust вы уже или выучите его и начните писать или просто пройдите как один и миллионов других языков когда-то побывавших в новостях.Уже сколько можно как шило в жопе ей богу ...
Ага, описалово регистров было бы референсом в сишный инклюд, "это все сишники!!!1111" :)
>Около 400 тысяч добавленных строк приходится на автоматически сгенерированные заголовочные файлы с данными для регистров ASIC в драйвере для GPU AMDНужно было положить просто скрипт генерации, чем засорять историю гита всяким мусором.
> Нужно было положить просто скрипт генерации, чем засорять историю гита всяким мусором.В таком случае нужны исходники, на основании которых генератором создаются заголовки (verilog или ХЗ из чего оно генерируются). В любом случае это сведения об архитектуре, которые AMD раскрывать ест-но не хочет.
> Нужно было положить просто скрипт генерации, чем засорять историю гита всяким мусором.Это ты так скромно HDL исходнички GPU у амд попросил? :) И даже морально готов на своих мощностях прогнать всю фазу билдовки чипака такого размера - получив как 1 из артефактов этого процесса .h файлы с регистрами железки? Нюню, святая простота :)
У Интел видео называется звук?
Потому, что Intel Inside
>Что касается использования в Nouveau открытых компанией NVIDIA исходных текстов модулей ядра, то работа пока сводится к выявлению и устранению ошибок. В дальнейшем опубликованную прошивку планируется использовать для повышения производительности драйвера.Правильно! Написанный проприетарщиками высер должен пройти сито воинов Света. Не нужные участки кода должны быть выкинуты.
> GPUVMчто это за штука? Это как gvt-g у интела или что-то другое?
> В ядро Linux 5.19 принято около 500 тысяч строк кода, связанного с графическими драйверамиА ускорение и композитинг в браузере как не работали, так и продолжают не работать даже на открытых интеловских дровах.
Не всё так быстро, для раскрытия потенциала опенсорса надо лет пятнадцать наверно.
На Reddit в теме Firefox банят за инструкции по активации VAAPI 🙂https://www.reddit.com/r/AskFOSS/comments/ui0f4z/got_banned_.../
Активация требует отключение песочницы, и типа такие советы (ухудшающие секурность) запрещено давать.
Пофиксили это, в nightly билдах по крайней мере, работает без отключения песочницы.
> Пофиксили это, в nightly билдах по крайней мере, работает без отключения песочницы.Да. Я знаю - 102.
Традиционное "вот-вот работает в Nightly" 🙂
Ну, сначало в ночных сборках, потом в релиз идёт, что не так-то, в чем претензия? FF самый беспроблемный браузер в плане аппаратного ускорения видео.
Можно попросить какой-то заголовочник или API даже забабахать что бы попроще рисовать в FrameBuffer, а то чет там сейчас развелось очень много всего и DRM, KMOD, FB, FB2, X11, OpenGL, Vulcan короче всего много, а помню в Pascal был один egavga.bgi и все рисовалось просто и удобно. А щас ...
Именно в фреймбуфер? Вот именно консольный? Ну, получить его адрес, одуплить формат и рисовать. Но в отличие от egavga.bgi ща мониторов, разрешений и форматов пикселей больше развелось.А если просто в таком стиле порисовать хочется, и на стероидах - libsdl возьми, геймдевы им пользуются по каким-то таким причинам: абстрагирует слегка сетап низкоуровневых вещей между виндой, линем, маком, ... и можно просто взять и просто нарисовать (примерно то же что в egavga). Правда вот именно чистый фреймбуфер все же экзотика.
А сейчас дикий геморройный зоопарк развелся.(((
Simpledrm
/dev/fb0
Идиотизм - таскать с собой всю гору драйверов в ядре. Винда - пример как нужно делать. Драйвер можно поставить в любую минуту и драйвера идут от производителя железок. Никто в ядро их не вшивает - это просто безумие.
Зато можно диски между системами переставлять и все заводится. Я вот даже для ноута, который у меня рабочий инструмент, готовил систему на десктопе, и когда все было сделано, все данные скопированы, все настроено как надо, тогда просто переставил M2 SSD в ноут.
А если бы все пошло не так я мог бы вернуть старый SSD.
> Идиотизм - таскать с собой всю гору драйверов в ядре. Винда - пример как нужно делать.Знаете, в винде у мну amd gpu дрова висли раз в неделю примерно. В лине можно и пару месяцев аптайма набрать, им похрен, а при траблах я еще и живых кодеров могу выловить. В винде же меня динамили несколько месяцев, но мою проблему так и не решили. Ну нафиг такие примеры, мне мой пример больше нравится.
> Драйвер можно поставить в любую минуту и драйвера идут от производителя железок.
А еще в случае траблов - не доорешься в принципе. Зачастую еще и к 1 конкретной версии на гвозди прибито, особенно на ноутах. А какой красивый вой был от драйверов FTDI которые нагибают клоны, хаха :))). А в лине такое только на 1 апреля патчами присылают, поржать, но конечно в ядро не комитят. Не принято там своих юзеров иметь.