Message ID | 20180410112040.13506-1-ramon.fried@linaro.org |
---|---|
State | New |
Headers | show |
Series | xserver-nodm-init: Respawn service in case of failure | expand |
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
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
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
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