[Resolved]: failed to start gnome/gdm3 wayland session after apply NPU patches

张 宁 zhangn1985 at outlook.com
Sun Mar 24 06:31:46 PDT 2024


Hi, Tomeu

sorry for pick up this issue after more than 1 year.

I find the solusion, and understand why your method doesnt work.

the solution:
1, create a systemd service rmmod etnaviv and modprobe it again.
file: /etc/systemd/system/etnaviv.service

[Unit]
Description=Load etnaviv driver module

[Service]
ExecStart=/bin/sh -c "rmmod etnaviv; sleep 0.5; modprobe etnaviv; sleep 0.5"

[Install]
WantedBy=graphical.target

2, set gdm3 service start after the new server.

file: /etc/systemd/system/gdm.service.d/override.conf

[Unit]
After=etnaviv.service

3, label etnaviv drm device node by udev rules
file: /usr/lib/udev/rules.d/61-mutter-primary-gpu.rules

ENV{ID_PATH}=="platform-etnaviv-card", TAG+="mutter-device-ignore"
ENV{ID_PATH}=="platform-etnaviv-render", TAG+="mutter-device-ignore"

Why only udev rule doesn't work?
udev fails to label drm device at early boot stage, eg
during initramfs. thus I create a new service to reload etnaviv module to let udev label them correctly.

but I don't know why it fail to label at first place.

is there a easy way to get udev label from command line?

BR.
Ning. 


发件人: Tomeu Vizoso <tomeu.vizoso at collabora.com>
发送时间: 2023年1月13日 18:09
收件人: Zhang Ning <zhangn1985 at outlook.com>
抄送: linux-amlogic at lists.infradead.org <linux-amlogic at lists.infradead.org>
主题: Re: failed to start gnome/gdm3 wayland session after apply NPU patches
 
On 1/8/23 03:32, Zhang Ning wrote:
> On Tue, Jan 03, 2023 at 03:46:00PM +0100, Tomeu Vizoso wrote:
>> Hi Ning,
>>
>> On 12/27/22 05:21, Zhang Ning wrote:
>>> Hi, Tomeu
>>>
>>> after apply your NPU patches:
>>> http://lists.infradead.org/pipermail/linux-amlogic/2022-December/014428.html
>>>
>>> VIM3 failed to start gnome/gdm3 wayland session.
>>>
>>> before:
>>>
>>> VIM3:~$ ls /dev/dri/by-path/ -l
>>> total 0
>>> lrwxrwxrwx 1 root root  8 Dec 27 04:06 platform-ff900000.vpu-card -> ../card0
>>> lrwxrwxrwx 1 root root  8 Dec 27 04:06 platform-ffe40000.gpu-card -> ../card1
>>> lrwxrwxrwx 1 root root 13 Dec 27 04:06 platform-ffe40000.gpu-render -> ../renderD128
>>>
>>> after:
>>>
>>> VIM3:~$ ls /dev/dri/by-path/ -l
>>> total 0
>>> lrwxrwxrwx 1 root root  8 Dec 27 04:10 platform-etnaviv-card -> ../card0
>>> lrwxrwxrwx 1 root root 13 Dec 27 04:10 platform-etnaviv-render -> ../renderD128
>>> lrwxrwxrwx 1 root root  8 Dec 27 04:10 platform-ff900000.vpu-card -> ../card1
>>> lrwxrwxrwx 1 root root  8 Dec 27 04:10 platform-ffe40000.gpu-card -> ../card2
>>> lrwxrwxrwx 1 root root 13 Dec 27 04:10 platform-ffe40000.gpu-render -> ../renderD129
>>>
>>> the fail log:
>>> Dec 27 04:10:42 VIM3 gnome-shell[673]: g_hash_table_destroy: assertion 'hash_table != NULL' failed
>>> Dec 27 04:10:42 VIM3 gnome-shell[673]: Failed to open gpu '/dev/dri/card0': No suitable mode setting backend found
>>> Dec 27 04:10:42 VIM3 gnome-shell[673]: Added device '/dev/dri/card1' (meson) using atomic mode setting.
>>> Dec 27 04:10:42 VIM3 gnome-shell[673]: g_hash_table_destroy: assertion 'hash_table != NULL' failed
>>> Dec 27 04:10:42 VIM3 gnome-shell[673]: Failed to open gpu '/dev/dri/card2': No suitable mode setting backend found
>>> Dec 27 04:10:42 VIM3 gnome-shell[673]: Failed to initialize accelerated iGPU/dGPU framebuffer sharing: No matching EGL configs
>>> Dec 27 04:10:42 VIM3 gnome-shell[673]: Created gbm renderer for '/dev/dri/card1'
>>> Dec 27 04:10:42 VIM3 gnome-shell[673]: Integrated GPU /dev/dri/card1 selected as primary
>>>
>>> how to configure system to boot to gui with npu enabled?
>>
>> Maybe you can do that by setting the "mutter-device-preferred-primary"
>> udev tag for card2?
>>
>> https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1562
>
> Hi, Tomeu
>
> I have tried this method.
> cat /usr/lib/udev/rules.d/61-mutter-primary-gpu.rules
> ENV{DEVNAME}=="/dev/dri/card0", TAG+="mutter-device-ignore"
> ENV{DEVNAME}=="/dev/dri/renderD128", TAG+="mutter-device-ignore"
>
> and it does ignore card0
> Jan 08 02:19:06 VIM3 gnome-shell[681]: Ignoring DRM device '/dev/dri/card0'
>
> but the screen still show nothing.
> and when I move mouse,
>
> ning at VIM3:~$ cat /proc/interrupts |grep -e npu -e panfrost
>   16:       1088          0          0          0          0          0     GICv2 179 Level     ff100000.npu
>   39:         24          0          0          0          0          0     GICv2 192 Level     panfrost-gpu
>   40:          0          0          0          0          0          0     GICv2 193 Level     panfrost-mmu
>   41:          0          0          0          0          0          0     GICv2 194 Level     panfrost-job
> ning at VIM3:~$ cat /proc/interrupts |grep -e npu -e panfrost
>   16:       1100          0          0          0          0          0     GICv2 179 Level     ff100000.npu
>   39:         24          0          0          0          0          0     GICv2 192 Level     panfrost-gpu
>   40:          0          0          0          0          0          0     GICv2 193 Level     panfrost-mmu
>   41:          0          0          0          0          0          0     GICv2 194 Level     panfrost-job
>
>
> it looks like gnome-shell still using npu as render.
>
> mutter-device-preferred-primary has same result.

I'm out of ideas, TBH. I think gnome-shell should realize that a EGL
context cannot be created for the render node for the NPU and try the
next device.

Maybe file a bug for gnome-shell?

Cheers,

Tomeu


More information about the linux-amlogic mailing list