summaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorMikko Rapeli <mikko.rapeli@linaro.org>2025-02-06 16:44:06 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2025-02-18 11:56:04 +0000
commitaf38235305fc2ac59a82f0413a1fe4cc5161ff86 (patch)
treee487acf22af41e25ed7705d96103ed9edf8d5376 /meta
parent6dd4120d62979a80ac8f0986c4e971d6c21b3b5f (diff)
downloadpoky-af38235305fc2ac59a82f0413a1fe4cc5161ff86.tar.gz
psplash: start via udev if framebuffer device detected
psplash-start.service expected to find /dev/fb0 and failed if device was not found. This failure breaks systemd oeqa runtime test with "runqemu nographic". Starting psplash based on detected framebuffer device fixes systemd boot status and systemd oeqa runtime tests for qemu boots with and without graphics support. Note that psplash-systemd.service still depends on /dev/fb0 so startup with multiple framebuffer devices may not work correctly. I don't have devices with multiple framebuffer devices to test with. On qemu machine with graphics, psplash displays yocto logo correctly and boot progress bar as well. Once boot completes to systemd "running" state, the logo is replaced by login prompt. On qemu machine without graphics, boot completes without psplash or failures and login over serial console works normally. Tested with genericarm64 machine poky-altcfg distro and core-image-base image on qemu. AMD kv260 tested as well but graphics stack is not yet working there so boot is similar to qemu without graphics. (From OE-Core rev: 3820f6f342c2309ba7d51d3c08b3a951c2c17781) Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r--meta/recipes-core/psplash/files/fb.rules1
-rw-r--r--meta/recipes-core/psplash/files/psplash-start@.service (renamed from meta/recipes-core/psplash/files/psplash-start.service)5
-rw-r--r--meta/recipes-core/psplash/files/psplash-systemd.service8
-rw-r--r--meta/recipes-core/psplash/psplash_git.bb9
4 files changed, 12 insertions, 11 deletions
diff --git a/meta/recipes-core/psplash/files/fb.rules b/meta/recipes-core/psplash/files/fb.rules
new file mode 100644
index 0000000000..accdb8386c
--- /dev/null
+++ b/meta/recipes-core/psplash/files/fb.rules
@@ -0,0 +1 @@
SUBSYSTEM=="graphics", KERNEL=="fb[0-9]*", TAG+="systemd", ENV{SYSTEMD_WANTS}+="psplash-start@%k.service psplash-systemd.service"
diff --git a/meta/recipes-core/psplash/files/psplash-start.service b/meta/recipes-core/psplash/files/psplash-start@.service
index bec9368427..1bc3642fc2 100644
--- a/meta/recipes-core/psplash/files/psplash-start.service
+++ b/meta/recipes-core/psplash/files/psplash-start@.service
@@ -3,11 +3,10 @@ Description=Start psplash boot splash screen
3DefaultDependencies=no 3DefaultDependencies=no
4RequiresMountsFor=/run 4RequiresMountsFor=/run
5ConditionFileIsExecutable=/usr/bin/psplash 5ConditionFileIsExecutable=/usr/bin/psplash
6After=dev-%i.device
7Wants=dev-%i.device
6 8
7[Service] 9[Service]
8Type=notify 10Type=notify
9ExecStart=/usr/bin/psplash 11ExecStart=/usr/bin/psplash
10RemainAfterExit=yes 12RemainAfterExit=yes
11
12[Install]
13WantedBy=sysinit.target
diff --git a/meta/recipes-core/psplash/files/psplash-systemd.service b/meta/recipes-core/psplash/files/psplash-systemd.service
index e93e3deb35..f9aaa2db3d 100644
--- a/meta/recipes-core/psplash/files/psplash-systemd.service
+++ b/meta/recipes-core/psplash/files/psplash-systemd.service
@@ -1,14 +1,12 @@
1[Unit] 1[Unit]
2Description=Start psplash-systemd progress communication helper 2Description=Start psplash-systemd progress communication helper
3DefaultDependencies=no 3DefaultDependencies=no
4After=psplash-start.service 4After=psplash-start@fb0.service
5Requires=psplash-start.service 5Requires=psplash-start@fb0.service
6RequiresMountsFor=/run 6RequiresMountsFor=/run
7ConditionFileIsExecutable=/usr/bin/psplash 7ConditionFileIsExecutable=/usr/bin/psplash
8ConditionFileExists=/run/psplash_fifo
8 9
9[Service] 10[Service]
10ExecStart=/usr/bin/psplash-systemd 11ExecStart=/usr/bin/psplash-systemd
11RemainAfterExit=yes 12RemainAfterExit=yes
12
13[Install]
14WantedBy=sysinit.target
diff --git a/meta/recipes-core/psplash/psplash_git.bb b/meta/recipes-core/psplash/psplash_git.bb
index 30cf61a2cb..fce5995efe 100644
--- a/meta/recipes-core/psplash/psplash_git.bb
+++ b/meta/recipes-core/psplash/psplash_git.bb
@@ -11,8 +11,9 @@ PV = "0.1+git"
11 11
12SRC_URI = "git://git.yoctoproject.org/${BPN};branch=master;protocol=https \ 12SRC_URI = "git://git.yoctoproject.org/${BPN};branch=master;protocol=https \
13 file://psplash-init \ 13 file://psplash-init \
14 file://psplash-start.service \ 14 file://psplash-start@.service \
15 file://psplash-systemd.service \ 15 file://psplash-systemd.service \
16 file://fb.rules \
16 ${SPLASH_IMAGES}" 17 ${SPLASH_IMAGES}"
17UPSTREAM_CHECK_COMMITS = "1" 18UPSTREAM_CHECK_COMMITS = "1"
18 19
@@ -112,8 +113,10 @@ do_install:append() {
112 113
113 if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then 114 if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
114 install -d ${D}${systemd_system_unitdir} 115 install -d ${D}${systemd_system_unitdir}
115 install -m 644 ${UNPACKDIR}/psplash-start.service ${D}/${systemd_system_unitdir} 116 install -m 644 ${UNPACKDIR}/psplash-start@.service ${D}/${systemd_system_unitdir}
116 install -m 644 ${UNPACKDIR}/psplash-systemd.service ${D}/${systemd_system_unitdir} 117 install -m 644 ${UNPACKDIR}/psplash-systemd.service ${D}/${systemd_system_unitdir}
118 install -d ${D}${sysconfdir}/udev/rules.d
119 install -m 0644 ${UNPACKDIR}/fb.rules ${D}${sysconfdir}/udev/rules.d/
117 fi 120 fi
118 121
119 install -d ${D}${bindir} 122 install -d ${D}${bindir}
@@ -124,7 +127,7 @@ do_install:append() {
124} 127}
125 128
126SYSTEMD_PACKAGES = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${PN}','',d)}" 129SYSTEMD_PACKAGES = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${PN}','',d)}"
127SYSTEMD_SERVICE:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'systemd', 'psplash-start.service psplash-systemd.service', '', d)}" 130SYSTEMD_SERVICE:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'systemd', 'psplash-start@.service psplash-systemd.service', '', d)}"
128 131
129INITSCRIPT_NAME = "psplash.sh" 132INITSCRIPT_NAME = "psplash.sh"
130INITSCRIPT_PARAMS = "start 0 S . stop 20 0 1 6 ." 133INITSCRIPT_PARAMS = "start 0 S . stop 20 0 1 6 ."