]>
Commit | Line | Data |
---|---|---|
ffc20820 GKH |
1 | From foo@baz Fri 31 May 2019 03:16:39 PM PDT |
2 | From: Michael Chan <michael.chan@broadcom.com> | |
3 | Date: Wed, 22 May 2019 19:12:56 -0400 | |
4 | Subject: bnxt_en: Reduce memory usage when running in kdump kernel. | |
5 | ||
6 | From: Michael Chan <michael.chan@broadcom.com> | |
7 | ||
8 | [ Upstream commit d629522e1d66561f38e5c8d4f52bb6d254ec0707 ] | |
9 | ||
10 | Skip RDMA context memory allocations, reduce to 1 ring, and disable | |
11 | TPA when running in the kdump kernel. Without this patch, the driver | |
12 | fails to initialize with memory allocation errors when running in a | |
13 | typical kdump kernel. | |
14 | ||
15 | Fixes: cf6daed098d1 ("bnxt_en: Increase context memory allocations on 57500 chips for RDMA.") | |
16 | Signed-off-by: Michael Chan <michael.chan@broadcom.com> | |
17 | Signed-off-by: David S. Miller <davem@davemloft.net> | |
18 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | |
19 | --- | |
20 | drivers/net/ethernet/broadcom/bnxt/bnxt.c | 4 ++-- | |
21 | drivers/net/ethernet/broadcom/bnxt/bnxt.h | 4 +++- | |
22 | 2 files changed, 5 insertions(+), 3 deletions(-) | |
23 | ||
24 | --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c | |
25 | +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c | |
26 | @@ -6342,7 +6342,7 @@ static int bnxt_alloc_ctx_mem(struct bnx | |
27 | if (!ctx || (ctx->flags & BNXT_CTX_FLAG_INITED)) | |
28 | return 0; | |
29 | ||
30 | - if (bp->flags & BNXT_FLAG_ROCE_CAP) { | |
31 | + if ((bp->flags & BNXT_FLAG_ROCE_CAP) && !is_kdump_kernel()) { | |
32 | pg_lvl = 2; | |
33 | extra_qps = 65536; | |
34 | extra_srqs = 8192; | |
35 | @@ -10340,7 +10340,7 @@ static int bnxt_set_dflt_rings(struct bn | |
36 | ||
37 | if (sh) | |
38 | bp->flags |= BNXT_FLAG_SHARED_RINGS; | |
39 | - dflt_rings = netif_get_num_default_rss_queues(); | |
40 | + dflt_rings = is_kdump_kernel() ? 1 : netif_get_num_default_rss_queues(); | |
41 | /* Reduce default rings on multi-port cards so that total default | |
42 | * rings do not exceed CPU count. | |
43 | */ | |
44 | --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.h | |
45 | +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.h | |
46 | @@ -20,6 +20,7 @@ | |
47 | ||
48 | #include <linux/interrupt.h> | |
49 | #include <linux/rhashtable.h> | |
50 | +#include <linux/crash_dump.h> | |
51 | #include <net/devlink.h> | |
52 | #include <net/dst_metadata.h> | |
53 | #include <net/xdp.h> | |
54 | @@ -1367,7 +1368,8 @@ struct bnxt { | |
55 | #define BNXT_CHIP_TYPE_NITRO_A0(bp) ((bp)->flags & BNXT_FLAG_CHIP_NITRO_A0) | |
56 | #define BNXT_RX_PAGE_MODE(bp) ((bp)->flags & BNXT_FLAG_RX_PAGE_MODE) | |
57 | #define BNXT_SUPPORTS_TPA(bp) (!BNXT_CHIP_TYPE_NITRO_A0(bp) && \ | |
58 | - !(bp->flags & BNXT_FLAG_CHIP_P5)) | |
59 | + !(bp->flags & BNXT_FLAG_CHIP_P5) && \ | |
60 | + !is_kdump_kernel()) | |
61 | ||
62 | /* Chip class phase 5 */ | |
63 | #define BNXT_CHIP_P5(bp) \ |