kernel_samsung_a53x/drivers/net/ethernet
Mohamed Khalfella 4d839c06f8 net/mlx5: Added cond_resched() to crdump collection
[ Upstream commit ec793155894140df7421d25903de2e6bc12c695b ]

Collecting crdump involves reading vsc registers from pci config space
of mlx device, which can take long time to complete. This might result
in starving other threads waiting to run on the cpu.

Numbers I got from testing ConnectX-5 Ex MCX516A-CDAT in the lab:

- mlx5_vsc_gw_read_block_fast() was called with length = 1310716.
- mlx5_vsc_gw_read_fast() reads 4 bytes at a time. It was not used to
  read the entire 1310716 bytes. It was called 53813 times because
  there are jumps in read_addr.
- On average mlx5_vsc_gw_read_fast() took 35284.4ns.
- In total mlx5_vsc_wait_on_flag() called vsc_read() 54707 times.
  The average time for each call was 17548.3ns. In some instances
  vsc_read() was called more than one time when the flag was not set.
  As expected the thread released the cpu after 16 iterations in
  mlx5_vsc_wait_on_flag().
- Total time to read crdump was 35284.4ns * 53813 ~= 1.898s.

It was seen in the field that crdump can take more than 5 seconds to
complete. During that time mlx5_vsc_wait_on_flag() did not release the
cpu because it did not complete 16 iterations. It is believed that pci
config reads were slow. Adding cond_resched() every 128 register read
improves the situation. In the common case the, crdump takes ~1.8989s,
the thread yields the cpu every ~4.51ms. If crdump takes ~5s, the thread
yields the cpu every ~18.0ms.

