mutex_init(&dev->persist->interface_state_mutex);
        mutex_init(&dev->persist->pci_status_mutex);
 
-       devlink_register(devlink);
        ret = devlink_params_register(devlink, mlx4_devlink_params,
                                      ARRAY_SIZE(mlx4_devlink_params));
        if (ret)
        if (ret)
                goto err_params_unregister;
 
-       devlink_params_publish(devlink);
-       devlink_reload_enable(devlink);
        pci_save_state(pdev);
+       devlink_register(devlink);
+       devlink_reload_enable(devlink);
        return 0;
 
 err_params_unregister:
        devlink_params_unregister(devlink, mlx4_devlink_params,
                                  ARRAY_SIZE(mlx4_devlink_params));
 err_devlink_unregister:
-       devlink_unregister(devlink);
        kfree(dev->persist);
 err_devlink_free:
        devlink_free(devlink);
        int active_vfs = 0;
 
        devlink_reload_disable(devlink);
+       devlink_unregister(devlink);
 
        if (mlx4_is_slave(dev))
                persist->interface_state |= MLX4_INTERFACE_STATE_NOWAIT;
        mlx4_pci_disable_device(dev);
        devlink_params_unregister(devlink, mlx4_devlink_params,
                                  ARRAY_SIZE(mlx4_devlink_params));
-       devlink_unregister(devlink);
        kfree(dev->persist);
        devlink_free(devlink);
 }