systemd: fix missing path separator in firmware-path
PATCH 1/1 systemd: fix missing path separator in firmware-path
From: Andy Kling <[email protected]>
udev fails to load firmware for CONFIG_FW_LOADER_USER_HELPER systemd-udevd[158]: did not find firmware file 'xxx'
function builtin_firmware currently assumes FIRMWARE_PATH ends with "/" fixing the path passed to meson allows the firmware loader to succeed. systemd-udevd[145]: writing '/lib/firmware/xxx'
--- meta/recipes-core/systemd/systemd_237.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
meta/recipes-core/systemd/systemd_237.bb +1 -1
@@ -185,7 +185,7 @@ EXTRA_OEMESON += "-Dnobody-user=nobody \ -Drootlibdir=${rootlibdir} \ -Drootprefix=${rootprefix} \ -Dsysvrcnd-path=${sysconfdir} \ - -Dfirmware-path=${nonarch_base_libdir}/firmware \ + -Dfirmware-path=${nonarch_base_libdir}/firmware/ \ " # Hardcode target binary paths to avoid using paths from sysroot
Signature · 1 line
2.18.0
Hi Andreas,
I'm OK with this patch.
I'm interested in your environment. Could you please give me some more details about why you need this userspace firmware loading mechanism?
I'm upgrading systemd to 239, and I'm going to remove this option in 239.
The reason is that systemd's minimal kernel requirement is 3.13, and userspace firmware loading is needed before kernel 3.7. I just checked 237, its minimal requirement is also 3.13.
The userspace firmware loading support has been removed from udev for several years. It's said that using userspace firmware loading is slow, and kernel has been able to do this for a long time.
So could you please give me some details about your environment? Is there some compelling reason to use userspace firmware loading mechanism? This would help me to check if we should keep local patches with more details updated in them.
Best Regards,
Chen Qi
Quoted 27 lines · On 07/07/2018 08:28 PM, [email protected] wrote:
From: Andy Kling <[email protected]>
udev fails to load firmware for
CONFIG_FW_LOADER_USER_HELPERsystemd-udevd[158]: did not find firmware file 'xxx'function
builtin_firmwarecurrently assumesFIRMWARE_PATHends with "/" fixing the path passed to meson allows the firmware loader to succeed. systemd-udevd[145]: writing '/lib/firmware/xxx'Signed-off-by Andy Kling <[email protected]>--- meta/recipes-core/systemd/systemd_237.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)meta/recipes-core/systemd/systemd_237.bb +1
-1@@ -185,7 +185,7 @@ EXTRA_OEMESON += "-Dnobody-user=nobody \ -Drootlibdir=${rootlibdir} \ -Drootprefix=${rootprefix} \ -Dsysvrcnd-path=${sysconfdir} \ - -Dfirmware-path=${nonarch_base_libdir}/firmware \ + -Dfirmware-path=${nonarch_base_libdir}/firmware/ \ " # Hardcode target binary paths to avoid using paths from sysroot
Hi Chen,
Am Mo., 9. Juli 2018 um 05:13 Uhr schrieb ChenQi <[email protected]>:
Quoted 54 lines
Hi Andreas,
I'm OK with this patch.
I'm interested in your environment. Could you please give me some more details about why you need this userspace firmware loading mechanism?
I'm upgrading systemd to 239, and I'm going to remove this option in 239. The reason is that systemd's minimal kernel requirement is 3.13, and userspace firmware loading is needed before kernel 3.7. I just checked 237, its minimal requirement is also 3.13.
The userspace firmware loading support has been removed from udev for several years. It's said that using userspace firmware loading is slow, and kernel has been able to do this for a long time.
So could you please give me some details about your environment? Is there some compelling reason to use userspace firmware loading mechanism? This would help me to check if we should keep local patches with more details updated in them.
Best Regards,
Chen QiQuoted 26 lines · On 07/07/2018 08:28 PM, [email protected] wrote:
From: Andy Kling <[email protected]>
udev fails to load firmware for
CONFIG_FW_LOADER_USER_HELPERsystemd-udevd[158]: did not find firmware file 'xxx'function
builtin_firmwarecurrently assumesFIRMWARE_PATHends with "/" fixing the path passed to meson allows the firmware loader to succeed. systemd-udevd[145]: writing '/lib/firmware/xxx'Signed-off-by Andy Kling <[email protected]>--- meta/recipes-core/systemd/systemd_237.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)meta/recipes-core/systemd/systemd_237.bb +1
-1@@ -185,7 +185,7 @@ EXTRA_OEMESON += "-Dnobody-user=nobody \ -Drootlibdir=${rootlibdir} \ -Drootprefix=${rootprefix} \ -Dsysvrcnd-path=${sysconfdir} \ - -Dfirmware-path=${nonarch_base_libdir}/firmware \ + -Dfirmware-path=${nonarch_base_libdir}/firmware/ \ "
Quoted 3 lines
meta/recipes-core/systemd/systemd_237.bb EXTRA_OEMESON += "-Dnobody-user=nobody \ · line 191
Quoted 1 line
meta/recipes-core/systemd/systemd_237.bb +0
-0# Hardcode target binary paths to avoid using paths from sysroot
yes I would wish not to use the user helper, but it is what I get currently. What are the alternatives? I'm investigating those, unfortunately with low priority.
- Move everything to modules so it gets loaded after rootfs is mounted
- Builtin firmware into the kernel
- Provide an initramfs with the required bits
I found https://www.kernel.org/doc/html/v4.17/driver-api/firmware/index.html
quite helpful.
User helper is not the common case anymore, udev removed the support for quite some time now.
So I do not get firmware loaded for builtin modules in an image "out of the box" without further invest.
What is the common way in yocto today if one has concerns about size, speed or something?
Kind regards