Merge branches 'for-4.4/upstream-fixes', 'for-4.5/async-suspend', 'for-4.5/container...
[cascardo/linux.git] / drivers / infiniband / hw / ocrdma / ocrdma_main.c
index 87aa55d..62b7009 100644 (file)
@@ -63,8 +63,6 @@ MODULE_DESCRIPTION(OCRDMA_ROCE_DRV_DESC " " OCRDMA_ROCE_DRV_VERSION);
 MODULE_AUTHOR("Emulex Corporation");
 MODULE_LICENSE("Dual BSD/GPL");
 
-static LIST_HEAD(ocrdma_dev_list);
-static DEFINE_SPINLOCK(ocrdma_devlist_lock);
 static DEFINE_IDR(ocrdma_dev_id);
 
 void ocrdma_get_guid(struct ocrdma_dev *dev, u8 *guid)
@@ -182,8 +180,7 @@ static int ocrdma_register_device(struct ocrdma_dev *dev)
        dev->ibdev.reg_user_mr = ocrdma_reg_user_mr;
 
        dev->ibdev.alloc_mr = ocrdma_alloc_mr;
-       dev->ibdev.alloc_fast_reg_page_list = ocrdma_alloc_frmr_page_list;
-       dev->ibdev.free_fast_reg_page_list = ocrdma_free_frmr_page_list;
+       dev->ibdev.map_mr_sg = ocrdma_map_mr_sg;
 
        /* mandatory to support user space verbs consumer. */
        dev->ibdev.alloc_ucontext = ocrdma_alloc_ucontext;
@@ -325,9 +322,6 @@ static struct ocrdma_dev *ocrdma_add(struct be_dev_info *dev_info)
        for (i = 0; i < ARRAY_SIZE(ocrdma_attributes); i++)
                if (device_create_file(&dev->ibdev.dev, ocrdma_attributes[i]))
                        goto sysfs_err;
-       spin_lock(&ocrdma_devlist_lock);
-       list_add_tail_rcu(&dev->entry, &ocrdma_dev_list);
-       spin_unlock(&ocrdma_devlist_lock);
        /* Init stats */
        ocrdma_add_port_stats(dev);
        /* Interrupt Moderation */
@@ -356,9 +350,8 @@ idr_err:
        return NULL;
 }
 
-static void ocrdma_remove_free(struct rcu_head *rcu)
+static void ocrdma_remove_free(struct ocrdma_dev *dev)
 {
-       struct ocrdma_dev *dev = container_of(rcu, struct ocrdma_dev, rcu);
 
        idr_remove(&ocrdma_dev_id, dev->id);
        kfree(dev->mbx_cmd);
@@ -375,15 +368,9 @@ static void ocrdma_remove(struct ocrdma_dev *dev)
        ib_unregister_device(&dev->ibdev);
 
        ocrdma_rem_port_stats(dev);
-
-       spin_lock(&ocrdma_devlist_lock);
-       list_del_rcu(&dev->entry);
-       spin_unlock(&ocrdma_devlist_lock);
-
        ocrdma_free_resources(dev);
        ocrdma_cleanup_hw(dev);
-
-       call_rcu(&dev->rcu, ocrdma_remove_free);
+       ocrdma_remove_free(dev);
 }
 
 static int ocrdma_open(struct ocrdma_dev *dev)