mirror_ubuntu-kernels/drivers/net/ethernet/intel/i40e
Robert Konklewski beff3e9d80 i40e: Fixed race conditions in VF reset
First, this patch eliminates IOMMU DMAR Faults caused by VF hardware.
This is done by enabling VF hardware only after VSI resources are
freed. Otherwise, hardware could DMA into memory that is (or just has
been) being freed.

Then, the VF driver is activated only after VSI resources have been
reallocated. That's because the VF driver can request resources
immediately after it's activated. So they need to be ready at that
point.

The second race condition happens when the OS initiates a VF reset,
and then before it's finished modifies VF's settings by changing its
MAC, VLAN ID, bandwidth allocation, anti-spoof checking, etc. These
functions needed to be blocked while VF is undergoing reset. Otherwise,
they could operate on data structures that had just been freed or not
yet fully initialized.

Change-ID: I43ba5a7ae2c9a1cce3911611ffc4598ae33ae3ff
Signed-off-by: Robert Konklewski <robertx.konklewski@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2017-03-27 16:45:14 -07:00
..
i40e_adminq_cmd.h i40e: fix up recent proxy and wol bits for X722_SUPPORT 2017-03-14 17:52:32 -07:00
i40e_adminq.c i40e: Implementation of ERROR state for NVM update state machine 2016-10-31 14:26:40 -07:00
i40e_adminq.h i40e: Move NVM variable out of AQ struct 2016-04-06 18:45:11 -07:00
i40e_alloc.h
i40e_client.c i40e: KISS the client interface 2017-03-15 01:57:08 -07:00
i40e_client.h i40e: KISS the client interface 2017-03-15 01:57:08 -07:00
i40e_common.c i40e: refactor AQ CMD buffer debug printing 2017-02-18 20:35:36 -08:00
i40e_dcb_nl.c i40e: Change some messages from info to debug only 2015-10-15 01:58:41 -07:00
i40e_dcb.c i40e: refactor DCB function 2016-02-16 19:04:08 -08:00
i40e_dcb.h i40e: Add parsing for CEE DCBX TLVs 2015-10-08 15:11:38 -07:00
i40e_debugfs.c i40e: convert to cpu from le16 to generate switch_id correctly 2017-02-18 20:35:36 -08:00
i40e_devids.h i40e: Add support for 25G devices 2016-12-06 20:59:43 -08:00
i40e_diag.c i40e: use BIT and BIT_ULL macros 2015-07-23 05:33:55 -07:00
i40e_diag.h
i40e_ethtool.c i40e: add support for SCTPv4 FDir filters 2017-03-23 21:13:33 -07:00
i40e_fcoe.c i40e: store MAC/VLAN filters in a hash with the MAC Address as key 2016-10-31 14:26:40 -07:00
i40e_fcoe.h i40e: use BIT and BIT_ULL macros 2015-07-23 05:33:55 -07:00
i40e_hmc.c i40e: fix an uninitialized variable bug 2016-05-14 00:21:51 -07:00
i40e_hmc.h i40e: use BIT and BIT_ULL macros 2015-07-23 05:33:55 -07:00
i40e_lan_hmc.c i40e: use explicit cast from u16 to u8 2015-12-12 21:08:26 -08:00
i40e_lan_hmc.h
i40e_main.c i40e: fix configuration of RSS table with DCB 2017-03-27 16:45:14 -07:00
i40e_nvm.c i40e: Acquire NVM lock before reads on all devices 2017-03-14 17:52:32 -07:00
i40e_osdep.h i40e: Add bus number info to i40e_bus_info struct 2017-02-11 20:39:01 -08:00
i40e_prototype.h i40e: Add functions which apply correct PHY access method for read and write operation 2016-12-06 21:09:39 -08:00
i40e_ptp.c i40e: don't warn every time we clear an Rx timestamp register 2017-02-11 20:39:01 -08:00
i40e_register.h i40e: Expose some registers to program parser, FD and RSS logic 2016-02-18 23:49:31 -08:00
i40e_status.h
i40e_txrx.c i40e/i40evf: Fix use after free in Rx cleanup path 2017-03-27 16:45:14 -07:00
i40e_txrx.h i40e/i40evf: Update code to better handle incrementing page count 2017-03-27 16:45:13 -07:00
i40e_type.h i40e: Save link FEC info from link up event 2017-02-11 20:39:01 -08:00
i40e_virtchnl_pf.c i40e: Fixed race conditions in VF reset 2017-03-27 16:45:14 -07:00
i40e_virtchnl_pf.h net: Update API for VF vlan protocol 802.1ad support 2016-09-24 08:01:26 -04:00
i40e_virtchnl.h i40e: group base mode VF offload flags 2016-10-28 23:28:39 -07:00
i40e.h i40e: add support for SCTPv4 FDir filters 2017-03-23 21:13:33 -07:00
Makefile i40e: Add support for client interface for IWARP driver 2016-02-29 17:10:52 -05:00