linux_dsm_epyc7002/drivers/net/ethernet/mellanox/mlx4
Amir Vadai 97989356af net/mlx4_core: mlx4_init_slave() shouldn't access comm channel before PF is ready
Currently, the PF call to pci_enable_sriov from the PF probe function
stalls for 10 seconds times the number of VFs probed on the host. This
happens because the way for such VFs to determine of the PF
initialization finished, is by attempting to issue reset on the
comm-channel and get timeout (after 10s).

The PF probe function is called from a kenernel workqueue, and therefore
during that time, rcu lock is being held and kernel's workqueue is
stalled. This blocks other processes that try to use the workqueue
or rcu lock.  For example, interface renaming which is calling
rcu_synchronize is blocked, and timedout by systemd.

Changed mlx4_init_slave() to allow VF probed on the host to immediatly
detect that the PF is not ready, and return EPROBE_DEFER instantly.

Only when the PF finishes the initialization, allow such VFs to
access the comm channel.

This issue and fix are relevant only for probed VFs on the hypervisor,
there is no way to pass this information to a VM until comm channel is
ready, so in a VM, if PF is not ready, the first command will be timedout
after 10 seconds and return EPROBE_DEFER.

Signed-off-by: Amir Vadai <amirv@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-03-06 17:09:04 -05:00
..
alloc.c mlx4_core: Roll back round robin bitmap allocation commit for CQs, SRQs, and MPTs 2013-12-09 21:12:13 -05:00
catas.c mlx4: Add support for EEH error recovery 2012-07-25 15:24:13 -07:00
cmd.c mlx4_core: Add support for steerable IB UD QPs 2014-01-14 14:06:50 -08:00
cq.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
en_clock.c mlx4_en: Only cycle port if HW timestamp config changes 2014-01-02 03:30:36 -05:00
en_cq.c net/mlx4_en: Add NAPI support for transmit side 2013-12-19 19:04:44 -05:00
en_dcb_nl.c net/mlx4_en: Disable global flow control when PFC enabled 2013-08-21 12:19:26 -07:00
en_ethtool.c mlx4_en: Add PTP hardware clock 2014-01-02 03:30:36 -05:00
en_main.c mlx4_en: Add PTP hardware clock 2014-01-02 03:30:36 -05:00
en_netdev.c net/mlx4_en: fix error return code in mlx4_en_get_qp() 2014-01-07 15:42:52 -05:00
en_port.c net/mlx4_en: Datapath resources allocated dynamically 2013-11-07 19:22:48 -05:00
en_port.h net/mlx4_core: set port QoS attributes 2012-04-05 05:08:03 -04:00
en_resources.c net/mlx4_en: Add netdev support for TCP/IP offloads of vxlan tunneling 2013-12-31 14:31:43 -05:00
en_rx.c net/mlx4_en: call gro handler for encapsulated frames 2014-01-13 11:41:47 -08:00
en_selftest.c net/mlx4_en: Remove selftest TX queues empty condition 2013-12-01 20:36:07 -05:00
en_tx.c netdevice: add queue selection fallback handler for ndo_select_queue 2014-02-17 00:36:34 -05:00
eq.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
fw.c net/mlx4_core: Fix memory access error in mlx4_QUERY_DEV_CAP_wrapper() 2014-03-06 17:09:04 -05:00
fw.h net/mlx4_core: Expose physical port id as PF/VF capability 2013-12-19 19:04:43 -05:00
icm.c net/mlx4_core: ICM pages are allocated on device NUMA node 2013-11-07 19:22:48 -05:00
icm.h mlx4_core: Fix integer overflows so 8TBs of memory registration works 2012-09-13 17:52:02 -07:00
intf.c mlx4: Use port management change event instead of smp_snoop 2012-07-10 09:47:10 -07:00
Kconfig mlx4_en: Select PTP_1588_CLOCK 2014-01-07 16:23:45 -05:00
main.c net/mlx4_core: mlx4_init_slave() shouldn't access comm channel before PF is ready 2014-03-06 17:09:04 -05:00
Makefile net/mlx4_en: Add HW timestamping (TS) support 2013-04-24 16:30:14 -04:00
mcg.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2014-01-25 11:17:34 -08:00
mlx4_en.h net,IB/mlx: Bump all Mellanox driver versions 2014-02-25 17:34:44 -05:00
mlx4.h net,IB/mlx: Bump all Mellanox driver versions 2014-02-25 17:34:44 -05:00
mr.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
pd.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
port.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2014-01-25 11:17:34 -08:00
profile.c mlx4_core: Fix integer overflow issues around MTT table 2012-08-15 21:05:26 -07:00
qp.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
reset.c mlx4: Use PCI Express Capability accessors 2012-08-23 10:11:13 -06:00
resource_tracker.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2014-01-25 11:17:34 -08:00
sense.c Merge branch 'for-3.7' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq 2012-10-02 09:54:49 -07:00
srq.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00