summaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/emulex
diff options
context:
space:
mode:
authorDevesh Sharma <devesh.sharma@avagotech.com>2015-12-24 13:14:07 -0500
committerDoug Ledford <dledford@redhat.com>2015-12-28 11:45:54 -0500
commit10a214dc996236e6547b84fb5ca007316b30c2e6 (patch)
tree6d89810f250efa365ae89d392ec0cd48ddf2cb3e /drivers/net/ethernet/emulex
parent36ac0db0dbf7081afe4137d444ef85614213b8eb (diff)
downloadlinux-stable-10a214dc996236e6547b84fb5ca007316b30c2e6.tar.gz
linux-stable-10a214dc996236e6547b84fb5ca007316b30c2e6.tar.bz2
linux-stable-10a214dc996236e6547b84fb5ca007316b30c2e6.zip
RDMA/ocrdma: Depend on async link events from CNA
Recently Dough Ledford reported a deadlock happening between ocrdma-load sequence and NetworkManager service issuing "open" on be2net interface. 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. With this patch we stop using administrative open and close events injected by be2net driver. These events were used to dispatch PORT_ACTIVE and PORT_ERROR events to the IB-stack. This patch implements a logic to receive async-link-events generated from CNA whenever link-state-change is detected. Now on, these async-events will be used to dispatch PORT_ACTIVE and PORT_ERROR events to IB-stack. Depending on async-events from CNA removes the need to hold device-list-mutex and thus breaks the busy-wait scenario. Reported-by: Doug Ledford <dledford@redhat.com> CC: Sathya Perla <sathya.perla@avagotech.com> Signed-off-by: Padmanabh Ratnakar <padmanabh.ratnakar@avagotech.com> Signed-off-by: Selvin Xavier <selvin.xavier@avagotech.com> Signed-off-by: Devesh Sharma <devesh.sharma@avagotech.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'drivers/net/ethernet/emulex')
0 files changed, 0 insertions, 0 deletions