[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