Fixes: 8b9d8baae1de ("net/mlx5: Add Crdump support")
Reviewed-by: Yuanyuan Zhong <yzhong@purestorage.com>
Signed-off-by: Mohamed Khalfella <mkhalfella@purestorage.com>
Reviewed-by: Moshe Shemesh <moshe@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-11-23 23:21:35 +01:00
..
3com Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
8390 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
adaptec Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
aeroflex Backport mac80211 patches from linux-6.1.y 2024-06-15 16:29:20 -03:00
agere Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
alacritech Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
allwinner Backport mac80211 patches from linux-6.1.y 2024-06-15 16:29:20 -03:00
alteon Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
altera Backport mac80211 patches from linux-6.1.y 2024-06-15 16:29:20 -03:00
amazon net: ena: Fix incorrect descriptor free behavior 2024-11-19 11:32:20 +01:00
amd amd-xgbe: propagate the correct speed and duplex status 2024-11-18 12:10:55 +01:00
apm Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
apple Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
aquantia net: atlantic: fix double free in ring reinit logic 2024-11-18 12:11:49 +01:00
arc Backport mac80211 patches from linux-6.1.y 2024-06-15 16:29:20 -03:00
atheros ethernet: atheros: fix a memleak in atl1e_setup_ring_resources 2024-11-18 12:11:59 +01:00
aurora Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
broadcom bnx2x: Fix multiple UBSAN array-index-out-of-bounds 2024-11-19 14:19:42 +01:00
brocade bna: adjust 'name' buf size of bna_tcb and bna_ccb structures 2024-11-23 23:20:08 +01:00
cadence Backport mac80211 patches from linux-6.1.y 2024-06-15 16:29:20 -03:00
calxeda Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cavium liquidio: Adjust a NULL pointer handling path in lio_vf_rep_copy_packet 2024-11-19 14:19:03 +01:00
chelsio cxgb4: add forgotten u64 ivlan cast before shift 2024-11-23 23:20:49 +01:00
cirrus Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cisco enic: Validate length of nl attributes in enic_set_vf_port 2024-11-19 12:27:10 +01:00
cortina net: ethernet: cortina: Locking fixes 2024-11-19 12:26:56 +01:00
davicom Backport mac80211 patches from linux-6.1.y 2024-06-15 16:29:20 -03:00
dec Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dlink Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
emulex net: vlan: introduce skb_vlan_eth_hdr() 2024-11-18 12:11:48 +01:00
ezchip Backport mac80211 patches from linux-6.1.y 2024-06-15 16:29:20 -03:00
faraday net: ftgmac100: Ensure tx descriptor updates are visible 2024-11-23 23:21:14 +01:00
freescale net: enetc: Use IRQF_NO_AUTOEN flag in request_irq() 2024-11-23 23:21:19 +01:00
fujitsu Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
google gve: Use size_add() in call to struct_size() 2024-11-18 11:42:47 +01:00
hisilicon net: hns3: add checking for vf id of mailbox 2024-11-23 23:20:46 +01:00
huawei Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
i825xx net/sun3_82586: Avoid reading past buffer in debug output 2024-11-23 23:20:45 +01:00
ibm Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
intel ice: fix accounting for filters shared by multiple VSIs 2024-11-23 23:21:12 +01:00
marvell octeontx2-af: fix detection of IP layer 2024-11-19 14:19:44 +01:00
mediatek net: ethernet: mtk_eth_soc: remove duplicate if statements 2024-11-18 12:12:45 +01:00
mellanox net/mlx5: Added cond_resched() to crdump collection 2024-11-23 23:21:35 +01:00
micrel net: ks8851: Fix potential TX stall after interface reopen 2024-11-19 14:19:44 +01:00
microchip lan743x: fix for potential NULL pointer dereference with bare card 2024-11-18 22:25:36 +01:00
moxa Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mscc Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
myricom Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
natsemi Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
neterion vxge: remove unnecessary cast in kfree() 2024-11-19 09:22:37 +01:00
netronome nfp: flower: handle acti_netdevs allocation failure 2024-11-19 08:44:50 +01:00
ni Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
nvidia Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
nxp Backport mac80211 patches from linux-6.1.y 2024-06-15 16:29:20 -03:00
oki-semi Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
packetengines Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pasemi Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pensando ionic: fix potential irq name truncation 2024-11-23 23:20:58 +01:00
qlogic qed: Improve the stack space of filter_config() 2024-11-23 23:20:08 +01:00
qualcomm qca_spi: Make interrupt remembering atomic 2024-11-19 14:19:08 +01:00
rdc Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
realtek r8169: disable ALDPS per default for RTL8125 2024-11-23 23:21:19 +01:00
renesas net: ravb: Always process TX descriptor ring 2024-11-19 09:22:50 +01:00
rocker Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
samsung Backport mac80211 patches from linux-6.1.y 2024-06-15 16:29:20 -03:00
seeq net: seeq: Fix use after free vulnerability in ether3 Driver Due to Race Condition 2024-11-23 23:21:28 +01:00
sfc sfc: fix a double-free bug in efx_probe_filters 2024-11-18 12:12:06 +01:00
sgi Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
silan Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sis Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
smsc net: smc91x: Fix m68k kernel compilation for ColdFire CPU 2024-11-19 12:26:51 +01:00
socionext Backport mac80211 patches from linux-6.1.y 2024-06-15 16:29:20 -03:00
stmicro net: stmmac: Correct byte order of perfect_match 2024-11-23 23:20:17 +01:00
sun eth: sungem: remove .ndo_poll_controller to avoid deadlocks 2024-11-19 12:26:56 +01:00
synopsys Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
tehuti Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ti net: ethernet: ti: am65-cpts: Fix PTPv1 message type on TX packets 2024-11-19 11:32:38 +01:00
toshiba net: spider_net: Use size_add() in call to struct_size() 2024-11-18 11:42:47 +01:00
tundra Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
via Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
wiznet Backport mac80211 patches from linux-6.1.y 2024-06-15 16:29:20 -03:00
xilinx net: xilinx: axienet: Fix dangling multicast addresses 2024-11-23 23:20:49 +01:00
xircom Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
xscale Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dnet.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dnet.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ec_bhf.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ethoc.c Backport mac80211 patches from linux-6.1.y 2024-06-15 16:29:20 -03:00
fealnx.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
jme.c net: ethernet: use ip_hdrlen() instead of bit shift 2024-11-23 23:21:10 +01:00
jme.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Kconfig Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
korina.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
lantiq_etop.c net: ethernet: lantiq_etop: fix double free in detach 2024-11-19 14:19:43 +01:00
lantiq_xrx200.c Backport mac80211 patches from linux-6.1.y 2024-06-15 16:29:20 -03:00
Makefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00