** Description changed: + [Impact] + subsystems udev rules are not processed on boot, thus resulting in missing devices on boot / before rootfs is mounted. + + [Solution] + trigger udev subsystems and devices, in the initramfs, in that order. + + [Testcase] + Boot s390x system with chzdev configured devices, and cio_ignore=all kernel command line parameter. The chzdev configured devices should still be discovered on boot. + + [Original Bug report] + The udev initramfs-tools boot script does not trigger subsystem "add" uevents. As a result, udev rules that listen to subsystem "add" events are never activated. This problem exists on at least Ubuntu 16.04 and 17.10. On s390, this results in a boot failure if the kernel is configured to start with an active device black list (kernel parameter cio_ignore=all,!condev). An example for an affected udev rule looks like this: - ACTION=="add", SUBSYSTEM=="subsystem", KERNEL=="ccw", + ACTION=="add", SUBSYSTEM=="subsystem", KERNEL=="ccw", RUN{program}+="/bin/sh -c 'echo free 0009,ec30,ec32,f5f0-f5f2 > /proc/cio_ignore'" A proposed fix would be: Modify /usr/share/initramfs-tools/scripts/init-top/udev: Replace line - udevadm trigger --action=add + udevadm trigger --action=add with - udevadm trigger --type=subsystems --action=add - udevadm trigger --type=devices --action=add + udevadm trigger --type=subsystems --action=add + udevadm trigger --type=devices --action=add This would also be consistent with the steps that the systemd udev coldplug unit file performs (see /lib/systemd/system/systemd-udev- trigger.service).
** Description changed: [Impact] subsystems udev rules are not processed on boot, thus resulting in missing devices on boot / before rootfs is mounted. [Solution] trigger udev subsystems and devices, in the initramfs, in that order. [Testcase] Boot s390x system with chzdev configured devices, and cio_ignore=all kernel command line parameter. The chzdev configured devices should still be discovered on boot. [Original Bug report] The udev initramfs-tools boot script does not trigger subsystem "add" uevents. As a result, udev rules that listen to subsystem "add" events are never activated. This problem exists on at least Ubuntu 16.04 and 17.10. On s390, this results in a boot failure if the kernel is configured to start with an active device black list (kernel parameter cio_ignore=all,!condev). An example for an affected udev rule looks like this: ACTION=="add", SUBSYSTEM=="subsystem", KERNEL=="ccw", RUN{program}+="/bin/sh -c 'echo free 0009,ec30,ec32,f5f0-f5f2 > /proc/cio_ignore'" A proposed fix would be: Modify /usr/share/initramfs-tools/scripts/init-top/udev: Replace line udevadm trigger --action=add with udevadm trigger --type=subsystems --action=add udevadm trigger --type=devices --action=add This would also be consistent with the steps that the systemd udev coldplug unit file performs (see /lib/systemd/system/systemd-udev- trigger.service). + + [Regression Potential] + More udev rules will be now triggered, earlier, during initramfs stage of boot rather than post-pivot-root. However, this is inline with current rootfs behaviour and thus should not regress behaviour - simply some rules will get triggered earlier. -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1713536 Title: udev: boot script does not trigger subsystem coldplug To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu-z-systems/+bug/1713536/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs