xserver-nodm-init: Respawn service in case of failure

Message ID 20180410112040.13506-1-ramon.fried@linaro.org
State New
Headers show
Series
  • xserver-nodm-init: Respawn service in case of failure
Related show

Commit Message

Ramon Fried April 10, 2018, 11:20 a.m.
From: Ramon Fried <rfried@codeaurora.org>


It appears that sometimes xserver-nodm.service is starting before
display driver finished loading causing the following failure in
Xorg log:
(EE) open /dev/dri/card0: No such file or directory

The introduced by this patch is to restart the service,
hopefully the display driver will finish loading.

Signed-off-by: Ramon Fried <rfried@codeaurora.org>

---
 .../x11-common/xserver-nodm-init/xserver-nodm.service.in                 | 1 +
 1 file changed, 1 insertion(+)

-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Comments

Nicolas Dechesne April 10, 2018, 7:48 p.m. | #1
On Tue, Apr 10, 2018 at 1:20 PM, Ramon Fried <ramon.fried@linaro.org> wrote:
> From: Ramon Fried <rfried@codeaurora.org>

>

> It appears that sometimes xserver-nodm.service is starting before

> display driver finished loading causing the following failure in

> Xorg log:

> (EE) open /dev/dri/card0: No such file or directory

>

> The introduced by this patch is to restart the service,

> hopefully the display driver will finish loading.

>

> Signed-off-by: Ramon Fried <rfried@codeaurora.org>


we are seeing this issue on Dragonboard with meta-qcom BSP, where all
drivers needed for display/gpu are modules, so the display
initialization comes up 'late' in the boot. I had a discussion with
some upstream gnome folks who indicated that a similar race can be
observed on any hardware, it is not uncommon, and that's why they use
Restart=always in gdm.service as well, so that it keep trying until
the display comes up.

it sounds reasonable change to me.

Reviewed-by: Nicolas Dechesne <nicolas.dechesne@linaro.org>


> ---

>  .../x11-common/xserver-nodm-init/xserver-nodm.service.in                 | 1 +

>  1 file changed, 1 insertion(+)

>

> diff --git a/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.service.in b/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.service.in

> index 324a26f549..87dc4f8fcd 100644

> --- a/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.service.in

> +++ b/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.service.in

> @@ -5,6 +5,7 @@ Description=Xserver startup without a display manager

>  EnvironmentFile=/etc/default/xserver-nodm

>  User=@USER@

>  ExecStart=/etc/xserver-nodm/Xserver

> +Restart=always

>

>  [Install]

>  Alias=display-manager.service

> --

> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,

> a Linux Foundation Collaborative Project

>

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core
Khem Raj April 12, 2018, 3:55 p.m. | #2
On 4/10/18 12:48 PM, Nicolas Dechesne wrote:
> On Tue, Apr 10, 2018 at 1:20 PM, Ramon Fried <ramon.fried@linaro.org> wrote:

>> From: Ramon Fried <rfried@codeaurora.org>

>>

>> It appears that sometimes xserver-nodm.service is starting before

>> display driver finished loading causing the following failure in

>> Xorg log:

>> (EE) open /dev/dri/card0: No such file or directory

>>

>> The introduced by this patch is to restart the service,

>> hopefully the display driver will finish loading.

>>

>> Signed-off-by: Ramon Fried <rfried@codeaurora.org>

> 

> we are seeing this issue on Dragonboard with meta-qcom BSP, where all

> drivers needed for display/gpu are modules, so the display

> initialization comes up 'late' in the boot. I had a discussion with

> some upstream gnome folks who indicated that a similar race can be

> observed on any hardware, it is not uncommon, and that's why they use

> Restart=always in gdm.service as well, so that it keep trying until

> the display comes up.

> 

> it sounds reasonable change to me.


Restarting service always seems like a workaround here. I wonder if the
kernel modules tied themselves to systemd-modules-load.service then the
dependencies should
sort themselves out. Alternatively we can also create a dependency on
device being made available.

> 

> Reviewed-by: Nicolas Dechesne <nicolas.dechesne@linaro.org>

