* failed to start gnome/gdm3 wayland session after apply NPU patches
@ 2022-12-27 4:21 Zhang Ning
2023-01-03 14:46 ` Tomeu Vizoso
0 siblings, 1 reply; 5+ messages in thread
From: Zhang Ning @ 2022-12-27 4:21 UTC (permalink / raw)
To: tomeu.vizoso, linux-amlogic
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?
BR.
Ning.
_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: failed to start gnome/gdm3 wayland session after apply NPU patches
2022-12-27 4:21 failed to start gnome/gdm3 wayland session after apply NPU patches Zhang Ning
@ 2023-01-03 14:46 ` Tomeu Vizoso
2023-01-08 2:32 ` Zhang Ning
0 siblings, 1 reply; 5+ messages in thread
From: Tomeu Vizoso @ 2023-01-03 14:46 UTC (permalink / raw)
To: Zhang Ning, linux-amlogic
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
Regards,
Tomeu
_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: failed to start gnome/gdm3 wayland session after apply NPU patches
2023-01-03 14:46 ` Tomeu Vizoso
@ 2023-01-08 2:32 ` Zhang Ning
2023-01-13 10:09 ` Tomeu Vizoso
0 siblings, 1 reply; 5+ messages in thread
From: Zhang Ning @ 2023-01-08 2:32 UTC (permalink / raw)
To: Tomeu Vizoso; +Cc: linux-amlogic
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@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@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.
BR.
Ning.
>
> Regards,
>
> Tomeu
_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: failed to start gnome/gdm3 wayland session after apply NPU patches
2023-01-08 2:32 ` Zhang Ning
@ 2023-01-13 10:09 ` Tomeu Vizoso
2024-03-24 13:31 ` [Resolved]: " 张 宁
0 siblings, 1 reply; 5+ messages in thread
From: Tomeu Vizoso @ 2023-01-13 10:09 UTC (permalink / raw)
To: Zhang Ning; +Cc: linux-amlogic
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@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@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
_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Resolved]: failed to start gnome/gdm3 wayland session after apply NPU patches
2023-01-13 10:09 ` Tomeu Vizoso
@ 2024-03-24 13:31 ` 张 宁
0 siblings, 0 replies; 5+ messages in thread
From: 张 宁 @ 2024-03-24 13:31 UTC (permalink / raw)
To: Tomeu Vizoso; +Cc: linux-amlogic
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@collabora.com>
发送时间: 2023年1月13日 18:09
收件人: Zhang Ning <zhangn1985@outlook.com>
抄送: linux-amlogic@lists.infradead.org <linux-amlogic@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@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@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
_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-03-24 13:32 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-12-27 4:21 failed to start gnome/gdm3 wayland session after apply NPU patches Zhang Ning
2023-01-03 14:46 ` Tomeu Vizoso
2023-01-08 2:32 ` Zhang Ning
2023-01-13 10:09 ` Tomeu Vizoso
2024-03-24 13:31 ` [Resolved]: " 张 宁
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.