diff options
author | Steve Wise <swise@opengridcomputing.com> | 2010-02-22 22:07:22 +0000 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2010-02-24 10:40:30 -0800 |
commit | 68baf495d8e559a82787f595fecc30a43bb89bb7 (patch) | |
tree | 5269f66a202062c078bd4b2590958063b75ea584 /drivers/infiniband | |
parent | 5279d3ac2d9ca578d04c6f0c760485b0621eb393 (diff) |
RDMA/cxgb3: Mark RDMA device with CXIO_ERROR_FATAL when removing
If cxgb3 calls the iw_cxgb3 t3cclient remove function due to a device
removal event, then the iwch device must be marked with CXIO_ERROR_FATAL
since the device below us is going away. Otherwise, we can get stuck in
a deadlock as RDMA ULPs try and deallocate objects (like MRs, QPs, etc).
So always mark the device with CXIO_ERROR_FATAL when removing.
Signed-off-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r-- | drivers/infiniband/hw/cxgb3/iwch.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/cxgb3/iwch.c b/drivers/infiniband/hw/cxgb3/iwch.c index d992543890e..ee1d8b4d454 100644 --- a/drivers/infiniband/hw/cxgb3/iwch.c +++ b/drivers/infiniband/hw/cxgb3/iwch.c @@ -188,6 +188,7 @@ static void close_rnic_dev(struct t3cdev *tdev) mutex_lock(&dev_mutex); list_for_each_entry_safe(dev, tmp, &dev_list, entry) { if (dev->rdev.t3cdev_p == tdev) { + dev->rdev.flags = CXIO_ERROR_FATAL; cancel_delayed_work_sync(&dev->db_drop_task); list_del(&dev->entry); iwch_unregister_device(dev); |