Summary: | Нет вывода графики на UEFI, пока не загрузится drm модуль | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Антон Мидюков <antohami> |
Component: | kernel-image-un-def | Assignee: | Vitaly Chikunov <vt> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | major | ||
Priority: | P5 | CC: | aen, asheplyakov, kernelbot, nickel, placeholder, vt |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux | ||
See Also: |
https://bugzilla.altlinux.org/show_bug.cgi?id=40232 https://bugzilla.altlinux.org/show_bug.cgi?id=42057 |
||
Bug Depends on: | |||
Bug Blocks: | 33000, 40561 |
Description
Антон Мидюков
2021-11-09 10:48:21 MSK
У ядра std-def CONFIG_FB_SIMPLE=y, а у un-def CONFIG_FB_SIMPLE=m. Добавление в /etc/initrd.mk: MODULES_PRELOAD = simplefb и перегенерация initrd проблему решает. (Ответ для Антон Мидюков на комментарий #1) > У ядра std-def CONFIG_FB_SIMPLE=y, а у un-def CONFIG_FB_SIMPLE=m. Это изменение произошло в 5.14.13-alt1. В архивном ядре 5.14.11-alt1 ещё y, а в 5.14.13-alt1 уже m. Похоже, причина в коммите: http://git.altlinux.org/gears/k/kernel-image-un-def.git?p=kernel-image-un-def.git;a=commit;h=b0ee6190e85604cfa7848f002b300c95628f1ee4 CONFIG_DRM_SIMPLEDRM=m не позволяет CONFIG_FB_SIMPLE=y. Т.е. для встраивания одного из них в ядро нужно отключать сборку другого. Вопрос только в том, оставить ли CONFIG_FB_SIMPLE или же попробовать перейти на новый CONFIG_DRM_SIMPLEDRM. (Ответ для Антон Мидюков на комментарий #2) > (Ответ для Антон Мидюков на комментарий #1) > > У ядра std-def CONFIG_FB_SIMPLE=y, а у un-def CONFIG_FB_SIMPLE=m. > > Это изменение произошло в 5.14.13-alt1. В архивном ядре 5.14.11-alt1 ещё y, > а в 5.14.13-alt1 уже m. Похоже, причина в коммите: > http://git.altlinux.org/gears/k/kernel-image-un-def.git?p=kernel-image-un- > def.git;a=commit;h=b0ee6190e85604cfa7848f002b300c95628f1ee4 > > CONFIG_DRM_SIMPLEDRM=m не позволяет CONFIG_FB_SIMPLE=y. Т.е. для встраивания > одного из них в ядро нужно отключать сборку другого. Вопрос только в том, > оставить ли CONFIG_FB_SIMPLE или же попробовать перейти на новый > CONFIG_DRM_SIMPLEDRM. Делать CONFIG_DRM_SIMPLEDRM=y нельзя, так как он за собой тянет drm.ko, drm_helper.ko, cec.ko из пакета kernel-modules-drm-un-def. Да и сам он оттуда. Вообще проблема сборки в виде модуля для обоих конфигов видится в том, что ни один, ни другой правилами udev в качестве некоего fallback не загружается. Также выяснил, что проблему с framebuffer в virtualbox решает загрузка модуля simpledrm.ko. Так что, возможно, стоит грузить модуль simpledrm.ko в initrd.
> Вообще проблема сборки в виде модуля для обоих конфигов видится в том, что
> ни один, ни другой правилами udev в качестве некоего fallback не загружается.
Согласен. Из этого следует вопрос -- возможно ли и нужно ли такое правило udev написать?
(Ответ для Anton V. Boyarshinov на комментарий #4) > > Вообще проблема сборки в виде модуля для обоих конфигов видится в том, что > > ни один, ни другой правилами udev в качестве некоего fallback не загружается. > > Согласен. Из этого следует вопрос -- возможно ли и нужно ли такое правило > udev написать? На данный момент выяснил, что simpledrm работает нормально не везде. И действительно полезен только в virtualbox с VMware SVGA II Adapter в режиме UEFI. Загрузку simpledrm.ko, видимо, можно загружать при появлении этого видеоадаптера. А вот simplefb нужно загружать во всех остальных случаях. Но проблема в том, что simplefb можно загрузить, а выгрузить не получится. Кажется сомнительным, что условие "если есть VMware SVGA II Adapter, то грузим simpledrm, а если нет, то грузим simplefb" будет работать, как надо. Может же быть, что на момент запуска udev VMware SVGA II Adapter не доступен. А после загрузки simplefb уже будет поздно это проверять. Я не вижу хорошего решения, как грузить модуль simplefb.ko Учитывая, что модуль невыгружаемый, то делать его модулем смысла особо нет. Единственный случай, когда помогает загрузка simpledrm.ko вместо simplefb.ko, это virtualbox в режиме EFI с графикой vmsvga. По-моему, этим вполне можно пожертвовать. Пользователи элементарно могут подумать, что система не грузится, хотя дело не дошло ещё и до initrd. А если kernel panic, то и вовсе увидишь лишь перезагрузку. Предлагаю отключить CONFIG_DRM_SIMPLEDRM, чтобы simplefb был в ядре, как раньше. Напомню, что сейчас CONFIG_FB_SIMPLE=y, но так как CONFIG_DRM_SIMPLEDRM=m, то происходит замена на CONFIG_FB_SIMPLE=m. Т.е. приведём в соответствие исходный и итоговый конфиги ядра. Подтверждаю для беты K. После установки пришлось переключиться на VBoxSVGA, тогда загрузка пошла. А может посмотреть, как у соседей с этими модулями? (Ответ для Антон Мидюков на комментарий #6) > Я не вижу хорошего решения, как грузить модуль simplefb.ko > Учитывая, что модуль невыгружаемый, то делать его модулем смысла особо нет. > Единственный случай, когда помогает загрузка simpledrm.ko вместо > simplefb.ko, это virtualbox в режиме EFI с графикой vmsvga. По-моему, этим > вполне можно пожертвовать. Пользователи элементарно могут подумать, что > система не грузится, хотя дело не дошло ещё и до initrd. А если kernel > panic, то и вовсе увидишь лишь перезагрузку. > > Предлагаю отключить CONFIG_DRM_SIMPLEDRM, чтобы simplefb был в ядре, как > раньше. Напомню, что сейчас CONFIG_FB_SIMPLE=y, но так как > CONFIG_DRM_SIMPLEDRM=m, то происходит замена на CONFIG_FB_SIMPLE=m. Т.е. > приведём в соответствие исходный и итоговый конфиги ядра. Я сделал соответствующие изменения, будет в следующей сборке. (In reply to Антон Мидюков from comment #3) > (Ответ для Антон Мидюков на комментарий #2) > > (Ответ для Антон Мидюков на комментарий #1) > > > У ядра std-def CONFIG_FB_SIMPLE=y, а у un-def CONFIG_FB_SIMPLE=m. > > > > Это изменение произошло в 5.14.13-alt1. В архивном ядре 5.14.11-alt1 ещё y, > > а в 5.14.13-alt1 уже m. Похоже, причина в коммите: > > http://git.altlinux.org/gears/k/kernel-image-un-def.git?p=kernel-image-un- > > def.git;a=commit;h=b0ee6190e85604cfa7848f002b300c95628f1ee4 > > > > CONFIG_DRM_SIMPLEDRM=m не позволяет CONFIG_FB_SIMPLE=y. Т.е. для встраивания > > одного из них в ядро нужно отключать сборку другого. Вопрос только в том, > > оставить ли CONFIG_FB_SIMPLE или же попробовать перейти на новый > > CONFIG_DRM_SIMPLEDRM. > > Делать CONFIG_DRM_SIMPLEDRM=y нельзя А придётся. Дело в том, что не-DRM fbdev драйверы скоро выпилят. Так что графическая консоль до загрузки initramfs будет только при CONFIG_DRM=y CONFIG_DRM_SIMPLEDRM=y Напоминаю, что другой консоли (кроме графической) зачастую и нет. Так что в не столь отдалённой перспективе придётся либо мириться с этим багом, ... > так как он за собой тянет drm.ko, > drm_helper.ko, cec.ko из пакета kernel-modules-drm-un-def. Да и сам он > оттуда. ... либо а) таки сделать CONFIG_DRM=y, CONSIG_DRM_SIMPLEDRM=y б) упразднить пакет modules-drm, drm драйверы паковать в kernel-image в) drm-ненавистникам выдать по ведру настойки пустырника (Ответ для Alexey Sheplyakov на комментарий #10) > (In reply to Антон Мидюков from comment #3) > > (Ответ для Антон Мидюков на комментарий #2) > > > (Ответ для Антон Мидюков на комментарий #1) > > > > У ядра std-def CONFIG_FB_SIMPLE=y, а у un-def CONFIG_FB_SIMPLE=m. > > > > > > Это изменение произошло в 5.14.13-alt1. В архивном ядре 5.14.11-alt1 ещё y, > > > а в 5.14.13-alt1 уже m. Похоже, причина в коммите: > > > http://git.altlinux.org/gears/k/kernel-image-un-def.git?p=kernel-image-un- > > > def.git;a=commit;h=b0ee6190e85604cfa7848f002b300c95628f1ee4 > > > > > > CONFIG_DRM_SIMPLEDRM=m не позволяет CONFIG_FB_SIMPLE=y. Т.е. для встраивания > > > одного из них в ядро нужно отключать сборку другого. Вопрос только в том, > > > оставить ли CONFIG_FB_SIMPLE или же попробовать перейти на новый > > > CONFIG_DRM_SIMPLEDRM. > > > > Делать CONFIG_DRM_SIMPLEDRM=y нельзя > > А придётся. Дело в том, что не-DRM fbdev драйверы скоро выпилят. > Так что графическая консоль до загрузки initramfs будет только при > > > CONFIG_DRM=y > CONFIG_DRM_SIMPLEDRM=y > > Напоминаю, что другой консоли (кроме графической) зачастую и нет. > Так что в не столь отдалённой перспективе придётся либо мириться с этим > багом, ... > > > так как он за собой тянет drm.ko, > > drm_helper.ko, cec.ko из пакета kernel-modules-drm-un-def. Да и сам он > > оттуда. > > ... либо > > а) таки сделать CONFIG_DRM=y, CONSIG_DRM_SIMPLEDRM=y > б) упразднить пакет modules-drm, drm драйверы паковать в kernel-image > в) drm-ненавистникам выдать по ведру настойки пустырника Вот как выпилят, так так и сделаем. Зачем торопить события? (In reply to Антон Мидюков from comment #5) > (Ответ для Anton V. Boyarshinov на комментарий #4) > > > Вообще проблема сборки в виде модуля для обоих конфигов видится в том, что > > > ни один, ни другой правилами udev в качестве некоего fallback не загружается. > > > > Согласен. Из этого следует вопрос -- возможно ли и нужно ли такое правило > > udev написать? > > На данный момент выяснил, что simpledrm работает нормально не везде. Где конкретно? > И действительно полезен только в virtualbox с VMware SVGA II Adapter в режиме UEFI. Утверждение не соответствует действительности. simpledrmfb полезен на любых UEFI системах (x86, arm64), arm/arm64 одноплатниках (включая raspberry pi 2/3/4). (In reply to Антон Мидюков from comment #11) > (Ответ для Alexey Sheplyakov на комментарий #10) > > (In reply to Антон Мидюков from comment #3) > > > (Ответ для Антон Мидюков на комментарий #2) > > > > (Ответ для Антон Мидюков на комментарий #1) > > > > > У ядра std-def CONFIG_FB_SIMPLE=y, а у un-def CONFIG_FB_SIMPLE=m. > > > > > > > > Это изменение произошло в 5.14.13-alt1. В архивном ядре 5.14.11-alt1 ещё y, > > > > а в 5.14.13-alt1 уже m. Похоже, причина в коммите: > > > > http://git.altlinux.org/gears/k/kernel-image-un-def.git?p=kernel-image-un- > > > > def.git;a=commit;h=b0ee6190e85604cfa7848f002b300c95628f1ee4 > > > > > > > > CONFIG_DRM_SIMPLEDRM=m не позволяет CONFIG_FB_SIMPLE=y. Т.е. для встраивания > > > > одного из них в ядро нужно отключать сборку другого. Вопрос только в том, > > > > оставить ли CONFIG_FB_SIMPLE или же попробовать перейти на новый > > > > CONFIG_DRM_SIMPLEDRM. > > > > > > Делать CONFIG_DRM_SIMPLEDRM=y нельзя > > > > А придётся. Дело в том, что не-DRM fbdev драйверы скоро выпилят. > > Так что графическая консоль до загрузки initramfs будет только при > > > > > > CONFIG_DRM=y > > CONFIG_DRM_SIMPLEDRM=y > > > > Напоминаю, что другой консоли (кроме графической) зачастую и нет. > > Так что в не столь отдалённой перспективе придётся либо мириться с этим > > багом, ... > > > > > так как он за собой тянет drm.ko, > > > drm_helper.ko, cec.ko из пакета kernel-modules-drm-un-def. Да и сам он > > > оттуда. > > > > ... либо > > > > а) таки сделать CONFIG_DRM=y, CONSIG_DRM_SIMPLEDRM=y > > б) упразднить пакет modules-drm, drm драйверы паковать в kernel-image > > в) drm-ненавистникам выдать по ведру настойки пустырника > > Вот как выпилят, так так и сделаем. Пока гром не грянет, мужик не перекрестится, ага. > Зачем торопить события? Чтобы было время спокойно выяснить, что сломалось, и столь же спокойно починить. (In reply to Alexey Sheplyakov from comment #13) > > Вот как выпилят, так так и сделаем. > Пока гром не грянет, мужик не перекрестится, ага. А при выпиливании не может появиться ещё каких-то изменений, с этим связаных? (Ответ для Alexey Sheplyakov на комментарий #12) > (In reply to Антон Мидюков from comment #5) > > (Ответ для Anton V. Boyarshinov на комментарий #4) > > > > Вообще проблема сборки в виде модуля для обоих конфигов видится в том, что > > > > ни один, ни другой правилами udev в качестве некоего fallback не загружается. > > > > > > Согласен. Из этого следует вопрос -- возможно ли и нужно ли такое правило > > > udev написать? > > > > На данный момент выяснил, что simpledrm работает нормально не везде. > > Где конкретно? > На RPi4 изображение отвалилось в режиме UEFI (u-boot). Вполне возможно, что ещё где-то выстрелит на кривом UEFI. > > И действительно полезен только в virtualbox с VMware SVGA II Adapter в режиме UEFI. > > Утверждение не соответствует действительности. simpledrmfb полезен на любых > UEFI > системах (x86, arm64), arm/arm64 одноплатниках (включая raspberry pi 2/3/4). simplefb где-то не работает? >Чтобы было время спокойно выяснить, что сломалось, и столь же спокойно починить. Можно с 5.16 к примеру начать. А в p10 simplefb проверенный пусть будет пока. Но это пусть решает мантейнер ядра. Проблема была решена отключением CONFIG_DRM_SIMPLEDRM. |