All of lore.kernel.org
 help / color / mirror / Atom feed
From: Denys Dmytriyenko <denis@denix.org>
To: Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
Cc: meta-ti@lists.yoctoproject.org
Subject: Re: [meta-ti] [master/kirkstone][PATCH 2/2] ti-sgx-ddk-um: use udev for userspace initialization
Date: Wed, 22 Feb 2023 20:38:26 -0500	[thread overview]
Message-ID: <20230223013826.GJ22689@denix.org> (raw)
In-Reply-To: <38b94bc6ee2f585eddbe7461ecd1d02f4ced08ab.camel@ew.tq-group.com>

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...

-- 
Denys


On Tue, Dec 20, 2022 at 10:10:41AM +0100, Matthias Schiffer wrote:
> 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


  reply	other threads:[~2023-02-23  1:39 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-16 13:01 [master/kirkstone][PATCH 1/2] treewide: replace leftover git://git.ti.com Matthias Schiffer
2022-12-16 13:01 ` [master/kirkstone][PATCH 2/2] ti-sgx-ddk-um: use udev for userspace initialization Matthias Schiffer
2022-12-19 21:00   ` [meta-ti] " Denys Dmytriyenko
2022-12-20  9:10     ` Matthias Schiffer
2023-02-23  1:38       ` Denys Dmytriyenko [this message]
2023-02-23  9:20         ` Matthias Schiffer
2023-03-01  1:26           ` Denys Dmytriyenko
2023-03-01  9:01             ` Matthias Schiffer
2023-03-01 21:48               ` Andrew Davis
2023-03-02  9:47                 ` Matthias Schiffer
2022-12-19 20:41 ` [meta-ti] [master/kirkstone][PATCH 1/2] treewide: replace leftover git://git.ti.com Denys Dmytriyenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230223013826.GJ22689@denix.org \
    --to=denis@denix.org \
    --cc=matthias.schiffer@ew.tq-group.com \
    --cc=meta-ti@lists.yoctoproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.