linux_dsm_epyc7002/drivers/net/ethernet
Bhupesh Sharma 73e030977f net: qed*: Reduce RX and TX default ring count when running inside kdump kernel
Normally kdump kernel(s) run under severe memory constraint with the
basic idea being to save the crashdump vmcore reliably when the primary
kernel panics/hangs.

Currently the qed* ethernet driver ends up consuming a lot of memory in
the kdump kernel, leading to kdump kernel panic when one tries to save
the vmcore via ssh/nfs (thus utilizing the services of the underlying
qed* network interfaces).

An example OOM message log seen in the kdump kernel can be seen here
[1], with crashkernel size reservation of 512M.

Using tools like memstrack (see [2]), we can track the modules taking up
the bulk of memory in the kdump kernel and organize the memory usage
output as per 'highest allocator first'. An example log for the OOM case
indicates that the qed* modules end up allocating approximately 216M
memory, which is a large part of the total crashkernel size:

 dracut-pre-pivot[676]: ======== Report format module_summary: ========
 dracut-pre-pivot[676]: Module qed using 149.6MB (2394 pages), peak allocation 149.6MB (2394 pages)
 dracut-pre-pivot[676]: Module qede using 65.3MB (1045 pages), peak allocation 65.3MB (1045 pages)

This patch reduces the default RX and TX ring count from 1024 to 64
when running inside kdump kernel, which leads to a significant memory
saving.

An example log with the patch applied shows the reduced memory
allocation in the kdump kernel:
 dracut-pre-pivot[674]: ======== Report format module_summary: ========
 dracut-pre-pivot[674]: Module qed using 141.8MB (2268 pages), peak allocation 141.8MB (2268 pages)
 <..snip..>
