• Devesh Sharma's avatar
    RDMA/be2net: Remove open and close entry points · f41647ef
    Devesh Sharma authored
    Recently Dough Ledford reported a deadlock happening
    between ocrdma-load sequence and NetworkManager service
    issueing "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.
    
    In order to resolve the above deadlock condition, ocrdma intorduced a
    patch to stop listening to administrative open/close events generated from
    be2net driver. It now depends on link-state-change async-event generated from
    CNA. This change leaves behind dead code which used to generate administrative
    open/close events. This patch cleans-up all that dead code from be2net.
    Reported-by: default avatarDoug Ledford <dledford@redhat.com>
    CC: Sathya Perla <sathya.perla@avagotech.com>
    Signed-off-by: default avatarPadmanabh Ratnakar <padmanabh.ratnakar@avagotech.com>
    Signed-off-by: default avatarSelvin Xavier <selvin.xavier@avagotech.com>
    Signed-off-by: default avatarDevesh Sharma <devesh.sharma@avagotech.com>
    Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
    f41647ef
be_main.c 157 KB