View Issue Details

IDProjectCategoryView StatusLast Update
0000671channel: kernel/el7kernel-ltpublic2016-09-08 16:43
Reporterorion Assigned Toburakkucat  
PrioritynormalSeverityminorReproducibilityhave not tried
Status resolvedResolutionfixed 
Summary0000671: Disable CONFIG_FW_LOADER_USER_HELPER
DescriptionPlease disable CONFIG_FW_LOADER_USER_HELPER in the elrepo kernels. This introduces significant delays in loading firmware for various devices. For example:

[ 4.318150] iwlwifi 0000:3a:00.0: Direct firmware load for iwlwifi-7265-19.ucode failed with error -2
[ 4.318153] iwlwifi 0000:3a:00.0: Falling back to user helper
[ 64.319419] iwlwifi 0000:3a:00.0: Direct firmware load for iwlwifi-7265-18.ucode failed with error -2
[ 64.319429] iwlwifi 0000:3a:00.0: Falling back to user helper
[ 124.326998] iwlwifi 0000:3a:00.0: loaded firmware version 17.352738.0 op_mode iwlmvm

Each failed attempt results in a 60 second delay in attempting to load the firmware. From my research, this is not recommended to be set, and RHEL and Fedora do not set it.

https://bugzilla.redhat.com/show_bug.cgi?id=1317148
https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1398458
http://unix.stackexchange.com/questions/163012/iwlwifi-timeout-delays-firmware-to-be-loaded

unfortunately the workaround in the last one didn't work for me.

Thanks.

/boot/config-3.10.0-327.18.2.el7.x86_64:# CONFIG_FW_LOADER_USER_HELPER is not set
/boot/config-3.10.0-327.22.2.el7.x86_64:# CONFIG_FW_LOADER_USER_HELPER is not set
/boot/config-3.10.0-327.28.2.el7.x86_64:# CONFIG_FW_LOADER_USER_HELPER is not set
/boot/config-3.10.0-327.28.3.el7.x86_64:# CONFIG_FW_LOADER_USER_HELPER is not set
/boot/config-4.4.16-1.el7.elrepo.x86_64:CONFIG_FW_LOADER_USER_HELPER=y
/boot/config-4.4.16-1.el7.elrepo.x86_64:CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
TagsNo tags attached.

Activities

pperry

2016-08-21 12:41

administrator   ~0004847

Hi,

We are looking into this.

At present, CONFIG_DELL_RBU depends on FW_LOADER_USER_HELPER (at least in kernel-4.4) which prevents FW_LOADER_USER_HELPER from being disabled.

config DELL_RBU
    tristate "BIOS update support for DELL systems via sysfs"
    depends on X86
    select FW_LOADER
    select FW_LOADER_USER_HELPER
    help
     Say m if you want to have the option of updating the BIOS for your
     DELL system. Note you need a Dell OpenManage or Dell Update package (DUP)
     supporting application to communicate with the BIOS regarding the new
     image for the image update to take effect.
     See <file:Documentation/dell_rbu.txt> for more details on the driver.

burakkucat

2016-08-22 13:35

administrator   ~0004852

We now have testing kernels available, built from the Linux-4.8-rc3 sources. They may be downloaded from the directories under --

https://elrepo.org/people/ajb/devel/kernel-ml/

Please install the relevant version for your system, boot it and examine the result. If it proves satisfactory, the configuration adjustment will be applied to all of our released kernel-{lt|ml} packages as each set is subsequently rebuilt.

orion

2016-08-22 13:54

reporter   ~0004853

Works for me, although I don't see it trying to load the later firmware revisions now either. I also can't test DELL_RBU.

[ 5.575866] iwlwifi 0000:3a:00.0: loaded firmware version 17.352738.0 op_mode iwlmvm

Looks like just the FALLBACK option was the culprit?

Thanks.

burakkucat

2016-08-22 16:05

administrator   ~0004854

Yes, indeed, it was the FW_LOADER_USER_HELPER_FALLBACK option.

