| From foo@baz Thu Jul 19 09:11:13 CEST 2018 |
| From: Sudarsana Reddy Kalluru <sudarsana.kalluru@cavium.com> |
| Date: Sun, 1 Jul 2018 20:03:05 -0700 |
| Subject: qed: Limit msix vectors in kdump kernel to the minimum required count. |
| |
| From: Sudarsana Reddy Kalluru <sudarsana.kalluru@cavium.com> |
| |
| [ Upstream commit bb7858ba1102f82470a917e041fd23e6385c31be ] |
| |
| Memory size is limited in the kdump kernel environment. Allocation of more |
| msix-vectors (or queues) consumes few tens of MBs of memory, which might |
| lead to the kdump kernel failure. |
| This patch adds changes to limit the number of MSI-X vectors in kdump |
| kernel to minimum required value (i.e., 2 per engine). |
| |
| Fixes: fe56b9e6a ("qed: Add module with basic common support") |
| Signed-off-by: Sudarsana Reddy Kalluru <Sudarsana.Kalluru@cavium.com> |
| Signed-off-by: Michal Kalderon <Michal.Kalderon@cavium.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/ethernet/qlogic/qed/qed_main.c | 9 +++++++++ |
| 1 file changed, 9 insertions(+) |
| |
| --- a/drivers/net/ethernet/qlogic/qed/qed_main.c |
| +++ b/drivers/net/ethernet/qlogic/qed/qed_main.c |
| @@ -22,6 +22,7 @@ |
| #include <linux/etherdevice.h> |
| #include <linux/vmalloc.h> |
| #include <linux/qed/qed_if.h> |
| +#include <linux/crash_dump.h> |
| |
| #include "qed.h" |
| #include "qed_sp.h" |
| @@ -634,6 +635,14 @@ static int qed_slowpath_setup_int(struct |
| /* We want a minimum of one slowpath and one fastpath vector per hwfn */ |
| cdev->int_params.in.min_msix_cnt = cdev->num_hwfns * 2; |
| |
| + if (is_kdump_kernel()) { |
| + DP_INFO(cdev, |
| + "Kdump kernel: Limit the max number of requested MSI-X vectors to %hd\n", |
| + cdev->int_params.in.min_msix_cnt); |
| + cdev->int_params.in.num_vectors = |
| + cdev->int_params.in.min_msix_cnt; |
| + } |
| + |
| rc = qed_set_int_mode(cdev, false); |
| if (rc) { |
| DP_ERR(cdev, "qed_slowpath_setup_int ERR\n"); |