[Arm64-baikalm] Регресс в ядре 5.15
Alexey Sheplyakov
asheplyakov на basealt.ru
Пн Июн 27 18:03:38 MSK 2022
Здравствуйте, Николай!
On Fri, Jun 24, 2022 at 01:56:39PM +0300, Nikolay Zhuravlev wrote:
> Мы тут обнаружили, что в Simpy Linux 10 на платах et101 не работает HDA звук.
Уже работает, начиная с kernel-image-std-def 1:5.10.117-alt1.
А также в ядрах kernel-image-rpi-def версий 5.15.x.
> В связи с этим решили попробовать более новые ядра, в частности
> ядро 5.15 вот отсюда:
> https://github.com/altlinux/linux-arm.git -b baikalm-5.15.y-next
>
> Звук там появился, всё нормально, отображаются две карты в /proc/asound/cards.
> Однако обнаружили некоторые шероховатости в графике под этим ядром,
> которые описываю ниже.
> 3. Замедление gtkperf тестов примерно в два раза по сравнению со стоковым
> ядром 5.10.88-std-def-alt1.
>
> 4. Замедление glmark2 тестов по сравнению с ядром 5.10:
>
> $ glmark2-es2 -b shading --annotate
>
> XFCE + 5.10.88-std-def-alt1: 424 FPS
> XFCE + 5.15.29-51730-g01c2ae844980: 296 FPS
>
> 5. Еще более существенное замедление glmark2 тестов в GNOME/Wayland:
>
> $ glmark2-es2-wayland -b shading --annotate
>
> GNOME/Xwayland + 5.10.88-std-def-alt1: 741 FPS
> GNOME/Xwayland + 5.15.29-51730-g01c2ae844980: 371 FPS
Ожидаемый эффект. panfrost (Mesa) не умеет использовать некогерентные (по кешу)
шейдерные ядра, и это неумение приводит к серьёзным артефактам ("рваные
треугольники", "чёрный экран") и "случайному" зависанию GPU. Поэтому у T628
используется только первая группа шейдерных ядер, в случае Байкал-М -- 4 из 8.
Более подробное объяснение:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6e55d273708b2a9485eb7c035efd2757fdae1869
Раньше (по незнанию) использовали обе группы шейдерных ядер, что вызывало
периодические зависания GPU. Теперь разобрались, и используем только первую
группу шейдерных ядер. Зависания GPU прекратились, но FPS теперь в 2 раза меньше, да.
> 1. Временные артефакты отображения в Хромиум, как на картинке:
> https://drive.google.com/file/d/1e7fpI0-fJzuI9_LQufjkXyqDEtvD8gFJ/view?usp=sharing
>
> 2. Если вместо XFCE запускать GNOME/XWayland, то похожие артефакты
> воспроизводятся на тестах gtkperf (gtkperf -a -c 500).
> https://drive.google.com/file/d/1l_Btph1c5ZmlltsCJLuUCg70NINmnpUX/view?usp=sharing
а) Я такое видел в Mate. Лечилось включением "программного" композитинга
(в кавычках - поскольку при этом используется GL ES).
б) Такого рода артефакты я иногда наблюдаю и без panfrost (на TF307).
> Что касается визуальных артефактов, то нам удалось их вылечить откатыванием
> патча про dma-coherent для gpu0 в *.dts. Наш патч для 5.15 прилагаю. Видимо,
> добавление dma-coherent в dts не помогает на 100%, и всё равно приходится
> залезать руками в panfrost_mmu.c, как оно и было в ядре 5.10.
Этот патч неправильный, подробности здесь:
https://lists.freedesktop.org/archives/dri-devel/2021-December/335750.html
> Относительно замедлений в gtkperf/glmark пока теряемся в догадках.
panfrost (Mesa) не умеет использовать некогерентные (по кешу) шейдерные ядра,
и это неумение весьма быстро приводит к зависанию GPU. Поэтому у T628
используется только первая группа шейдерных ядер, в случае Байкал-М -- 4 из 8.
> Наблюдаете ли вы вышеописанное на своих досках? Или это только свойственно ET101?
1. Неспособность panfrost использовать все шейдерные ядра Mali T628 проявляется
на всех платах с Байкал-М, которые мне попадались (TF307, ET101, AQBM1000).
2. Артефакты вида "перечёркивание" [1] также наблюдал на TF307, AQBM1000,
с panfrost и без него. Думаю, что это какая-то кривизна драйвера baikal_vdu,
а возможно - особенность аппаратуры.
[1] https://drive.google.com/file/d/1e7fpI0-fJzuI9_LQufjkXyqDEtvD8gFJ/view?usp=sharing
Подробная информация о списке рассылки Arm64-baikalm