meta-agl-profile-graphical: add device dependency hook in weston-init 88/25688/5
authorScott Murray <scott.murray@konsulko.com>
Tue, 1 Dec 2020 00:17:29 +0000 (19:17 -0500)
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>
Wed, 9 Dec 2020 16:35:21 +0000 (16:35 +0000)
Add a mechanism in the weston-init recipe to allow machine templates
to trigger installation of a systemd drop-in that adds a DRM device
dependency for the weston@.service unit.  Also, tweak the qemux86-64
configuration to enable doing so against dev-dri-card0.device to avoid
startup failures due to the slow i915 initialization on e.g. the
UpSquared.  This approach has been taken since it seems safer for now
to only apply it for qemux86-64 than doing a blanket default that
might then need to be over-ridden for vendor BSPs.

Bug-AGL: SPEC-3518

Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Change-Id: I74ce4f878f9aa3f0d555f96a79578f3d8ca72550
Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl/+/25688
ci-image-build: Jenkins Job builder account <agl-jobbuilder@automotivelinux.org>
Tested-by: Jenkins Job builder account <agl-jobbuilder@automotivelinux.org>
ci-image-boot-test: Jenkins Job builder account <agl-jobbuilder@automotivelinux.org>
Reviewed-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org>
meta-agl-bsp/conf/include/agl_qemux86-64.inc
meta-agl-profile-graphical/recipes-graphics/wayland/weston-init.bbappend
meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston-dep.conf.in [new file with mode: 0644]

index 3915a5e..8131000 100644 (file)
@@ -43,5 +43,8 @@ ROOT_VM = "root=PARTUUID=${DISK_SIGNATURE}-02"
 # Force the virtio video device as 'vmware' doesn't always work
 QB_OPT_APPEND_append = " -vga virtio"
 
+# DRM device weston/compositor systemd unit should depend upon
+WESTON_DRM_DEVICE = "dev-dri-card0.device"
+
 # Use our own wks file
 WKS_FILE="systemd-intel-corei7-64-bootdisk.wks"
index 374e9aa..b3fecec 100644 (file)
@@ -7,8 +7,16 @@ AGL_DEFAULT_WESTONSTART ??= "/usr/bin/agl-compositor --config ${sysconfdir}/xdg/
 WESTONSTART ??= "${AGL_DEFAULT_WESTONSTART} ${WESTONARGS}"
 WESTONSTART_append = " ${@bb.utils.contains("IMAGE_FEATURES", "debug-tweaks", " --log=${DISPLAY_XDG_RUNTIME_DIR}/compositor.log", "",d)}"
 
+# Systemd name of DRM device to have weston/agl-compositor startup depend
+# upon, if required.  Currently only x86-64 seems to need a dependency to
+# avoid failures due to racing with i915 driver init on e.g. UpSquared.
+# It seems safer for now to only apply it there rather than doing a blanket
+# default everywhere that might then need to be over-ridden for vendor BSPs.
+WESTON_DRM_DEVICE ?= ""
+
 WIFILES = " \
     file://weston.conf.in \
+    file://weston-dep.conf.in \
     file://tmpfiles.conf.in \
     file://zz-dri.rules.in \
     file://zz-input.rules.in \
@@ -37,6 +45,7 @@ do_install_append() {
                 -e "s,@WESTONGROUP@,${WESTONGROUP},g" \
                 -e "s,@XDG_RUNTIME_DIR@,${DISPLAY_XDG_RUNTIME_DIR},g" \
                 -e "s,@WESTONSTART@,${WESTONSTART},g" \
+                -e "s,@WESTON_DRM_DEVICE@,${WESTON_DRM_DEVICE},g" \
                     ${WORKDIR}/${f} > ${WORKDIR}/${g}
         fi
     done
@@ -45,6 +54,11 @@ do_install_append() {
     install -d ${D}${systemd_system_unitdir}/weston@.service.d
     install -m644 ${WORKDIR}/weston.conf ${D}/${systemd_system_unitdir}/weston@.service.d/weston-init.conf
 
+    # Install weston DRM device dependency drop-in if required
+    if [ -n "${WESTON_DRM_DEVICE}" ]; then
+        install -m 0644 ${WORKDIR}/weston-dep.conf ${D}/${systemd_system_unitdir}/weston@.service.d/
+    fi
+
     # Install tmpfiles drop-in
     install -d ${D}${libdir}/tmpfiles.d
     install -m644 ${WORKDIR}/tmpfiles.conf ${D}${libdir}/tmpfiles.d/weston-init.conf
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston-dep.conf.in b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston-dep.conf.in
new file mode 100644 (file)
index 0000000..2b81020
--- /dev/null
@@ -0,0 +1,3 @@
+[Unit]
+Requires=@WESTON_DRM_DEVICE@
+After=@WESTON_DRM_DEVICE@