This patch series fixes for critical bugs introduced due to recent
changes in linux Infiniband stack.
Patch 0001 fixes a vlan-id assignment issues in presence of PFC.
This bug was introduced recently got introduced and it fixes
dbf727de7440 ('IB/core: Use GID table in AH creation and dmac resolution')
Patches 0002 to 0004 fixes a deadlock condition reported by Dough Ledford
while testing linux-4.4-rc5. The deadlock happens when any be2net hook
(e.g. open/close) is called in parallel to insmod ocrdma.ko.
A. be2net is sending administrative open/close event to ocrdma holding
device_list_mutex. It does this from ndo_open/ndo_stop hooks of be2net.
So sequence of locks is rtnl_lock---> device_list lock
B. When new ocrdma roce device gets registered, infiniband stack now
takes rtnl_lock in ib_register_device() in GID initialization routines.
So sequence of locks in this path is device_list lock ---> rtnl_lock.
This improper locking sequence causes deadlock.
Patch 0002 removes an unwanted code to force all active-QPs to error state
using a management command. It is rather simple to let active-QPs to move
to error on their own due to a completion error after the port error is
reported.
Patch 0003 makes IB-dispatch-event mechanism independent of administrative
open/close events injected from be2net driver. Instead of those events, now
ocrdma relies on async-events generated from CNA. Thus, solving the problem
of keeping device_list_mutex busy under rtnl-lock. Moving from administrative
events to CNA async-events does not change the functionality of ocrdma driver
in any way.
Patch 0004 Removes the dead code from be2net driver.
Devesh Sharma (4):
RDMA/ocrdma: Fix vlan-id assignment in qp parameters
RDMA/ocrdma: Dispatch only port event when port state changes
RDMA/ocrdma: Depend on async link events from CNA
RDMA/be2net: Remove open and close entry points
drivers/infiniband/hw/ocrdma/ocrdma.h | 10 +++++
drivers/infiniband/hw/ocrdma/ocrdma_hw.c | 49 ++++++++++++++++++++-----
drivers/infiniband/hw/ocrdma/ocrdma_hw.h | 4 +-
drivers/infiniband/hw/ocrdma/ocrdma_main.c | 57 +++++++++++++----------------
drivers/infiniband/hw/ocrdma/ocrdma_sli.h | 49 +++++++++++++++++++++++--
drivers/infiniband/hw/ocrdma/ocrdma_verbs.c | 2 +-
drivers/net/ethernet/emulex/benet/be.h | 2 -
drivers/net/ethernet/emulex/benet/be_main.c | 4 --
drivers/net/ethernet/emulex/benet/be_roce.c | 36 ------------------
drivers/net/ethernet/emulex/benet/be_roce.h | 4 +-
10 files changed, 124 insertions(+), 93 deletions(-)
--
1.8.3.1
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html