|
@@ -2469,6 +2469,7 @@ err_comm_admin:
|
|
|
kfree(priv->mfunc.master.slave_state);
|
|
|
err_comm:
|
|
|
iounmap(priv->mfunc.comm);
|
|
|
+ priv->mfunc.comm = NULL;
|
|
|
err_vhcr:
|
|
|
dma_free_coherent(&dev->persist->pdev->dev, PAGE_SIZE,
|
|
|
priv->mfunc.vhcr,
|
|
@@ -2537,6 +2538,13 @@ void mlx4_report_internal_err_comm_event(struct mlx4_dev *dev)
|
|
|
int slave;
|
|
|
u32 slave_read;
|
|
|
|
|
|
+ /* If the comm channel has not yet been initialized,
|
|
|
+ * skip reporting the internal error event to all
|
|
|
+ * the communication channels.
|
|
|
+ */
|
|
|
+ if (!priv->mfunc.comm)
|
|
|
+ return;
|
|
|
+
|
|
|
/* Report an internal error event to all
|
|
|
* communication channels.
|
|
|
*/
|
|
@@ -2571,6 +2579,7 @@ void mlx4_multi_func_cleanup(struct mlx4_dev *dev)
|
|
|
}
|
|
|
|
|
|
iounmap(priv->mfunc.comm);
|
|
|
+ priv->mfunc.comm = NULL;
|
|
|
}
|
|
|
|
|
|
void mlx4_cmd_cleanup(struct mlx4_dev *dev, int cleanup_mask)
|