[dracut-pre-pivot[674]: Module qede using 4.8MB (76 pages), peak allocation 4.9MB (78 pages)

Tested crashdump vmcore save via ssh/nfs protocol using underlying qed*
network interface after applying this patch.

[1] OOM log:
------------

 kworker/0:6: page allocation failure: order:6,
 mode:0x60c0c0(GFP_KERNEL|__GFP_COMP|__GFP_ZERO), nodemask=(null)
 kworker/0:6 cpuset=/ mems_allowed=0
 CPU: 0 PID: 145 Comm: kworker/0:6 Not tainted 4.18.0-109.el8.aarch64 #1
 Hardware name: To be filled by O.E.M. Saber/Saber, BIOS 0ACKL025
 01/18/2019
 Workqueue: events work_for_cpu_fn
 Call trace:
  dump_backtrace+0x0/0x188
  show_stack+0x24/0x30
  dump_stack+0x90/0xb4
  warn_alloc+0xf4/0x178
  __alloc_pages_nodemask+0xcac/0xd58
  alloc_pages_current+0x8c/0xf8
  kmalloc_order_trace+0x38/0x108
  qed_iov_alloc+0x40/0x248 [qed]
  qed_resc_alloc+0x224/0x518 [qed]
  qed_slowpath_start+0x254/0x928 [qed]
   __qede_probe+0xf8/0x5e0 [qede]
  qede_probe+0x68/0xd8 [qede]
  local_pci_probe+0x44/0xa8
  work_for_cpu_fn+0x20/0x30
  process_one_work+0x1ac/0x3e8
  worker_thread+0x44/0x448
  kthread+0x130/0x138
  ret_from_fork+0x10/0x18
  Cannot start slowpath
  qede: probe of 0000:05:00.1 failed with error -12

[2]. Memstrack tool: https://github.com/ryncsn/memstrack

Cc: kexec@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Cc: Ariel Elior <aelior@marvell.com>
Cc: GR-everest-linux-l2@marvell.com
Cc: Manish Chopra <manishc@marvell.com>
Cc: David S. Miller <davem@davemloft.net>
Signed-off-by: Bhupesh Sharma <bhsharma@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2020-05-11 13:24:59 -07:00
..
3com docs: networking: device drivers: convert 3com/vortex.txt to ReST 2020-05-01 12:24:41 -07:00
8390
adaptec drivers: Remove inclusion of vermagic header 2020-04-21 13:27:37 -07:00
aeroflex
agere net: agere: use true,false for bool variable 2020-05-05 11:39:42 -07:00
alacritech
allwinner net: allwinner: Fix use correct return type for ndo_start_xmit() 2020-05-05 11:14:40 -07:00
alteon
altera net: altera: Fix use correct return type for ndo_start_xmit() 2020-05-05 11:15:41 -07:00
amazon Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-05-06 22:10:13 -07:00
amd net: atarilance: Replace zero-length array with flexible-array 2020-05-11 13:18:54 -07:00
apm
apple
aquantia net: atlantic: unify MAC generation 2020-05-09 11:47:25 -07:00
arc
atheros net/atheros: remove redundant assignment to variable size 2020-05-08 22:46:36 -07:00
aurora
broadcom cnic: remove redundant assignment to variable ret 2020-05-08 22:46:16 -07:00
brocade net: bna: reject unsupported coalescing params 2020-03-10 16:28:53 -07:00
cadence net: macb: fix an issue about leak related system resources 2020-05-03 16:01:48 -07:00
calxeda
cavium net: lio_core: remove redundant assignment to variable tx_done 2020-05-08 22:46:51 -07:00
chelsio cxgb4: remove duplicate headers 2020-05-07 13:25:40 -07:00
cirrus docs: networking: device drivers: convert cirrus/cs89x0.txt to ReST 2020-05-01 12:24:41 -07:00
cisco
cortina net: cortina: Fix use correct return type for ndo_start_xmit() 2020-05-06 13:57:30 -07:00
davicom
dec net: tulip: de4x5: make PCI_signature() return void 2020-05-07 13:04:21 -07:00
dlink docs: networking: device drivers: convert dlink/dl2k.txt to ReST 2020-05-01 12:24:42 -07:00
emulex net: be2net: reject unsupported coalescing params 2020-03-12 11:32:35 -07:00
ezchip
faraday net/faraday: Fix unnecessary check in ftmac100_probe() 2020-04-30 12:20:54 -07:00
freescale dpaa2-eth: create a function to flush the XDP fds 2020-05-07 17:40:02 -07:00
fujitsu
google
hisilicon net: hns3: disable auto-negotiation off with 1000M setting in ethtool 2020-05-10 19:43:22 -07:00
huawei hinic: add link_ksettings ethtool_ops support 2020-05-11 13:19:35 -07:00
i825xx
ibm ibmvnic: Skip fatal error reset after passive init 2020-04-30 13:27:17 -07:00
intel ice: Fix error return code in ice_add_prof() 2020-04-30 20:29:09 -07:00
marvell octeontx2-pf: Use the napi_alloc_frag() to alloc the pool buffers 2020-05-09 21:04:40 -07:00
mediatek net: mediatek: Fix use correct return type for ndo_start_xmit() 2020-05-06 14:19:42 -07:00
mellanox mlxsw: spectrum_flower: Forbid to insert flower rules in collision with matchall rules 2020-05-09 16:02:43 -07:00
micrel Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2020-03-29 21:25:29 -07:00
microchip net: encx24j600: make encx24j600_hw_init() return void 2020-05-07 13:04:21 -07:00
moxa Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-05-06 22:10:13 -07:00
mscc net: remove newlines in NL_SET_ERR_MSG_MOD 2020-05-07 17:56:14 -07:00
myricom myri10ge: Remove unused inline function myri10ge_vlan_ip_csum 2020-05-05 12:07:43 -07:00
natsemi net/sonic: Fix a resource leak in an error handling path in 'jazz_sonic_probe()' 2020-04-27 12:07:46 -07:00
neterion docs: networking: device drivers: convert neterion/vxge.txt to ReST 2020-05-01 12:24:42 -07:00
netronome Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-05-06 22:10:13 -07:00
ni net: ni: Fix use correct return type for ndo_start_xmit() 2020-05-05 11:39:43 -07:00
nvidia
nxp net: nxp: Fix use correct return type for ndo_start_xmit() 2020-05-05 11:17:56 -07:00
oki-semi
packetengines
pasemi
pensando Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-05-06 22:10:13 -07:00
qlogic net: qed*: Reduce RX and TX default ring count when running inside kdump kernel 2020-05-11 13:24:59 -07:00
qualcomm net: emac: Fix use correct return type for ndo_start_xmit() 2020-05-05 11:20:23 -07:00
rdc
realtek r8169: improve reset handling for chips from RTL8168g 2020-05-08 22:41:55 -07:00
renesas net: renesas: Fix use correct return type for ndo_start_xmit() 2020-05-06 14:13:39 -07:00
rocker
samsung net: sxgbe: reject unsupported coalescing params 2020-03-14 21:13:55 -07:00
seeq
sfc sfc: falcon: convert to use i2c_new_client_device() 2020-03-26 19:31:21 -07:00
sgi net: meth: remove spurious copyright text 2020-04-23 15:59:43 -07:00
silan
sis
smsc docs: networking: device drivers: convert smsc/smc9.txt to ReST 2020-05-01 12:24:42 -07:00
socionext net: socionext: Fix use correct return type for ndo_start_xmit() 2020-05-06 14:19:42 -07:00
stmicro Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-05-06 22:10:13 -07:00
sun net: sun: cassini: Remove unused inline functions 2020-05-05 12:07:43 -07:00
synopsys net: dwc-xlgmac: let core reject the unsupported coalescing parameters 2020-03-17 20:56:57 -07:00
tehuti net: tehuti: remove unused inline function bdx_tx_db_size 2020-05-05 12:07:42 -07:00
ti net: ethernet: ti: am65-cpsw-nuss: use of_platform_device_create() for mdio 2020-05-07 17:51:03 -07:00
toshiba Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-05-06 22:10:13 -07:00
tundra
via via-rhine: Add platform dependencies 2020-05-07 13:16:53 -07:00
wiznet
xilinx net: ll_temac: Fix return value check in temac_probe() 2020-04-30 20:39:22 -07:00
xircom
xscale net: ethernet: ixp4xx: Add error handling in ixp4xx_eth_probe() 2020-04-23 15:32:45 -07:00
dnet.c net: ethernet: dnet: convert to devm_platform_get_and_ioremap_resource 2020-04-20 12:18:13 -07:00
dnet.h
ec_bhf.c
ethoc.c
fealnx.c
jme.c net: jme: reject unsupported coalescing params 2020-03-14 21:13:54 -07:00
jme.h
Kconfig
korina.c
lantiq_etop.c
lantiq_xrx200.c net: lantiq: Fix use correct return type for ndo_start_xmit() 2020-05-06 14:24:06 -07:00
Makefile