<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>41305</bug_id>
          
          <creation_ts>2021-11-09 10:48:21 +0300</creation_ts>
          <short_desc>Нет вывода графики на UEFI, пока не загрузится drm модуль</short_desc>
          <delta_ts>2022-03-02 15:42:49 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>kernel-image-un-def</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugzilla.altlinux.org/show_bug.cgi?id=40232</see_also>
    
    <see_also>https://bugzilla.altlinux.org/show_bug.cgi?id=42057</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>major</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>33000</blocked>
    
    <blocked>40561</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Антон Мидюков">antohami</reporter>
          <assigned_to name="Vitaly Chikunov">vt</assigned_to>
          <cc>aen</cc>
    
    <cc>asheplyakov</cc>
    
    <cc>kernelbot</cc>
    
    <cc>nickel</cc>
    
    <cc>placeholder</cc>
    
    <cc>vt</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>204601</commentid>
    <comment_count>0</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2021-11-09 10:48:21 +0300</bug_when>
    <thetext>Как оказалось проблема с отсутствующим framebuffer у virtualbox (bug 40232) - это вершина айсберга. У ядра un-def при загрузке в UEFI теперь нет вывода графики, пока drm модуль не загрузится. Так что без установленного пакета kernel-image-drm-un-def графики теперь вовсе нет. А в virtualbox drm модуль, видимо, не предоставляет framebuffer.

Проблему можно воспроизвести в qemu, virtualbox, на любом железе с UEFI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204604</commentid>
    <comment_count>1</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2021-11-09 11:39:36 +0300</bug_when>
    <thetext>У ядра std-def CONFIG_FB_SIMPLE=y, а у un-def CONFIG_FB_SIMPLE=m.