The drivers/base/Kconfig file shows --

config UEVENT_HELPER
        bool "Support for uevent helper"
        default y
        help
          The uevent helper program is forked by the kernel for
          every uevent.
          Before the switch to the netlink-based uevent source, this was
          used to hook hotplug scripts into kernel device events. It
          usually pointed to a shell script at /sbin/hotplug.
          This should not be used today, because usual systems create
          many events at bootup or device discovery in a very short time
          frame. One forked process per event can create so many processes
          that it creates a high system load, or on smaller systems
          it is known to create out-of-memory situations during bootup.

config UEVENT_HELPER_PATH
        string "path to uevent helper"
        depends on UEVENT_HELPER
        default ""
        help
          To disable user space helper program execution at by default
          specify an empty string here. This setting can still be altered
          via /proc/sys/kernel/hotplug or via /sys/kernel/uevent_helper
          later at runtime.

config FW_LOADER_USER_HELPER
        bool

config FW_LOADER_USER_HELPER_FALLBACK
        bool "Fallback user-helper invocation for firmware loading"
        depends on FW_LOADER
        select FW_LOADER_USER_HELPER
        help
          This option enables / disables the invocation of user-helper
          (e.g. udev) for loading firmware files as a fallback after the
          direct file loading in kernel fails. The user-mode helper is
          no longer required unless you have a special firmware file that
          resides in a non-standard path. Moreover, the udev support has
          been deprecated upstream.

          If you are unsure about this, say N here.

The current configuration file (looking at that for kernel-lt-4.4.19-1.el7.elrepo) has the following options --

[Build64R7 config-4.4]$ grep -E 'CONFIG_UEVENT_HELPER|CONFIG_FW_LOADER_USER_HELPER' config-4.4.19-x86_64
CONFIG_UEVENT_HELPER=y
CONFIG_UEVENT_HELPER_PATH=""
CONFIG_FW_LOADER_USER_HELPER=y
CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
[Build64R7 config-4.4]$

The FALLBACK option will be turned off in the respective configuration files for the next update rebuild of each kernel-{lt|ml}-*-1.el{6|7}.elrepo package set.

Thank you for drawing our attention to this issue and for your subsequent testing.

burakkucat

2016-09-08 16:43

administrator   ~0004860

With the recent release of updated kernel-lt and kernel-ml package sets for RHEL7, the discussed configuration adjustment is now present in all of the ELRepo Project's released kernel sets.

[Build64 kernels]$ grep -r CONFIG_FW_LOADER_USER_HELPER_FALLBACK * | sort | grep "is not set"
el6/config-4.7/config-4.7.3-i686:# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set
el6/config-4.7/config-4.7.3-i686-NONPAE:# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set
el6/config-4.7/config-4.7.3-x86_64:# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set
el6/config-4.8/config-4.8.0-i686:# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set
el6/config-4.8/config-4.8.0-i686-NONPAE:# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set
el6/config-4.8/config-4.8.0-x86_64:# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set
el7/config-4.4/config-4.4.20-x86_64:# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set
el7/config-4.7/config-4.7.3-x86_64:# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set
el7/config-4.8/config-4.8.0-x86_64:# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set
[Build64 kernels]$

Now closing as "resolved/fixed".

Issue History

Date Modified Username Field Change
2016-08-20 16:25 orion New Issue
2016-08-20 16:25 orion Status new => assigned
2016-08-20 16:25 orion Assigned To => burakkucat
2016-08-21 01:32 pperry Category kernel-ml => kernel-lt
2016-08-21 12:41 pperry Note Added: 0004847
2016-08-22 13:35 burakkucat Note Added: 0004852
2016-08-22 13:54 orion Note Added: 0004853
2016-08-22 16:05 burakkucat Note Added: 0004854
2016-09-08 16:43 burakkucat Note Added: 0004860
2016-09-08 16:43 burakkucat Status assigned => resolved
2016-09-08 16:43 burakkucat Resolution open => fixed