From 2cc8d0363e9b45bc33cf130cffccc51ecef88f1e Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Sun, 18 Mar 2012 14:03:42 +0000 Subject: [PATCH] * Move the implementation of boot.kernelModules to udev's postStart. It needs udevd to be running because the modules may require firmware. Thanks to Mathijs and Arie for pointing this out. svn path=/nixos/trunk/; revision=33234 --- modules/hardware/cpu/intel-microcode.nix | 12 +----------- modules/services/hardware/udev.nix | 11 +++++++++++ modules/system/boot/modprobe.nix | 5 ----- 3 files changed, 12 insertions(+), 16 deletions(-) diff --git a/modules/hardware/cpu/intel-microcode.nix b/modules/hardware/cpu/intel-microcode.nix index fa7a6edc737..b8e97b4ca4a 100644 --- a/modules/hardware/cpu/intel-microcode.nix +++ b/modules/hardware/cpu/intel-microcode.nix @@ -23,17 +23,7 @@ with pkgs.lib; config = mkIf config.hardware.cpu.intel.updateMicrocode { hardware.firmware = [ pkgs.microcodeIntel ]; - - # This cannot be done using boot.kernelModules - # discussion at http://lists.science.uu.nl/pipermail/nix-dev/2012-February/007959.html - jobs.microcode = { - name = "microcode"; - description = "load microcode"; - startOn = "started udev"; - exec = "modprobe microcode"; - path = [config.system.sbin.modprobe]; - task = true; - }; + boot.kernelModules = [ "microcode" ]; }; } diff --git a/modules/services/hardware/udev.nix b/modules/services/hardware/udev.nix index c4c348c7c25..0802d4f7dbc 100644 --- a/modules/services/hardware/udev.nix +++ b/modules/services/hardware/udev.nix @@ -236,6 +236,17 @@ in daemonType = "fork"; exec = "udevd --daemon"; + + postStart = + '' + # Do the loading of additional stage 2 kernel modules. + # This needs to be done while udevd is running, because + # the modules may call upon udev's firmware loading rule. + for i in ${toString config.boot.kernelModules}; do + echo "loading kernel module ā€˜$i’..." + ${config.system.sbin.modprobe}/sbin/modprobe $i || true + done + ''; }; jobs.udevtrigger = diff --git a/modules/system/boot/modprobe.nix b/modules/system/boot/modprobe.nix index 4dd866a4395..ef3ed3bed94 100644 --- a/modules/system/boot/modprobe.nix +++ b/modules/system/boot/modprobe.nix @@ -100,11 +100,6 @@ with pkgs.lib; # We need this when the kernel (or some module) auto-loads a # module. echo ${config.system.sbin.modprobe}/sbin/modprobe > /proc/sys/kernel/modprobe - - # Do the loading of additional stage 2 kernel modules. - for i in ${toString config.boot.kernelModules}; do - ${config.system.sbin.modprobe}/sbin/modprobe $i || true - done ''; };