Добавление в /etc/initrd.mk:
MODULES_PRELOAD = simplefb
и перегенерация initrd проблему решает.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204644</commentid>
    <comment_count>2</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2021-11-10 06:20:51 +0300</bug_when>
    <thetext>(Ответ для Антон Мидюков на комментарий #1)
&gt; У ядра 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.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204648</commentid>
    <comment_count>3</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2021-11-10 10:28:49 +0300</bug_when>
    <thetext>(Ответ для Антон Мидюков на комментарий #2)
&gt; (Ответ для Антон Мидюков на комментарий #1)
&gt; &gt; У ядра std-def CONFIG_FB_SIMPLE=y, а у un-def CONFIG_FB_SIMPLE=m.
&gt; 
&gt; Это изменение произошло в 5.14.13-alt1. В архивном ядре 5.14.11-alt1 ещё y,
&gt; а в 5.14.13-alt1 уже m. Похоже, причина в коммите:
&gt; http://git.altlinux.org/gears/k/kernel-image-un-def.git?p=kernel-image-un-
&gt; def.git;a=commit;h=b0ee6190e85604cfa7848f002b300c95628f1ee4
&gt; 
&gt; CONFIG_DRM_SIMPLEDRM=m не позволяет CONFIG_FB_SIMPLE=y. Т.е. для встраивания
&gt; одного из них в ядро нужно отключать сборку другого. Вопрос только в том,
&gt; оставить ли CONFIG_FB_SIMPLE или же попробовать перейти на новый
&gt; 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.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204651</commentid>
    <comment_count>4</comment_count>
    <who name="Anton V. Boyarshinov">boyarsh</who>
    <bug_when>2021-11-10 11:27:49 +0300</bug_when>
    <thetext>
&gt; Вообще проблема сборки в виде модуля для обоих конфигов видится в том, что
&gt; ни один, ни другой правилами udev в качестве некоего fallback не загружается.

Согласен. Из этого следует вопрос -- возможно ли и нужно ли такое правило udev написать?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204725</commentid>
    <comment_count>5</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2021-11-11 08:10:43 +0300</bug_when>
    <thetext>(Ответ для Anton V. Boyarshinov на комментарий #4)
&gt; &gt; Вообще проблема сборки в виде модуля для обоих конфигов видится в том, что
&gt; &gt; ни один, ни другой правилами udev в качестве некоего fallback не загружается.
&gt; 
&gt; Согласен. Из этого следует вопрос -- возможно ли и нужно ли такое правило
&gt; udev написать?

На данный момент выяснил, что simpledrm работает нормально не везде. И действительно полезен только в virtualbox с VMware SVGA II Adapter в режиме UEFI.
Загрузку simpledrm.ko, видимо, можно загружать при появлении этого видеоадаптера.
А вот simplefb нужно загружать во всех остальных случаях.
Но проблема в том, что simplefb можно загрузить, а выгрузить не получится.
Кажется сомнительным, что условие &quot;если есть VMware SVGA II Adapter, то грузим simpledrm, а если нет, то грузим simplefb&quot; будет работать, как надо. Может же быть, что на момент запуска udev VMware SVGA II Adapter не доступен. А после загрузки simplefb уже будет поздно это проверять.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206071</commentid>
    <comment_count>6</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2021-12-15 14:39:08 +0300</bug_when>
    <thetext>Я не вижу хорошего решения, как грузить модуль 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. Т.е. приведём в соответствие исходный и итоговый конфиги ядра.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206166</commentid>
    <comment_count>7</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2021-12-17 13:39:39 +0300</bug_when>
    <thetext>Подтверждаю для беты K. После установки пришлось переключиться на VBoxSVGA, тогда загрузка пошла.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206191</commentid>
    <comment_count>8</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2021-12-17 20:11:45 +0300</bug_when>
    <thetext>А может посмотреть, как у соседей с этими модулями?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206224</commentid>
    <comment_count>9</comment_count>
    <who name="Anton V. Boyarshinov">boyarsh</who>
    <bug_when>2021-12-20 12:35:42 +0300</bug_when>
    <thetext>(Ответ для Антон Мидюков на комментарий #6)
&gt; Я не вижу хорошего решения, как грузить модуль simplefb.ko
&gt; Учитывая, что модуль невыгружаемый, то делать его модулем смысла особо нет.
&gt; Единственный случай, когда помогает загрузка simpledrm.ko вместо
&gt; simplefb.ko, это virtualbox в режиме EFI с графикой vmsvga. По-моему, этим
&gt; вполне можно пожертвовать. Пользователи элементарно могут подумать, что
&gt; система не грузится, хотя дело не дошло ещё и до initrd. А если kernel
&gt; panic, то и вовсе увидишь лишь перезагрузку.
&gt; 
&gt; Предлагаю отключить CONFIG_DRM_SIMPLEDRM, чтобы simplefb был в ядре, как
&gt; раньше. Напомню, что сейчас CONFIG_FB_SIMPLE=y, но так как
&gt; CONFIG_DRM_SIMPLEDRM=m, то происходит замена на CONFIG_FB_SIMPLE=m. Т.е.
&gt; приведём в соответствие исходный и итоговый конфиги ядра.

Я сделал соответствующие изменения, будет в следующей сборке.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206292</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Sheplyakov">asheplyakov</who>
    <bug_when>2021-12-22 17:59:40 +0300</bug_when>
    <thetext>(In reply to Антон Мидюков from comment #3)
&gt; (Ответ для Антон Мидюков на комментарий #2)
&gt; &gt; (Ответ для Антон Мидюков на комментарий #1)
&gt; &gt; &gt; У ядра std-def CONFIG_FB_SIMPLE=y, а у un-def CONFIG_FB_SIMPLE=m.
&gt; &gt; 
&gt; &gt; Это изменение произошло в 5.14.13-alt1. В архивном ядре 5.14.11-alt1 ещё y,
&gt; &gt; а в 5.14.13-alt1 уже m. Похоже, причина в коммите:
&gt; &gt; http://git.altlinux.org/gears/k/kernel-image-un-def.git?p=kernel-image-un-
&gt; &gt; def.git;a=commit;h=b0ee6190e85604cfa7848f002b300c95628f1ee4
&gt; &gt; 
&gt; &gt; CONFIG_DRM_SIMPLEDRM=m не позволяет CONFIG_FB_SIMPLE=y. Т.е. для встраивания
&gt; &gt; одного из них в ядро нужно отключать сборку другого. Вопрос только в том,
&gt; &gt; оставить ли CONFIG_FB_SIMPLE или же попробовать перейти на новый
&gt; &gt; CONFIG_DRM_SIMPLEDRM.
&gt; 
&gt; Делать CONFIG_DRM_SIMPLEDRM=y нельзя

А придётся. Дело в том, что не-DRM fbdev драйверы скоро выпилят.
Так что графическая консоль до загрузки initramfs будет только при


CONFIG_DRM=y
CONFIG_DRM_SIMPLEDRM=y

Напоминаю, что другой консоли (кроме графической) зачастую и нет.
Так что в не столь отдалённой перспективе придётся либо мириться с этим багом, ...

&gt; так как он за собой тянет drm.ko,
&gt; drm_helper.ko, cec.ko из пакета kernel-modules-drm-un-def. Да и сам он
&gt; оттуда.

... либо 

а) таки сделать CONFIG_DRM=y, CONSIG_DRM_SIMPLEDRM=y
б) упразднить пакет modules-drm, drm драйверы паковать в kernel-image
в) drm-ненавистникам выдать по ведру настойки пустырника</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206293</commentid>
    <comment_count>11</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2021-12-22 18:03:16 +0300</bug_when>
    <thetext>(Ответ для Alexey Sheplyakov на комментарий #10)
&gt; (In reply to Антон Мидюков from comment #3)
&gt; &gt; (Ответ для Антон Мидюков на комментарий #2)
&gt; &gt; &gt; (Ответ для Антон Мидюков на комментарий #1)
&gt; &gt; &gt; &gt; У ядра std-def CONFIG_FB_SIMPLE=y, а у un-def CONFIG_FB_SIMPLE=m.
&gt; &gt; &gt; 
&gt; &gt; &gt; Это изменение произошло в 5.14.13-alt1. В архивном ядре 5.14.11-alt1 ещё y,
&gt; &gt; &gt; а в 5.14.13-alt1 уже m. Похоже, причина в коммите:
&gt; &gt; &gt; http://git.altlinux.org/gears/k/kernel-image-un-def.git?p=kernel-image-un-
&gt; &gt; &gt; def.git;a=commit;h=b0ee6190e85604cfa7848f002b300c95628f1ee4
&gt; &gt; &gt; 
&gt; &gt; &gt; CONFIG_DRM_SIMPLEDRM=m не позволяет CONFIG_FB_SIMPLE=y. Т.е. для встраивания
&gt; &gt; &gt; одного из них в ядро нужно отключать сборку другого. Вопрос только в том,
&gt; &gt; &gt; оставить ли CONFIG_FB_SIMPLE или же попробовать перейти на новый
&gt; &gt; &gt; CONFIG_DRM_SIMPLEDRM.
&gt; &gt; 
&gt; &gt; Делать CONFIG_DRM_SIMPLEDRM=y нельзя
&gt; 
&gt; А придётся. Дело в том, что не-DRM fbdev драйверы скоро выпилят.
&gt; Так что графическая консоль до загрузки initramfs будет только при
&gt; 
&gt; 
&gt; CONFIG_DRM=y
&gt; CONFIG_DRM_SIMPLEDRM=y
&gt; 
&gt; Напоминаю, что другой консоли (кроме графической) зачастую и нет.
&gt; Так что в не столь отдалённой перспективе придётся либо мириться с этим
&gt; багом, ...
&gt; 
&gt; &gt; так как он за собой тянет drm.ko,
&gt; &gt; drm_helper.ko, cec.ko из пакета kernel-modules-drm-un-def. Да и сам он
&gt; &gt; оттуда.
&gt; 
&gt; ... либо 
&gt; 
&gt; а) таки сделать CONFIG_DRM=y, CONSIG_DRM_SIMPLEDRM=y
&gt; б) упразднить пакет modules-drm, drm драйверы паковать в kernel-image
&gt; в) drm-ненавистникам выдать по ведру настойки пустырника

Вот как выпилят, так так и сделаем. Зачем торопить события?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206294</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Sheplyakov">asheplyakov</who>
    <bug_when>2021-12-22 18:04:40 +0300</bug_when>
    <thetext>(In reply to Антон Мидюков from comment #5)
&gt; (Ответ для Anton V. Boyarshinov на комментарий #4)
&gt; &gt; &gt; Вообще проблема сборки в виде модуля для обоих конфигов видится в том, что
&gt; &gt; &gt; ни один, ни другой правилами udev в качестве некоего fallback не загружается.
&gt; &gt; 
&gt; &gt; Согласен. Из этого следует вопрос -- возможно ли и нужно ли такое правило
&gt; &gt; udev написать?
&gt; 
&gt; На данный момент выяснил, что simpledrm работает нормально не везде.

Где конкретно?

&gt; И действительно полезен только в virtualbox с VMware SVGA II Adapter в режиме UEFI.

Утверждение не соответствует действительности. simpledrmfb полезен на любых UEFI
системах (x86, arm64), arm/arm64 одноплатниках (включая raspberry pi 2/3/4).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206295</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Sheplyakov">asheplyakov</who>
    <bug_when>2021-12-22 18:12:32 +0300</bug_when>
    <thetext>(In reply to Антон Мидюков from comment #11)
&gt; (Ответ для Alexey Sheplyakov на комментарий #10)
&gt; &gt; (In reply to Антон Мидюков from comment #3)
&gt; &gt; &gt; (Ответ для Антон Мидюков на комментарий #2)
&gt; &gt; &gt; &gt; (Ответ для Антон Мидюков на комментарий #1)
&gt; &gt; &gt; &gt; &gt; У ядра std-def CONFIG_FB_SIMPLE=y, а у un-def CONFIG_FB_SIMPLE=m.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Это изменение произошло в 5.14.13-alt1. В архивном ядре 5.14.11-alt1 ещё y,
&gt; &gt; &gt; &gt; а в 5.14.13-alt1 уже m. Похоже, причина в коммите:
&gt; &gt; &gt; &gt; http://git.altlinux.org/gears/k/kernel-image-un-def.git?p=kernel-image-un-
&gt; &gt; &gt; &gt; def.git;a=commit;h=b0ee6190e85604cfa7848f002b300c95628f1ee4
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; CONFIG_DRM_SIMPLEDRM=m не позволяет CONFIG_FB_SIMPLE=y. Т.е. для встраивания
&gt; &gt; &gt; &gt; одного из них в ядро нужно отключать сборку другого. Вопрос только в том,
&gt; &gt; &gt; &gt; оставить ли CONFIG_FB_SIMPLE или же попробовать перейти на новый
&gt; &gt; &gt; &gt; CONFIG_DRM_SIMPLEDRM.
&gt; &gt; &gt; 
&gt; &gt; &gt; Делать CONFIG_DRM_SIMPLEDRM=y нельзя
&gt; &gt; 
&gt; &gt; А придётся. Дело в том, что не-DRM fbdev драйверы скоро выпилят.
&gt; &gt; Так что графическая консоль до загрузки initramfs будет только при
&gt; &gt; 
&gt; &gt; 
&gt; &gt; CONFIG_DRM=y
&gt; &gt; CONFIG_DRM_SIMPLEDRM=y
&gt; &gt; 
&gt; &gt; Напоминаю, что другой консоли (кроме графической) зачастую и нет.
&gt; &gt; Так что в не столь отдалённой перспективе придётся либо мириться с этим
&gt; &gt; багом, ...
&gt; &gt; 
&gt; &gt; &gt; так как он за собой тянет drm.ko,
&gt; &gt; &gt; drm_helper.ko, cec.ko из пакета kernel-modules-drm-un-def. Да и сам он
&gt; &gt; &gt; оттуда.
&gt; &gt; 
&gt; &gt; ... либо 
&gt; &gt; 
&gt; &gt; а) таки сделать CONFIG_DRM=y, CONSIG_DRM_SIMPLEDRM=y
&gt; &gt; б) упразднить пакет modules-drm, drm драйверы паковать в kernel-image
&gt; &gt; в) drm-ненавистникам выдать по ведру настойки пустырника
&gt; 
&gt; Вот как выпилят, так так и сделаем. 

Пока гром не грянет, мужик не перекрестится, ага.

&gt; Зачем торопить события?

Чтобы было время спокойно выяснить, что сломалось, и столь же спокойно починить.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206296</commentid>
    <comment_count>14</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2021-12-22 18:22:44 +0300</bug_when>
    <thetext>(In reply to Alexey Sheplyakov from comment #13)
&gt; &gt; Вот как выпилят, так так и сделаем. 
&gt; Пока гром не грянет, мужик не перекрестится, ага.
А при выпиливании не может появиться ещё каких-то изменений, с этим связаных?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206300</commentid>
    <comment_count>15</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2021-12-22 18:40:42 +0300</bug_when>
    <thetext>(Ответ для Alexey Sheplyakov на комментарий #12)
&gt; (In reply to Антон Мидюков from comment #5)
&gt; &gt; (Ответ для Anton V. Boyarshinov на комментарий #4)
&gt; &gt; &gt; &gt; Вообще проблема сборки в виде модуля для обоих конфигов видится в том, что
&gt; &gt; &gt; &gt; ни один, ни другой правилами udev в качестве некоего fallback не загружается.
&gt; &gt; &gt; 
&gt; &gt; &gt; Согласен. Из этого следует вопрос -- возможно ли и нужно ли такое правило
&gt; &gt; &gt; udev написать?
&gt; &gt; 
&gt; &gt; На данный момент выяснил, что simpledrm работает нормально не везде.
&gt; 
&gt; Где конкретно?
&gt; 

На RPi4 изображение отвалилось в режиме UEFI (u-boot). Вполне возможно, что ещё где-то выстрелит на кривом UEFI.

&gt; &gt; И действительно полезен только в virtualbox с VMware SVGA II Adapter в режиме UEFI.
&gt; 
&gt; Утверждение не соответствует действительности. simpledrmfb полезен на любых
&gt; UEFI
&gt; системах (x86, arm64), arm/arm64 одноплатниках (включая raspberry pi 2/3/4).

simplefb где-то не работает?

&gt;Чтобы было время спокойно выяснить, что сломалось, и столь же спокойно починить.

Можно с 5.16 к примеру начать. А в p10 simplefb проверенный пусть будет пока. Но это пусть решает мантейнер ядра.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208222</commentid>
    <comment_count>16</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2022-03-02 15:27:41 +0300</bug_when>
    <thetext>Проблема была решена отключением CONFIG_DRM_SIMPLEDRM.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>