> 

>> ---

>>  .../x11-common/xserver-nodm-init/xserver-nodm.service.in                 | 1 +

>>  1 file changed, 1 insertion(+)

>>

>> diff --git a/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.service.in b/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.service.in

>> index 324a26f549..87dc4f8fcd 100644

>> --- a/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.service.in

>> +++ b/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.service.in

>> @@ -5,6 +5,7 @@ Description=Xserver startup without a display manager

>>  EnvironmentFile=/etc/default/xserver-nodm

>>  User=@USER@

>>  ExecStart=/etc/xserver-nodm/Xserver

>> +Restart=always

>>

>>  [Install]

>>  Alias=display-manager.service

>> --

>> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,

>> a Linux Foundation Collaborative Project

>>


-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core
Nicolas Dechesne April 12, 2018, 4:27 p.m. | #3
On Thu, Apr 12, 2018 at 5:55 PM, Khem Raj <raj.khem@gmail.com> wrote:
> On 4/10/18 12:48 PM, Nicolas Dechesne wrote:

>> On Tue, Apr 10, 2018 at 1:20 PM, Ramon Fried <ramon.fried@linaro.org> wrote:

>>> From: Ramon Fried <rfried@codeaurora.org>

>>>

>>> It appears that sometimes xserver-nodm.service is starting before

>>> display driver finished loading causing the following failure in

>>> Xorg log:

>>> (EE) open /dev/dri/card0: No such file or directory

>>>

>>> The introduced by this patch is to restart the service,

>>> hopefully the display driver will finish loading.

>>>

>>> Signed-off-by: Ramon Fried <rfried@codeaurora.org>

>>

>> we are seeing this issue on Dragonboard with meta-qcom BSP, where all

>> drivers needed for display/gpu are modules, so the display

>> initialization comes up 'late' in the boot. I had a discussion with

>> some upstream gnome folks who indicated that a similar race can be

>> observed on any hardware, it is not uncommon, and that's why they use

>> Restart=always in gdm.service as well, so that it keep trying until

>> the display comes up.

>>

>> it sounds reasonable change to me.

>

> Restarting service always seems like a workaround here. I wonder if the

> kernel modules tied themselves to systemd-modules-load.service then the

> dependencies should

> sort themselves out. Alternatively we can also create a dependency on

> device being made available.


I would tend to agree that restart is a workaround, but since
gdm.service does that too, i thought it wasn't so bad..

we tried with a udev rule like that:

ACTION=="add", SUBSYSTEM=="drm", KERNEL=="card0", TAG+="systemd",
ENV{SYSTEMD_WANTS}+="xserver-nodm.service"

and it works well too.

between the two, i still prefer the restart=always..

>

>>

>> Reviewed-by: Nicolas Dechesne <nicolas.dechesne@linaro.org>

>>

>>> ---

>>>  .../x11-common/xserver-nodm-init/xserver-nodm.service.in                 | 1 +

>>>  1 file changed, 1 insertion(+)

>>>

>>> diff --git a/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.service.in b/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.service.in

>>> index 324a26f549..87dc4f8fcd 100644

>>> --- a/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.service.in

>>> +++ b/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.service.in

>>> @@ -5,6 +5,7 @@ Description=Xserver startup without a display manager

>>>  EnvironmentFile=/etc/default/xserver-nodm

>>>  User=@USER@

>>>  ExecStart=/etc/xserver-nodm/Xserver

>>> +Restart=always

>>>

>>>  [Install]

>>>  Alias=display-manager.service

>>> --

>>> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,

>>> a Linux Foundation Collaborative Project

>>>

>

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Patch

diff --git a/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.service.in b/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.service.in
index 324a26f549..87dc4f8fcd 100644
--- a/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.service.in
+++ b/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.service.in
@@ -5,6 +5,7 @@  Description=Xserver startup without a display manager
 EnvironmentFile=/etc/default/xserver-nodm
 User=@USER@
 ExecStart=/etc/xserver-nodm/Xserver
+Restart=always
 
 [Install]
 Alias=display-manager.service