И это всё МОЁ
Лично я готов дать 10 т.р. и те кто готов присоединится к разработке или финансированию рефакторинга пусть отписываются в этой теме указав сумму, способ связи и начисления доната.
Разработчики(получатели доната) должны дополнительно указать что они за этот донат будут делать.
П.С.Хотя о чём я думаю? Линуксойды днищеброды, я хоть и курьер, а наверняка никто мой донат не переплюнет.
Мотивация:
- Необходимость исправить указанные Линусом ошибки: Линуса гномеры покусали?
- Запуск иксов на дополнительной отдельной видеокарте нарушает работу консоли на основной видеокарте.
- Если раньше собственно консоль и иксы пользовались раздельными драйверами, и переключение в консоль при переполнении ОЗУ приводило к переключению на другой драйвер которому для нормальной работы хватало оставшейся памяти, что позволяло запустить htop и вручную удалить занимающий всю свободную память процесс, то теперь, когда благодаря KMS иксы и консоль используют один драйвер так уже сделать нельзя, распухшая графическая программа парализует работу графики и иксах, и в консоли.
Что имхо надо, оно же ТЗ:
- Вынести код консоли в отдельный модуль ядра, который должен уметь принимать опции инициализации и как аргумент запуска модуля, и как опцию в командной строке ядра, при этом опции в командной строке ядра должны иметь приоритет.
- В состав принимаемых модулем опций должны входить:
2.1 Однозначная идентификация используемой видеокарты по []:[][:<class>] или по [[[]:]]:][<slot>][.[]]
2.2 Аналогично однозначная идентификация назначаемых модулю клавиатуры и мыши, может просто как список устройств без указания их типа.
Возможно следует просто указывать конкретный root_hub, к которому буду подключатся соответствующие USB устройства.
2.3 Модуль должен использовать только статичное выделение памяти с запретом свопинга(Мотивация 3) и принимать в опциях размер буферов, под которые сразу должен выделять память и не менять самостоятельно её в процессе работы, но возможно создание в /proc или /sys отдельной директории с параметрами через которые можно будет поменять размер тех или иных буферов. - Должна быть предусмотрена возможность параллельной загрузки и работы нескольких таких модулей, на разных комплектах из видеокарты, клавиатуры и прочих USB устройств, этот модуь должен уметь проверять занятие устройств другими модулями и выдавать соответствующую ошибку и список со статусом, кто чем занят всех имеющихся устройств.
Вообще надо подумать как будут обрабатываться конфликты занятости устройства. - Модуль должен использовать только общие стандартные интерфейсы видеокарт(Мотивация 3)
- При запуске на той или иной видеокарте иксервера модуль должен передавать и принимать управление видеокартой аналогично тому, как это происходило до появления KMS и modesetting.
Так же он должен суметь передать и все сопутствующие устройства ввода(тут возможно придётся попилить и икссервер) - В принципе хорошо бы и сам иксервер переписать так, чтобы при параллельном запуске нескольких иксерверов на разных видеокартах каждый бы иксервер занимал устройства ввода с определённых usb root hub, ну или в общем виде расширить эту концепцию на всю шину scsi