Title: openibd always runs in manual mode on cold boot — global_init "$1" should be global_init "$@"

Environment

  • DOCA version: 3.2.2-035000-25.10
  • OS: Ubuntu 24.04
  • Kernel: 6.8.0-110
  • NIC: ConnectX (mlx5)

Symptom

After a cold boot (full AC cycle), openibd.service consistently fails:

openibd: running in manual mode
rmmod: ERROR: Module mlx_compat is in use by: sunrpc
systemd: openibd.service: Failed with result ‘exit-code’

Works fine after warm reboot or manual modprobe mlx5_ib —


Root Cause

/etc/init.d/openibd line 48 passes only $1 to global_initt that systemd passes via ExecStart:

ExecStart in openibd.service:

ExecStart=/etc/init.d/openibd start bootid=%b

$1 $2 ← dropped

line 48 (bug):

global_init “$1” # bootid never reaches global_init

should be:

global_init “$@”

Without bootid, set_run_mode always sets RUNMODE=manual, top() and attempts rmmod mlx_compat. On cold boot, sunrpc(loaded by rpcbind.socket activation) is already holding

In auto mode, set_run_mode compares srcversion of the loaOFED — if they match, stop() is skipped entirely andmlx5_ib loads successfully.


Fix

/etc/init.d/openibd, line 48

  • global_init “$1”

  • global_init “$@”

Verified: After applying the fix, journalctl -u openibd s the service finishes successfully on restart.


Note

/etc/init.d/openibd is owned by the mlnx-ofed-kernel-utile overwritten on package upgrade.