Message ID | 20221216130139.20841-2-matthias.schiffer@ew.tq-group.com |
---|---|
State | Superseded |
Delegated to: | Ryan Eatmon |
Headers | show |
Series | [master/kirkstone,1/2] treewide: replace leftover git://git.ti.com | expand |
On Fri, Dec 16, 2022 at 02:01:39PM +0100, Matthias Schiffer wrote: > The ti-sgx-ddk driver requires an additional userspace initialization > step after the kernel module has probed the device. Without this > initialization, no EGL context can be created and Weston etc. will fail to > start. > > The driver package contains an init script, but this does not work on > systemd-based systems. Why? Please provide more details. Do you use systemd-compat-units? > Introduce an enabled-by-default PACKAGECONFIG that > installs a udev rule instead to run the init command automatically when > the driver is loaded, solving the issue without depending on a specific > init system. > > udev reports several events when the pvrsrvkm module is loaded: > > - add event for the kernel module > - add events for two DRM devices > - bind event for the GPU platform device > > The DRM devices aren't nice to match on, and the kernel module add is > too early to run `pvrsrvctl --start`, so we trigger on the platform > device bind. > > Tested with Weston 9.0.0 on the AM65x-based TQ-Systems MBa65xx. > > Signed-off-by: Matthias Schiffer <matthias.schiffer@ew.tq-group.com> > --- > .../libgles/ti-sgx-ddk-um/pvrsrvkm.rules | 1 + > .../libgles/ti-sgx-ddk-um_1.17.4948957.bb | 23 ++++++++++++++++++- > 2 files changed, 23 insertions(+), 1 deletion(-) > create mode 100644 meta-ti-bsp/recipes-graphics/libgles/ti-sgx-ddk-um/pvrsrvkm.rules > > diff --git a/meta-ti-bsp/recipes-graphics/libgles/ti-sgx-ddk-um/pvrsrvkm.rules b/meta-ti-bsp/recipes-graphics/libgles/ti-sgx-ddk-um/pvrsrvkm.rules > new file mode 100644 > index 00000000..e49fd9b8 > --- /dev/null > +++ b/meta-ti-bsp/recipes-graphics/libgles/ti-sgx-ddk-um/pvrsrvkm.rules > @@ -0,0 +1 @@ > +SUBSYSTEM=="platform", ACTION=="bind", ENV{DRIVER}=="pvrsrvkm", RUN+="/usr/bin/pvrsrvctl --start --no-module" > diff --git a/meta-ti-bsp/recipes-graphics/libgles/ti-sgx-ddk-um_1.17.4948957.bb b/meta-ti-bsp/recipes-graphics/libgles/ti-sgx-ddk-um_1.17.4948957.bb > index bd88d14d..2a8a0466 100644 > --- a/meta-ti-bsp/recipes-graphics/libgles/ti-sgx-ddk-um_1.17.4948957.bb > +++ b/meta-ti-bsp/recipes-graphics/libgles/ti-sgx-ddk-um_1.17.4948957.bb > @@ -14,7 +14,10 @@ PR = "r37" > > BRANCH = "ti-img-sgx/dunfell/${PV}" > > -SRC_URI = "git://git.ti.com/git/graphics/omap5-sgx-ddk-um-linux.git;protocol=https;branch=${BRANCH}" > +SRC_URI = " \ > + git://git.ti.com/git/graphics/omap5-sgx-ddk-um-linux.git;protocol=https;branch=${BRANCH} \ > + file://pvrsrvkm.rules \ > +" > SRCREV = "742cf38aba13e1ba1a910cf1f036a1a212c263b6" > > TARGET_PRODUCT:omap-a15 = "jacinto6evm" > @@ -27,6 +30,9 @@ INITSCRIPT_PARAMS = "defaults 8" > > inherit update-rc.d > > +PACKAGECONFIG ??= "udev" > +PACKAGECONFIG[udev] = ",,,udev" > + > PROVIDES += "virtual/egl virtual/libgles1 virtual/libgles2 virtual/libgbm" > > DEPENDS += "libdrm udev wayland wayland-protocols libffi expat" > @@ -56,6 +62,20 @@ do_install () { > oe_runmake install DESTDIR=${D} TARGET_PRODUCT=${TARGET_PRODUCT} > ln -sf libGLESv2.so.2 ${D}${libdir}/libGLESv2.so.1 > > + local without_sysvinit=${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'false', 'true', d)} > + local with_udev=${@bb.utils.contains('PACKAGECONFIG', 'udev', 'true', 'false', d)} While "local" is supported by dash and ash and is not a strictly bashism, it's still not part of the POSIX spec and should be avoided in the recipes: https://www.shellcheck.net/wiki/SC3043 > + # Delete initscript if it is not needed or would conflict with the udev rules > + if $without_sysvinit || $with_udev; then > + rm -rf ${D}${sysconfdir}/init.d > + rmdir --ignore-fail-on-non-empty ${D}${sysconfdir} > + fi > + > + if $with_udev; then > + install -m644 -D ${WORKDIR}/pvrsrvkm.rules \ > + ${D}${nonarch_base_libdir}/udev/rules.d/80-pvrsrvkm.rules > + fi What happens when you use systemd with sysvinit PACKAGECONFIG that relies on initscripts in init.d? > chown -R root:root ${D} > } > > @@ -63,6 +83,7 @@ FILES:${PN} = "${bindir}/*" > FILES:${PN} += " ${libdir}/*" > FILES:${PN} += "${includedir}/*" > FILES:${PN} += "${sysconfdir}/*" > +FILES:${PN} += "${nonarch_base_libdir}/udev/rules.d" > > INSANE_SKIP:${PN} += "dev-so ldflags useless-rpaths" > INSANE_SKIP:${PN} += "already-stripped dev-deps" > -- > 2.34.1
On Mon, 2022-12-19 at 16:00 -0500, Denys Dmytriyenko wrote: > On Fri, Dec 16, 2022 at 02:01:39PM +0100, Matthias Schiffer wrote: > > The ti-sgx-ddk driver requires an additional userspace initialization > > step after the kernel module has probed the device. Without this > > initialization, no EGL context can be created and Weston etc. will fail to > > start. > > > > The driver package contains an init script, but this does not work on > > systemd-based systems. > > Why? Please provide more details. Do you use systemd-compat-units? Ah, we are not using systemd-compat-units. So this commit message should be more specific and mention that this is about pure systemd systems without SysVinit compat. Given that /etc/init.d is empty except for "rc.pvr" in a simple Poky- based setup with ti-sgx-ddk-um when "sysvinit" is not in DISTRO_FEATURES, I understand that it is a good practice for packages not to rely on systemd-compat-units. > > > > Introduce an enabled-by-default PACKAGECONFIG that > > installs a udev rule instead to run the init command automatically when > > the driver is loaded, solving the issue without depending on a specific > > init system. > > > > udev reports several events when the pvrsrvkm module is loaded: > > > > - add event for the kernel module > > - add events for two DRM devices > > - bind event for the GPU platform device > > > > The DRM devices aren't nice to match on, and the kernel module add is > > too early to run `pvrsrvctl --start`, so we trigger on the platform > > device bind. > > > > Tested with Weston 9.0.0 on the AM65x-based TQ-Systems MBa65xx. > > > > Signed-off-by: Matthias Schiffer <matthias.schiffer@ew.tq-group.com> > > --- > > .../libgles/ti-sgx-ddk-um/pvrsrvkm.rules | 1 + > > .../libgles/ti-sgx-ddk-um_1.17.4948957.bb | 23 ++++++++++++++++++- > > 2 files changed, 23 insertions(+), 1 deletion(-) > > create mode 100644 meta-ti-bsp/recipes-graphics/libgles/ti-sgx-ddk-um/pvrsrvkm.rules > > > > diff --git a/meta-ti-bsp/recipes-graphics/libgles/ti-sgx-ddk-um/pvrsrvkm.rules b/meta-ti-bsp/recipes-graphics/libgles/ti-sgx-ddk-um/pvrsrvkm.rules > > new file mode 100644 > > index 00000000..e49fd9b8 > > --- /dev/null > > +++ b/meta-ti-bsp/recipes-graphics/libgles/ti-sgx-ddk-um/pvrsrvkm.rules > > @@ -0,0 +1 @@ > > +SUBSYSTEM=="platform", ACTION=="bind", ENV{DRIVER}=="pvrsrvkm", RUN+="/usr/bin/pvrsrvctl --start --no-module" > > diff --git a/meta-ti-bsp/recipes-graphics/libgles/ti-sgx-ddk-um_1.17.4948957.bb b/meta-ti-bsp/recipes-graphics/libgles/ti-sgx-ddk-um_1.17.4948957.bb > > index bd88d14d..2a8a0466 100644 > > --- a/meta-ti-bsp/recipes-graphics/libgles/ti-sgx-ddk-um_1.17.4948957.bb > > +++ b/meta-ti-bsp/recipes-graphics/libgles/ti-sgx-ddk-um_1.17.4948957.bb > > @@ -14,7 +14,10 @@ PR = "r37" > > > > BRANCH = "ti-img-sgx/dunfell/${PV}" > > > > -SRC_URI = "git://git.ti.com/git/graphics/omap5-sgx-ddk-um-linux.git;protocol=https;branch=${BRANCH}" > > +SRC_URI = " \ > > + git://git.ti.com/git/graphics/omap5-sgx-ddk-um-linux.git;protocol=https;branch=${BRANCH} \ > > + file://pvrsrvkm.rules \ > > +" > > SRCREV = "742cf38aba13e1ba1a910cf1f036a1a212c263b6" > > > > TARGET_PRODUCT:omap-a15 = "jacinto6evm" > > @@ -27,6 +30,9 @@ INITSCRIPT_PARAMS = "defaults 8" > > > > inherit update-rc.d > > > > +PACKAGECONFIG ??= "udev" > > +PACKAGECONFIG[udev] = ",,,udev" > > + > > PROVIDES += "virtual/egl virtual/libgles1 virtual/libgles2 virtual/libgbm" > > > > DEPENDS += "libdrm udev wayland wayland-protocols libffi expat" > > @@ -56,6 +62,20 @@ do_install () { > > oe_runmake install DESTDIR=${D} TARGET_PRODUCT=${TARGET_PRODUCT} > > ln -sf libGLESv2.so.2 ${D}${libdir}/libGLESv2.so.1 > > > > + local without_sysvinit=${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'false', 'true', d)} > > + local with_udev=${@bb.utils.contains('PACKAGECONFIG', 'udev', 'true', 'false', d)} > > While "local" is supported by dash and ash and is not a strictly bashism, it's > still not part of the POSIX spec and should be avoided in the recipes: > https://www.shellcheck.net/wiki/SC3043 Makes sense. I was thrown off by seeing "local" used in a few recipes in Poky, but keeping this POSIX-compatible seems like a good idea. > > > > + # Delete initscript if it is not needed or would conflict with the udev rules > > + if $without_sysvinit || $with_udev; then > > + rm -rf ${D}${sysconfdir}/init.d > > + rmdir --ignore-fail-on-non-empty ${D}${sysconfdir} > > + fi > > + > > + if $with_udev; then > > + install -m644 -D ${WORKDIR}/pvrsrvkm.rules \ > > + ${D}${nonarch_base_libdir}/udev/rules.d/80-pvrsrvkm.rules > > + fi > > What happens when you use systemd with sysvinit PACKAGECONFIG that relies on > initscripts in init.d? If the "udev" PACKAGECONFIG of ti-sgx-ddk-um is set, no initscript is installed regardless of DISTRO_FEATURES, to avoid running pvrsrvctl twice on such systems. This configuration should work with any init system, as long as some udev implementation (systemd udev or eudev) is running (which should be ensured by the RRDEPENDS added by PACKAGECONFIG[udev]). udev will automatically load the kernel module based on modaliases, and then the rule will run pvrsrvctl. To allow building a system without udev, the "udev" PACKAGECONFIG can be disabled. If "sysvinit" is in DISTRO_FEATURES, "rc.pvr" will be installed and everything works like it always has. Setups without the "udev" PACKAGECONFIG *and* without "sysvinit" DISTRO_FEATURES will not work out-of-the-box. I decided to set the "udev" PACKAGECONFIG by default, as I consider it the most elegant solution, and it is also required by default by Xorg and Weston. Regards, Matthias > > > > chown -R root:root ${D} > > } > > > > @@ -63,6 +83,7 @@ FILES:${PN} = "${bindir}/*" > > FILES:${PN} += " ${libdir}/*" > > FILES:${PN} += "${includedir}/*" > > FILES:${PN} += "${sysconfdir}/*" > > +FILES:${PN} += "${nonarch_base_libdir}/udev/rules.d" > > > > INSANE_SKIP:${PN} += "dev-so ldflags useless-rpaths" > > INSANE_SKIP:${PN} += "already-stripped dev-deps" > > -- > > 2.34.1
So, testing the latest patch series, I started getting breakage on all SGX platforms: WARNING: tisdk-default-image-1.0-r0 do_rootfs: ti-sgx-ddk-um.postinst returned 1, marking as unpacked only, configuration required on target. ERROR: tisdk-default-image-1.0-r0 do_rootfs: Postinstall scriptlets of ['ti-sgx-ddk-um'] have failed. If the intention is to defer them to first boot, then please place them into pkg_postinst_ontarget:${PN} (). Deferring to first boot via 'exit 1' is no longer supported. Details of the failure are in /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am335x_evm-oe-linux-gnueabi/tisdk-default-image/1.0-r0/temp/log.do_rootfs. ERROR: Logfile of failure stored in: /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am335x_evm-oe-linux-gnueabi/tisdk-default-image/1.0-r0/temp/log.do_rootfs.156835 ERROR: Task (/OE/arago-kirkstone/sources/meta-arago/meta-arago-distro/recipes-core/images/tisdk-default-image.bb:do_rootfs) failed with exit code '1' WARNING: tisdk-default-image-1.0-r0 do_rootfs: ti-sgx-ddk-um.postinst returned 1, marking as unpacked only, configuration required on target. ERROR: tisdk-default-image-1.0-r0 do_rootfs: Postinstall scriptlets of ['ti-sgx-ddk-um'] have failed. If the intention is to defer them to first boot, then please place them into pkg_postinst_ontarget:${PN} (). Deferring to first boot via 'exit 1' is no longer supported. Details of the failure are in /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am57xx_evm-oe-linux-gnueabi/tisdk-default-image/1.0-r0/temp/log.do_rootfs. ERROR: Logfile of failure stored in: /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am57xx_evm-oe-linux-gnueabi/tisdk-default-image/1.0-r0/temp/log.do_rootfs.164346 ERROR: Task (/OE/arago-kirkstone/sources/meta-arago/meta-arago-distro/recipes-core/images/tisdk-default-image.bb:do_rootfs) failed with exit code '1' WARNING: tisdk-default-image-1.0-r0 do_rootfs: ti-sgx-ddk-um.postinst returned 1, marking as unpacked only, configuration required on target. ERROR: tisdk-default-image-1.0-r0 do_rootfs: Postinstall scriptlets of ['ti-sgx-ddk-um'] have failed. If the intention is to defer them to first boot, then please place them into pkg_postinst_ontarget:${PN} (). Deferring to first boot via 'exit 1' is no longer supported. Details of the failure are in /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am65xx_evm-oe-linux/tisdk-default-image/1.0-r0/temp/log.do_rootfs. ERROR: Logfile of failure stored in: /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am65xx_evm-oe-linux/tisdk-default-image/1.0-r0/temp/log.do_rootfs.159785 ERROR: Task (/OE/arago-kirkstone/sources/meta-arago/meta-arago-distro/recipes-core/images/tisdk-default-image.bb:do_rootfs) failed with exit code '1' Reverting this commit helps with the build: https://git.yoctoproject.org/meta-ti/commit/?h=kirkstone&id=f50f55102f926ba58ea22339a98e4239370af6c6 So far I didn't have time to dig deeper, though it's not obvious right away...
On Wed, 2023-02-22 at 20:38 -0500, Denys Dmytriyenko wrote: > So, testing the latest patch series, I started getting breakage on all SGX > platforms: > > WARNING: tisdk-default-image-1.0-r0 do_rootfs: ti-sgx-ddk-um.postinst returned 1, marking as unpacked only, configuration required on target. > ERROR: tisdk-default-image-1.0-r0 do_rootfs: Postinstall scriptlets of ['ti-sgx-ddk-um'] have failed. If the intention is to defer them to first boot, > then please place them into pkg_postinst_ontarget:${PN} (). > Deferring to first boot via 'exit 1' is no longer supported. > Details of the failure are in /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am335x_evm-oe-linux-gnueabi/tisdk-default-image/1.0-r0/temp/log.do_rootfs. > ERROR: Logfile of failure stored in: /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am335x_evm-oe-linux-gnueabi/tisdk-default-image/1.0-r0/temp/log.do_rootfs.156835 > ERROR: Task (/OE/arago-kirkstone/sources/meta-arago/meta-arago-distro/recipes-core/images/tisdk-default-image.bb:do_rootfs) failed with exit code '1' > > > WARNING: tisdk-default-image-1.0-r0 do_rootfs: ti-sgx-ddk-um.postinst returned 1, marking as unpacked only, configuration required on target. > ERROR: tisdk-default-image-1.0-r0 do_rootfs: Postinstall scriptlets of ['ti-sgx-ddk-um'] have failed. If the intention is to defer them to first boot, > then please place them into pkg_postinst_ontarget:${PN} (). > Deferring to first boot via 'exit 1' is no longer supported. > Details of the failure are in /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am57xx_evm-oe-linux-gnueabi/tisdk-default-image/1.0-r0/temp/log.do_rootfs. > ERROR: Logfile of failure stored in: /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am57xx_evm-oe-linux-gnueabi/tisdk-default-image/1.0-r0/temp/log.do_rootfs.164346 > ERROR: Task (/OE/arago-kirkstone/sources/meta-arago/meta-arago-distro/recipes-core/images/tisdk-default-image.bb:do_rootfs) failed with exit code '1' > > > WARNING: tisdk-default-image-1.0-r0 do_rootfs: ti-sgx-ddk-um.postinst returned 1, marking as unpacked only, configuration required on target. > ERROR: tisdk-default-image-1.0-r0 do_rootfs: Postinstall scriptlets of ['ti-sgx-ddk-um'] have failed. If the intention is to defer them to first boot, > then please place them into pkg_postinst_ontarget:${PN} (). > Deferring to first boot via 'exit 1' is no longer supported. > Details of the failure are in /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am65xx_evm-oe-linux/tisdk-default-image/1.0-r0/temp/log.do_rootfs. > ERROR: Logfile of failure stored in: /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am65xx_evm-oe-linux/tisdk-default-image/1.0-r0/temp/log.do_rootfs.159785 > ERROR: Task (/OE/arago-kirkstone/sources/meta-arago/meta-arago-distro/recipes-core/images/tisdk-default-image.bb:do_rootfs) failed with exit code '1' > > > Reverting this commit helps with the build: > https://git.yoctoproject.org/meta-ti/commit/?h=kirkstone&id=f50f55102f926ba58ea22339a98e4239370af6c6 > > > So far I didn't have time to dig deeper, though it's not obvious right away... > Hi Denys, I assume that the failing postinst script must come from update- rc.d.bbclass, but without knowing what command in the script is failing it's difficult to say anything for certain. Would it be possible for you to make a ti-sgx-ddk-um RPM or similar from the failing build available for us to have a look at? What DISTRO_FEATURES is your build using? sysvinit, no systemd? Best regards, Matthias
On Thu, Feb 23, 2023 at 10:20:12AM +0100, Matthias Schiffer wrote: > On Wed, 2023-02-22 at 20:38 -0500, Denys Dmytriyenko wrote: > > So, testing the latest patch series, I started getting breakage on all SGX > > platforms: > > > > WARNING: tisdk-default-image-1.0-r0 do_rootfs: ti-sgx-ddk-um.postinst returned 1, marking as unpacked only, configuration required on target. > > ERROR: tisdk-default-image-1.0-r0 do_rootfs: Postinstall scriptlets of ['ti-sgx-ddk-um'] have failed. If the intention is to defer them to first boot, > > then please place them into pkg_postinst_ontarget:${PN} (). > > Deferring to first boot via 'exit 1' is no longer supported. > > Details of the failure are in /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am335x_evm-oe-linux-gnueabi/tisdk-default-image/1.0-r0/temp/log.do_rootfs. > > ERROR: Logfile of failure stored in: /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am335x_evm-oe-linux-gnueabi/tisdk-default-image/1.0-r0/temp/log.do_rootfs.156835 > > ERROR: Task (/OE/arago-kirkstone/sources/meta-arago/meta-arago-distro/recipes-core/images/tisdk-default-image.bb:do_rootfs) failed with exit code '1' > > > > > > WARNING: tisdk-default-image-1.0-r0 do_rootfs: ti-sgx-ddk-um.postinst returned 1, marking as unpacked only, configuration required on target. > > ERROR: tisdk-default-image-1.0-r0 do_rootfs: Postinstall scriptlets of ['ti-sgx-ddk-um'] have failed. If the intention is to defer them to first boot, > > then please place them into pkg_postinst_ontarget:${PN} (). > > Deferring to first boot via 'exit 1' is no longer supported. > > Details of the failure are in /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am57xx_evm-oe-linux-gnueabi/tisdk-default-image/1.0-r0/temp/log.do_rootfs. > > ERROR: Logfile of failure stored in: /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am57xx_evm-oe-linux-gnueabi/tisdk-default-image/1.0-r0/temp/log.do_rootfs.164346 > > ERROR: Task (/OE/arago-kirkstone/sources/meta-arago/meta-arago-distro/recipes-core/images/tisdk-default-image.bb:do_rootfs) failed with exit code '1' > > > > > > WARNING: tisdk-default-image-1.0-r0 do_rootfs: ti-sgx-ddk-um.postinst returned 1, marking as unpacked only, configuration required on target. > > ERROR: tisdk-default-image-1.0-r0 do_rootfs: Postinstall scriptlets of ['ti-sgx-ddk-um'] have failed. If the intention is to defer them to first boot, > > then please place them into pkg_postinst_ontarget:${PN} (). > > Deferring to first boot via 'exit 1' is no longer supported. > > Details of the failure are in /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am65xx_evm-oe-linux/tisdk-default-image/1.0-r0/temp/log.do_rootfs. > > ERROR: Logfile of failure stored in: /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am65xx_evm-oe-linux/tisdk-default-image/1.0-r0/temp/log.do_rootfs.159785 > > ERROR: Task (/OE/arago-kirkstone/sources/meta-arago/meta-arago-distro/recipes-core/images/tisdk-default-image.bb:do_rootfs) failed with exit code '1' > > > > > > Reverting this commit helps with the build: > > https://git.yoctoproject.org/meta-ti/commit/?h=kirkstone&id=f50f55102f926ba58ea22339a98e4239370af6c6 > > > > > > So far I didn't have time to dig deeper, though it's not obvious right away... > > > > Hi Denys, > > I assume that the failing postinst script must come from update- > rc.d.bbclass, but without knowing what command in the script is failing > it's difficult to say anything for certain. Would it be possible for > you to make a ti-sgx-ddk-um RPM or similar from the failing build > available for us to have a look at? > > What DISTRO_FEATURES is your build using? sysvinit, no systemd? Matthias, This is default Arago distro with both systemd and sysvinit in the DISTRO_FEATURES, and it generates IPKs. I looked at the corresponding postinst scripts and didn't see anything obvious. Unfortunately, I didn't have time to debug that further and had to switch to graphics updates. Part of it was updating SGX UM recipe and forcing rebuild, so I haven't seen any breakage since then. I might try reshuffling my patch queue in order to reproduce it, if I have time, to see if it was due to stale sstate or something similar.
On Tue, 2023-02-28 at 20:26 -0500, Denys Dmytriyenko wrote: > On Thu, Feb 23, 2023 at 10:20:12AM +0100, Matthias Schiffer wrote: > > On Wed, 2023-02-22 at 20:38 -0500, Denys Dmytriyenko wrote: > > > So, testing the latest patch series, I started getting breakage on all SGX > > > platforms: > > > > > > WARNING: tisdk-default-image-1.0-r0 do_rootfs: ti-sgx-ddk-um.postinst returned 1, marking as unpacked only, configuration required on target. > > > ERROR: tisdk-default-image-1.0-r0 do_rootfs: Postinstall scriptlets of ['ti-sgx-ddk-um'] have failed. If the intention is to defer them to first boot, > > > then please place them into pkg_postinst_ontarget:${PN} (). > > > Deferring to first boot via 'exit 1' is no longer supported. > > > Details of the failure are in /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am335x_evm-oe-linux-gnueabi/tisdk-default-image/1.0-r0/temp/log.do_rootfs. > > > ERROR: Logfile of failure stored in: /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am335x_evm-oe-linux-gnueabi/tisdk-default-image/1.0-r0/temp/log.do_rootfs.156835 > > > ERROR: Task (/OE/arago-kirkstone/sources/meta-arago/meta-arago-distro/recipes-core/images/tisdk-default-image.bb:do_rootfs) failed with exit code '1' > > > > > > > > > WARNING: tisdk-default-image-1.0-r0 do_rootfs: ti-sgx-ddk-um.postinst returned 1, marking as unpacked only, configuration required on target. > > > ERROR: tisdk-default-image-1.0-r0 do_rootfs: Postinstall scriptlets of ['ti-sgx-ddk-um'] have failed. If the intention is to defer them to first boot, > > > then please place them into pkg_postinst_ontarget:${PN} (). > > > Deferring to first boot via 'exit 1' is no longer supported. > > > Details of the failure are in /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am57xx_evm-oe-linux-gnueabi/tisdk-default-image/1.0-r0/temp/log.do_rootfs. > > > ERROR: Logfile of failure stored in: /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am57xx_evm-oe-linux-gnueabi/tisdk-default-image/1.0-r0/temp/log.do_rootfs.164346 > > > ERROR: Task (/OE/arago-kirkstone/sources/meta-arago/meta-arago-distro/recipes-core/images/tisdk-default-image.bb:do_rootfs) failed with exit code '1' > > > > > > > > > WARNING: tisdk-default-image-1.0-r0 do_rootfs: ti-sgx-ddk-um.postinst returned 1, marking as unpacked only, configuration required on target. > > > ERROR: tisdk-default-image-1.0-r0 do_rootfs: Postinstall scriptlets of ['ti-sgx-ddk-um'] have failed. If the intention is to defer them to first boot, > > > then please place them into pkg_postinst_ontarget:${PN} (). > > > Deferring to first boot via 'exit 1' is no longer supported. > > > Details of the failure are in /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am65xx_evm-oe-linux/tisdk-default-image/1.0-r0/temp/log.do_rootfs. > > > ERROR: Logfile of failure stored in: /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am65xx_evm-oe-linux/tisdk-default-image/1.0-r0/temp/log.do_rootfs.159785 > > > ERROR: Task (/OE/arago-kirkstone/sources/meta-arago/meta-arago-distro/recipes-core/images/tisdk-default-image.bb:do_rootfs) failed with exit code '1' > > > > > > > > > Reverting this commit helps with the build: > > > https://git.yoctoproject.org/meta-ti/commit/?h=kirkstone&id=f50f55102f926ba58ea22339a98e4239370af6c6 > > > > > > > > > So far I didn't have time to dig deeper, though it's not obvious right away... > > > > > > > Hi Denys, > > > > I assume that the failing postinst script must come from update- > > rc.d.bbclass, but without knowing what command in the script is failing > > it's difficult to say anything for certain. Would it be possible for > > you to make a ti-sgx-ddk-um RPM or similar from the failing build > > available for us to have a look at? > > > > What DISTRO_FEATURES is your build using? sysvinit, no systemd? > > Matthias, > > This is default Arago distro with both systemd and sysvinit in the > DISTRO_FEATURES, and it generates IPKs. I looked at the corresponding > postinst scripts and didn't see anything obvious. > > Unfortunately, I didn't have time to debug that further and had to > switch to graphics updates. Part of it was updating SGX UM recipe > and forcing rebuild, so I haven't seen any breakage since then. > > I might try reshuffling my patch queue in order to reproduce it, if I > have time, to see if it was due to stale sstate or something similar. > Hi Denys, I believe I have seen stale sstate issues with postinst scripts before. IIRC, something like adding "unset pkg_postinst_ontarget_${PN}" to a bbappend didn't trigger a rebuild, but I never got around to check whether the bug was caused by postinst(_ontarget), unset, or a combination of both. According to my Git log, this must have been on WRL LTS18 / Yocto Thud though, so what you're seeing might also be an entirely different issue... Best regards, Matthias
On 3/1/23 3:01 AM, Matthias Schiffer wrote: > On Tue, 2023-02-28 at 20:26 -0500, Denys Dmytriyenko wrote: >> On Thu, Feb 23, 2023 at 10:20:12AM +0100, Matthias Schiffer wrote: >>> On Wed, 2023-02-22 at 20:38 -0500, Denys Dmytriyenko wrote: >>>> So, testing the latest patch series, I started getting breakage on all SGX >>>> platforms: >>>> >>>> WARNING: tisdk-default-image-1.0-r0 do_rootfs: ti-sgx-ddk-um.postinst returned 1, marking as unpacked only, configuration required on target. >>>> ERROR: tisdk-default-image-1.0-r0 do_rootfs: Postinstall scriptlets of ['ti-sgx-ddk-um'] have failed. If the intention is to defer them to first boot, >>>> then please place them into pkg_postinst_ontarget:${PN} (). >>>> Deferring to first boot via 'exit 1' is no longer supported. >>>> Details of the failure are in /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am335x_evm-oe-linux-gnueabi/tisdk-default-image/1.0-r0/temp/log.do_rootfs. >>>> ERROR: Logfile of failure stored in: /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am335x_evm-oe-linux-gnueabi/tisdk-default-image/1.0-r0/temp/log.do_rootfs.156835 >>>> ERROR: Task (/OE/arago-kirkstone/sources/meta-arago/meta-arago-distro/recipes-core/images/tisdk-default-image.bb:do_rootfs) failed with exit code '1' >>>> >>>> >>>> WARNING: tisdk-default-image-1.0-r0 do_rootfs: ti-sgx-ddk-um.postinst returned 1, marking as unpacked only, configuration required on target. >>>> ERROR: tisdk-default-image-1.0-r0 do_rootfs: Postinstall scriptlets of ['ti-sgx-ddk-um'] have failed. If the intention is to defer them to first boot, >>>> then please place them into pkg_postinst_ontarget:${PN} (). >>>> Deferring to first boot via 'exit 1' is no longer supported. >>>> Details of the failure are in /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am57xx_evm-oe-linux-gnueabi/tisdk-default-image/1.0-r0/temp/log.do_rootfs. >>>> ERROR: Logfile of failure stored in: /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am57xx_evm-oe-linux-gnueabi/tisdk-default-image/1.0-r0/temp/log.do_rootfs.164346 >>>> ERROR: Task (/OE/arago-kirkstone/sources/meta-arago/meta-arago-distro/recipes-core/images/tisdk-default-image.bb:do_rootfs) failed with exit code '1' >>>> >>>> >>>> WARNING: tisdk-default-image-1.0-r0 do_rootfs: ti-sgx-ddk-um.postinst returned 1, marking as unpacked only, configuration required on target. >>>> ERROR: tisdk-default-image-1.0-r0 do_rootfs: Postinstall scriptlets of ['ti-sgx-ddk-um'] have failed. If the intention is to defer them to first boot, >>>> then please place them into pkg_postinst_ontarget:${PN} (). >>>> Deferring to first boot via 'exit 1' is no longer supported. >>>> Details of the failure are in /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am65xx_evm-oe-linux/tisdk-default-image/1.0-r0/temp/log.do_rootfs. >>>> ERROR: Logfile of failure stored in: /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am65xx_evm-oe-linux/tisdk-default-image/1.0-r0/temp/log.do_rootfs.159785 >>>> ERROR: Task (/OE/arago-kirkstone/sources/meta-arago/meta-arago-distro/recipes-core/images/tisdk-default-image.bb:do_rootfs) failed with exit code '1' >>>> >>>> >>>> Reverting this commit helps with the build: >>>> https://git.yoctoproject.org/meta-ti/commit/?h=kirkstone&id=f50f55102f926ba58ea22339a98e4239370af6c6 >>>> >>>> >>>> So far I didn't have time to dig deeper, though it's not obvious right away... >>>> >>> >>> Hi Denys, >>> >>> I assume that the failing postinst script must come from update- >>> rc.d.bbclass, but without knowing what command in the script is failing >>> it's difficult to say anything for certain. Would it be possible for >>> you to make a ti-sgx-ddk-um RPM or similar from the failing build >>> available for us to have a look at? >>> >>> What DISTRO_FEATURES is your build using? sysvinit, no systemd? >> >> Matthias, >> >> This is default Arago distro with both systemd and sysvinit in the >> DISTRO_FEATURES, and it generates IPKs. I looked at the corresponding >> postinst scripts and didn't see anything obvious. >> >> Unfortunately, I didn't have time to debug that further and had to >> switch to graphics updates. Part of it was updating SGX UM recipe >> and forcing rebuild, so I haven't seen any breakage since then. >> >> I might try reshuffling my patch queue in order to reproduce it, if I >> have time, to see if it was due to stale sstate or something similar. >> > > Hi Denys, > > I believe I have seen stale sstate issues with postinst scripts before. > > IIRC, something like adding "unset pkg_postinst_ontarget_${PN}" to a > bbappend didn't trigger a rebuild, but I never got around to check > whether the bug was caused by postinst(_ontarget), unset, or a > combination of both. According to my Git log, this must have been on > WRL LTS18 / Yocto Thud though, so what you're seeing might also be an > entirely different issue... > I'm getting the error with a clean sstate. Seem it is related to update-rc.d. We should *not* inherit this class unless we have something deployed to init.d/ but your patch removes those files in the default case and so update-rc.d fails. inherit ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'update-rc.d', '', d)} Seems to help, but only handles the case when sysvinit is not used, not the case when udev in PACKAGECONFIG causes the initscript to be removed. That might require some more complex check. Andrew
On Wed, 2023-03-01 at 15:48 -0600, Andrew Davis wrote: > On 3/1/23 3:01 AM, Matthias Schiffer wrote: > > On Tue, 2023-02-28 at 20:26 -0500, Denys Dmytriyenko wrote: > > > On Thu, Feb 23, 2023 at 10:20:12AM +0100, Matthias Schiffer wrote: > > > > On Wed, 2023-02-22 at 20:38 -0500, Denys Dmytriyenko wrote: > > > > > So, testing the latest patch series, I started getting breakage on all SGX > > > > > platforms: > > > > > > > > > > WARNING: tisdk-default-image-1.0-r0 do_rootfs: ti-sgx-ddk-um.postinst returned 1, marking as unpacked only, configuration required on target. > > > > > ERROR: tisdk-default-image-1.0-r0 do_rootfs: Postinstall scriptlets of ['ti-sgx-ddk-um'] have failed. If the intention is to defer them to first boot, > > > > > then please place them into pkg_postinst_ontarget:${PN} (). > > > > > Deferring to first boot via 'exit 1' is no longer supported. > > > > > Details of the failure are in /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am335x_evm-oe-linux-gnueabi/tisdk-default-image/1.0-r0/temp/log.do_rootfs. > > > > > ERROR: Logfile of failure stored in: /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am335x_evm-oe-linux-gnueabi/tisdk-default-image/1.0-r0/temp/log.do_rootfs.156835 > > > > > ERROR: Task (/OE/arago-kirkstone/sources/meta-arago/meta-arago-distro/recipes-core/images/tisdk-default-image.bb:do_rootfs) failed with exit code '1' > > > > > > > > > > > > > > > WARNING: tisdk-default-image-1.0-r0 do_rootfs: ti-sgx-ddk-um.postinst returned 1, marking as unpacked only, configuration required on target. > > > > > ERROR: tisdk-default-image-1.0-r0 do_rootfs: Postinstall scriptlets of ['ti-sgx-ddk-um'] have failed. If the intention is to defer them to first boot, > > > > > then please place them into pkg_postinst_ontarget:${PN} (). > > > > > Deferring to first boot via 'exit 1' is no longer supported. > > > > > Details of the failure are in /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am57xx_evm-oe-linux-gnueabi/tisdk-default-image/1.0-r0/temp/log.do_rootfs. > > > > > ERROR: Logfile of failure stored in: /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am57xx_evm-oe-linux-gnueabi/tisdk-default-image/1.0-r0/temp/log.do_rootfs.164346 > > > > > ERROR: Task (/OE/arago-kirkstone/sources/meta-arago/meta-arago-distro/recipes-core/images/tisdk-default-image.bb:do_rootfs) failed with exit code '1' > > > > > > > > > > > > > > > WARNING: tisdk-default-image-1.0-r0 do_rootfs: ti-sgx-ddk-um.postinst returned 1, marking as unpacked only, configuration required on target. > > > > > ERROR: tisdk-default-image-1.0-r0 do_rootfs: Postinstall scriptlets of ['ti-sgx-ddk-um'] have failed. If the intention is to defer them to first boot, > > > > > then please place them into pkg_postinst_ontarget:${PN} (). > > > > > Deferring to first boot via 'exit 1' is no longer supported. > > > > > Details of the failure are in /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am65xx_evm-oe-linux/tisdk-default-image/1.0-r0/temp/log.do_rootfs. > > > > > ERROR: Logfile of failure stored in: /OE/arago-kirkstone/build/arago-tmp-default-glibc/work/am65xx_evm-oe-linux/tisdk-default-image/1.0-r0/temp/log.do_rootfs.159785 > > > > > ERROR: Task (/OE/arago-kirkstone/sources/meta-arago/meta-arago-distro/recipes-core/images/tisdk-default-image.bb:do_rootfs) failed with exit code '1' > > > > > > > > > > > > > > > Reverting this commit helps with the build: > > > > > https://git.yoctoproject.org/meta-ti/commit/?h=kirkstone&id=f50f55102f926ba58ea22339a98e4239370af6c6 > > > > > > > > > > > > > > > So far I didn't have time to dig deeper, though it's not obvious right away... > > > > > > > > > > > > > Hi Denys, > > > > > > > > I assume that the failing postinst script must come from update- > > > > rc.d.bbclass, but without knowing what command in the script is failing > > > > it's difficult to say anything for certain. Would it be possible for > > > > you to make a ti-sgx-ddk-um RPM or similar from the failing build > > > > available for us to have a look at? > > > > > > > > What DISTRO_FEATURES is your build using? sysvinit, no systemd? > > > > > > Matthias, > > > > > > This is default Arago distro with both systemd and sysvinit in the > > > DISTRO_FEATURES, and it generates IPKs. I looked at the corresponding > > > postinst scripts and didn't see anything obvious. > > > > > > Unfortunately, I didn't have time to debug that further and had to > > > switch to graphics updates. Part of it was updating SGX UM recipe > > > and forcing rebuild, so I haven't seen any breakage since then. > > > > > > I might try reshuffling my patch queue in order to reproduce it, if I > > > have time, to see if it was due to stale sstate or something similar. > > > > > > > Hi Denys, > > > > I believe I have seen stale sstate issues with postinst scripts before. > > > > IIRC, something like adding "unset pkg_postinst_ontarget_${PN}" to a > > bbappend didn't trigger a rebuild, but I never got around to check > > whether the bug was caused by postinst(_ontarget), unset, or a > > combination of both. According to my Git log, this must have been on > > WRL LTS18 / Yocto Thud though, so what you're seeing might also be an > > entirely different issue... > > > > I'm getting the error with a clean sstate. Seem it is related to > update-rc.d. We should *not* inherit this class unless we have > something deployed to init.d/ but your patch removes those files > in the default case and so update-rc.d fails. > > inherit ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'update-rc.d', '', d)} > > Seems to help, but only handles the case when sysvinit is not used, > not the case when udev in PACKAGECONFIG causes the initscript to be > removed. That might require some more complex check. > > Andrew Ugh. I thought I had specifically verified that inheriting the class is fine even when the script is removed. I'll try to look into this as soon as possible, but I might not be able to make time before next week. Best regards, Matthias
diff --git a/meta-ti-bsp/recipes-graphics/libgles/ti-sgx-ddk-um/pvrsrvkm.rules b/meta-ti-bsp/recipes-graphics/libgles/ti-sgx-ddk-um/pvrsrvkm.rules new file mode 100644 index 00000000..e49fd9b8 --- /dev/null +++ b/meta-ti-bsp/recipes-graphics/libgles/ti-sgx-ddk-um/pvrsrvkm.rules @@ -0,0 +1 @@ +SUBSYSTEM=="platform", ACTION=="bind", ENV{DRIVER}=="pvrsrvkm", RUN+="/usr/bin/pvrsrvctl --start --no-module" diff --git a/meta-ti-bsp/recipes-graphics/libgles/ti-sgx-ddk-um_1.17.4948957.bb b/meta-ti-bsp/recipes-graphics/libgles/ti-sgx-ddk-um_1.17.4948957.bb index bd88d14d..2a8a0466 100644 --- a/meta-ti-bsp/recipes-graphics/libgles/ti-sgx-ddk-um_1.17.4948957.bb +++ b/meta-ti-bsp/recipes-graphics/libgles/ti-sgx-ddk-um_1.17.4948957.bb @@ -14,7 +14,10 @@ PR = "r37" BRANCH = "ti-img-sgx/dunfell/${PV}" -SRC_URI = "git://git.ti.com/git/graphics/omap5-sgx-ddk-um-linux.git;protocol=https;branch=${BRANCH}" +SRC_URI = " \ + git://git.ti.com/git/graphics/omap5-sgx-ddk-um-linux.git;protocol=https;branch=${BRANCH} \ + file://pvrsrvkm.rules \ +" SRCREV = "742cf38aba13e1ba1a910cf1f036a1a212c263b6" TARGET_PRODUCT:omap-a15 = "jacinto6evm" @@ -27,6 +30,9 @@ INITSCRIPT_PARAMS = "defaults 8" inherit update-rc.d +PACKAGECONFIG ??= "udev" +PACKAGECONFIG[udev] = ",,,udev" + PROVIDES += "virtual/egl virtual/libgles1 virtual/libgles2 virtual/libgbm" DEPENDS += "libdrm udev wayland wayland-protocols libffi expat" @@ -56,6 +62,20 @@ do_install () { oe_runmake install DESTDIR=${D} TARGET_PRODUCT=${TARGET_PRODUCT} ln -sf libGLESv2.so.2 ${D}${libdir}/libGLESv2.so.1 + local without_sysvinit=${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'false', 'true', d)} + local with_udev=${@bb.utils.contains('PACKAGECONFIG', 'udev', 'true', 'false', d)} + + # Delete initscript if it is not needed or would conflict with the udev rules + if $without_sysvinit || $with_udev; then + rm -rf ${D}${sysconfdir}/init.d + rmdir --ignore-fail-on-non-empty ${D}${sysconfdir} + fi + + if $with_udev; then + install -m644 -D ${WORKDIR}/pvrsrvkm.rules \ + ${D}${nonarch_base_libdir}/udev/rules.d/80-pvrsrvkm.rules + fi + chown -R root:root ${D} } @@ -63,6 +83,7 @@ FILES:${PN} = "${bindir}/*" FILES:${PN} += " ${libdir}/*" FILES:${PN} += "${includedir}/*" FILES:${PN} += "${sysconfdir}/*" +FILES:${PN} += "${nonarch_base_libdir}/udev/rules.d" INSANE_SKIP:${PN} += "dev-so ldflags useless-rpaths" INSANE_SKIP:${PN} += "already-stripped dev-deps"
The ti-sgx-ddk driver requires an additional userspace initialization step after the kernel module has probed the device. Without this initialization, no EGL context can be created and Weston etc. will fail to start. The driver package contains an init script, but this does not work on systemd-based systems. Introduce an enabled-by-default PACKAGECONFIG that installs a udev rule instead to run the init command automatically when the driver is loaded, solving the issue without depending on a specific init system. udev reports several events when the pvrsrvkm module is loaded: - add event for the kernel module - add events for two DRM devices - bind event for the GPU platform device The DRM devices aren't nice to match on, and the kernel module add is too early to run `pvrsrvctl --start`, so we trigger on the platform device bind. Tested with Weston 9.0.0 on the AM65x-based TQ-Systems MBa65xx. Signed-off-by: Matthias Schiffer <matthias.schiffer@ew.tq-group.com> --- .../libgles/ti-sgx-ddk-um/pvrsrvkm.rules | 1 + .../libgles/ti-sgx-ddk-um_1.17.4948957.bb | 23 ++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 meta-ti-bsp/recipes-graphics/libgles/ti-sgx-ddk-um/pvrsrvkm.rules