Comment 11 for bug 1115710

Revision history for this message
Scott Moser (smoser) wrote :

OK. so, I basically had 2 choices for modprobe.d auto_loading of mlx4_en upon usage of mlx4_core. Neither was perfect.

A.) "softdep mlx4_core post: mlx4_en mlx4_ib"
The softdep route hits what it seems to me to be a bug in 12.04 in modprobe
or update-initramfs. The updating of initramfs gives warnings like:
  FATAL: modprobe: softdep dependency loop encountered inserting mlx4_core
  FATAL: modprobe: softdep dependency loop encountered inserting mlx4_core
It exits with success (0), but it does not put mlx4_en inside the initramfs.

B.) "install mlx4_core /sbin/modprobe --ignore-install mlx4_core; /sbin/modprobe mlx4_en; /sbin/modprobe mlx4_ib"

With this entry, creation of initramfs goes fine, but but if there is no mlx4_en or mlx4_ib module available upon request to load the mlx4_core module, the user gets a confusing error:
   $ sudo modprobe mlx4_core; echo $?
   FATAL: Could not read '/lib/modules/3.2.0-37-virtual/kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_en.ko': No such file or directory
   0

It really feels to me that soft-dep is more intended to satisfy this exact need, but the initramfs is a killer. So, we'll go with the 'install' route.

### issue with softdep route ####

$ sudo rm /boot/initrd.img-$(uname -r); sudo update-initramfs -u -k $(uname -r); echo $?; echo === ; cat /etc/modprobe.d/mlx4.conf; echo ===; lsinitramfs /boot/initrd.img-$(uname -r) | grep mlx
update-initramfs: Generating /boot/initrd.img-3.2.0-37-virtual
FATAL: modprobe: softdep dependency loop encountered inserting mlx4_core
FATAL: modprobe: softdep dependency loop encountered inserting mlx4_core
0
===
# mlx4_core should load mlx4_en (LP: #1115710).
softdep mlx4_core post: mlx4_en mlx4_ib
===
lib/modules/3.2.0-37-virtual/kernel/drivers/net/ethernet/mellanox/mlx4
lib/modules/3.2.0-37-virtual/kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_core.ko
etc/modprobe.d/mlx4.conf

### issue with install route ####

$ sudo cp ~/mlx4.conf.install /etc/modprobe.d/mlx4.conf; sudo rmmod mlx4_en mlx4_ib mlx4_core &>/dev/null; sudo rm -f /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_en.ko; echo === ; cat /etc/modprobe.d/mlx4.conf; echo ===; sudo modprobe mlx4_core; echo $?;
===
# mlx4_core should load mlx4_en (LP: #1115710).
#softdep mlx4_core post: mlx4_en mlx4_ib
install mlx4_core /sbin/modprobe --ignore-install mlx4_core; /sbin/modprobe mlx4_en; /sbin/modprobe mlx4_ib
===
FATAL: Could not read '/lib/modules/3.2.0-37-virtual/kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_en.ko': No such file or directory
0