summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott Murray <scott.murray@konsulko.com>2020-11-30 19:17:29 -0500
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>2020-12-04 05:42:00 +0000
commit93f724675d9c47d48ea56d82843e162a12ac41b4 (patch)
tree1a7b332b97254625c212522ea5a5c7c1b0ad69ab
parent4dc1ce1252b8ef430777519b80221c144331e6e9 (diff)
meta-agl-profile-graphical: add device dependency hook in weston-init
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/+/25675 ci-image-build: Jenkins Job builder account <agl-jobbuilder@automotivelinux.org> ci-image-boot-test: Jenkins Job builder account <agl-jobbuilder@automotivelinux.org> Tested-by: Jenkins Job builder account <agl-jobbuilder@automotivelinux.org>
-rw-r--r--meta-agl-bsp/conf/include/agl_qemux86-64.inc3
-rw-r--r--meta-agl-profile-graphical/recipes-graphics/wayland/weston-init.bbappend14
-rw-r--r--meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston-dep.conf.in3
3 files changed, 20 insertions, 0 deletions
diff --git a/meta-agl-bsp/conf/include/agl_qemux86-64.inc b/meta-agl-bsp/conf/include/agl_qemux86-64.inc
index 3915a5e47..81310001e 100644
--- a/meta-agl-bsp/conf/include/agl_qemux86-64.inc
+++ b/meta-agl-bsp/conf/include/agl_qemux86-64.inc
@@ -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"
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init.bbappend b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init.bbappend
index 374e9aa75..b3fecec22 100644
--- a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init.bbappend
+++ b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init.bbappend
@@ -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
index 000000000..2b8102096
--- /dev/null
+++ b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston-dep.conf.in
@@ -0,0 +1,3 @@
+[Unit]
+Requires=@WESTON_DRM_DEVICE@
+After=@WESTON_DRM_DEVICE@