| From 415d34e4184adbb88b1b5b014c4fc6163f4871a2 Mon Sep 17 00:00:00 2001 |
| From: Eli Cohen <eli@mellanox.com> |
| Date: Sun, 27 Nov 2016 15:18:21 +0200 |
| Subject: [PATCH] IB/mlx5: Avoid system crash when enabling many VFs |
| |
| commit afd02cd3a9b6c04b41d946b5d7f6e17b3fc30c6b upstream. |
| |
| When enabling many VFs, the total amount of DMA mappings increase |
| significantly. This causes DMA allocations to take a lot of time |
| since they are serialized in the kernel. |
| |
| As a result the driver enters into fatal condition due to |
| timeout and the system hangs. To recover from this we disable |
| MR cache for VFs. |
| |
| PFs will still have a full cache and VFs cache can be manipulated |
| as usual after driver load. |
| |
| Fixes: e126ba97dba9 ('mlx5: Add driver for Mellanox Connect-IB adapters') |
| Signed-off-by: Eli Cohen <eli@mellanox.com> |
| Signed-off-by: Maor Gottlieb <maorg@mellanox.com> |
| Signed-off-by: Leon Romanovsky <leon@kernel.org> |
| Signed-off-by: Doug Ledford <dledford@redhat.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/infiniband/hw/mlx5/mr.c b/drivers/infiniband/hw/mlx5/mr.c |
| index 4b021305c321..a9ffcae57d46 100644 |
| --- a/drivers/infiniband/hw/mlx5/mr.c |
| +++ b/drivers/infiniband/hw/mlx5/mr.c |
| @@ -631,7 +631,8 @@ int mlx5_mr_cache_init(struct mlx5_ib_dev *dev) |
| ent->order = i + 2; |
| ent->dev = dev; |
| |
| - if (dev->mdev->profile->mask & MLX5_PROF_MASK_MR_CACHE) |
| + if ((dev->mdev->profile->mask & MLX5_PROF_MASK_MR_CACHE) && |
| + (mlx5_core_is_pf(dev->mdev))) |
| limit = dev->mdev->profile->mr_cache[i].limit; |
| else |
| limit = 0; |
| -- |
| 2.10.1 |
| |