From: Parav Pandit <parav@xxxxxxxxxxxx> Add ib_ prefix to device_mutex, lists_rwsem and device_list to have unique name and also to represent rdma/ib subsystem, such that it can be shared using core_priv.h with multiple files of ib_core module. Signed-off-by: Parav Pandit <parav@xxxxxxxxxxxx> Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxxxx> --- drivers/infiniband/core/device.c | 118 ++++++++++++++++--------------- 1 file changed, 60 insertions(+), 58 deletions(-) diff --git a/drivers/infiniband/core/device.c b/drivers/infiniband/core/device.c index d0b2c7b1706b..832477b52893 100644 --- a/drivers/infiniband/core/device.c +++ b/drivers/infiniband/core/device.c @@ -65,25 +65,25 @@ struct workqueue_struct *ib_comp_unbound_wq; struct workqueue_struct *ib_wq; EXPORT_SYMBOL_GPL(ib_wq); -/* The device_list and client_list contain devices and clients after their +/* The ib_device_list and client_list contain devices and clients after their * registration has completed, and the devices and clients are removed * during unregistration. */ -static LIST_HEAD(device_list); +static LIST_HEAD(ib_device_list); static LIST_HEAD(client_list); /* - * device_mutex and lists_rwsem protect access to both device_list and - * client_list. device_mutex protects writer access by device and client - * registration / de-registration. lists_rwsem protects reader access to + * ib_device_mutex and ib_lists_rwsem protect access to both ib_device_list and + * client_list. ib_device_mutex protects writer access by device and client + * registration / de-registration. ib_lists_rwsem protects reader access to * these lists. Iterators of these lists must lock it for read, while updates * to the lists must be done with a write lock. A special case is when the - * device_mutex is locked. In this case locking the lists for read access is - * not necessary as the device_mutex implies it. + * ib_device_mutex is locked. In this case locking the lists for read access is + * not necessary as the ib_device_mutex implies it. * - * lists_rwsem also protects access to the client data list. + * ib_lists_rwsem also protects access to the client data list. */ -static DEFINE_MUTEX(device_mutex); -static DECLARE_RWSEM(lists_rwsem); +static DEFINE_MUTEX(ib_device_mutex); +static DECLARE_RWSEM(ib_lists_rwsem); static int ib_security_change(struct notifier_block *nb, unsigned long event, void *lsm_data); @@ -138,7 +138,7 @@ static struct ib_device *__ib_device_get_by_index(u32 index) { struct ib_device *device; - list_for_each_entry(device, &device_list, core_list) + list_for_each_entry(device, &ib_device_list, core_list) if (device->index == index) return device; @@ -153,14 +153,14 @@ struct ib_device *ib_device_get_by_index(u32 index) { struct ib_device *device; - down_read(&lists_rwsem); + down_read(&ib_lists_rwsem); device = __ib_device_get_by_index(index); if (device) { /* Do not return a device if unregistration has started. */ if (!refcount_inc_not_zero(&device->refcount)) device = NULL; } - up_read(&lists_rwsem); + up_read(&ib_lists_rwsem); return device; } @@ -174,7 +174,7 @@ static struct ib_device *__ib_device_get_by_name(const char *name) { struct ib_device *device; - list_for_each_entry(device, &device_list, core_list) + list_for_each_entry(device, &ib_device_list, core_list) if (!strcmp(name, dev_name(&device->dev))) return device; @@ -186,11 +186,13 @@ int ib_device_rename(struct ib_device *ibdev, const char *name) struct ib_device *device; int ret = 0; + /* If old and new name are same, nothing more to be done */ if (!strcmp(name, dev_name(&ibdev->dev))) return ret; - mutex_lock(&device_mutex); - list_for_each_entry(device, &device_list, core_list) { + mutex_lock(&ib_device_mutex); + /* Make sure no other device with same name exists */ + list_for_each_entry(device, &ib_device_list, core_list) { if (!strcmp(name, dev_name(&device->dev))) { ret = -EEXIST; goto out; @@ -202,7 +204,7 @@ int ib_device_rename(struct ib_device *ibdev, const char *name) goto out; strlcpy(ibdev->name, name, IB_DEVICE_NAME_MAX); out: - mutex_unlock(&device_mutex); + mutex_unlock(&ib_device_mutex); return ret; } @@ -216,7 +218,7 @@ static int alloc_name(struct ib_device *ibdev, const char *name) if (!inuse) return -ENOMEM; - list_for_each_entry(device, &device_list, core_list) { + list_for_each_entry(device, &ib_device_list, core_list) { char buf[IB_DEVICE_NAME_MAX]; if (sscanf(dev_name(&device->dev), name, &i) != 1) @@ -359,11 +361,11 @@ static int add_client_context(struct ib_device *device, struct ib_client *client context->data = NULL; context->going_down = false; - down_write(&lists_rwsem); + down_write(&ib_lists_rwsem); write_lock_irq(&device->client_data_lock); list_add(&context->list, &device->client_data_list); write_unlock_irq(&device->client_data_lock); - up_write(&lists_rwsem); + up_write(&ib_lists_rwsem); return 0; } @@ -443,8 +445,8 @@ static void ib_policy_change_task(struct work_struct *work) { struct ib_device *dev; - down_read(&lists_rwsem); - list_for_each_entry(dev, &device_list, core_list) { + down_read(&ib_lists_rwsem); + list_for_each_entry(dev, &ib_device_list, core_list) { int i; for (i = rdma_start_port(dev); i <= rdma_end_port(dev); i++) { @@ -460,7 +462,7 @@ static void ib_policy_change_task(struct work_struct *work) ib_security_cache_change(dev, i, sp); } } - up_read(&lists_rwsem); + up_read(&ib_lists_rwsem); } static int ib_security_change(struct notifier_block *nb, unsigned long event, @@ -604,7 +606,7 @@ int ib_register_device(struct ib_device *device, const char *name, setup_dma_device(device); - mutex_lock(&device_mutex); + mutex_lock(&ib_device_mutex); if (strchr(name, '%')) { ret = alloc_name(device, name); @@ -647,10 +649,10 @@ int ib_register_device(struct ib_device *device, const char *name, if (!add_client_context(device, client) && client->add) client->add(device); - down_write(&lists_rwsem); - list_add_tail(&device->core_list, &device_list); - up_write(&lists_rwsem); - mutex_unlock(&device_mutex); + down_write(&ib_lists_rwsem); + list_add_tail(&device->core_list, &ib_device_list); + up_write(&ib_lists_rwsem); + mutex_unlock(&ib_device_mutex); return 0; cg_cleanup: @@ -658,7 +660,7 @@ int ib_register_device(struct ib_device *device, const char *name, dev_cleanup: cleanup_device(device); out: - mutex_unlock(&device_mutex); + mutex_unlock(&ib_device_mutex); return ret; } EXPORT_SYMBOL(ib_register_device); @@ -681,33 +683,33 @@ void ib_unregister_device(struct ib_device *device) ib_device_put(device); wait_for_completion(&device->unreg_completion); - mutex_lock(&device_mutex); + mutex_lock(&ib_device_mutex); - down_write(&lists_rwsem); + down_write(&ib_lists_rwsem); list_del(&device->core_list); write_lock_irq(&device->client_data_lock); list_for_each_entry(context, &device->client_data_list, list) context->going_down = true; write_unlock_irq(&device->client_data_lock); - downgrade_write(&lists_rwsem); + downgrade_write(&ib_lists_rwsem); list_for_each_entry(context, &device->client_data_list, list) { if (context->client->remove) context->client->remove(device, context->data); } - up_read(&lists_rwsem); + up_read(&ib_lists_rwsem); ib_device_unregister_sysfs(device); ib_device_unregister_rdmacg(device); - mutex_unlock(&device_mutex); + mutex_unlock(&ib_device_mutex); ib_cache_cleanup_one(device); ib_security_destroy_port_pkey_list(device); kfree(device->port_pkey_list); - down_write(&lists_rwsem); + down_write(&ib_lists_rwsem); write_lock_irqsave(&device->client_data_lock, flags); list_for_each_entry_safe(context, tmp, &device->client_data_list, list) { @@ -715,7 +717,7 @@ void ib_unregister_device(struct ib_device *device) kfree(context); } write_unlock_irqrestore(&device->client_data_lock, flags); - up_write(&lists_rwsem); + up_write(&ib_lists_rwsem); device->reg_state = IB_DEV_UNREGISTERED; } @@ -738,17 +740,17 @@ int ib_register_client(struct ib_client *client) { struct ib_device *device; - mutex_lock(&device_mutex); + mutex_lock(&ib_device_mutex); - list_for_each_entry(device, &device_list, core_list) + list_for_each_entry(device, &ib_device_list, core_list) if (!add_client_context(device, client) && client->add) client->add(device); - down_write(&lists_rwsem); + down_write(&ib_lists_rwsem); list_add_tail(&client->list, &client_list); - up_write(&lists_rwsem); + up_write(&ib_lists_rwsem); - mutex_unlock(&device_mutex); + mutex_unlock(&ib_device_mutex); return 0; } @@ -767,16 +769,16 @@ void ib_unregister_client(struct ib_client *client) struct ib_client_data *context; struct ib_device *device; - mutex_lock(&device_mutex); + mutex_lock(&ib_device_mutex); - down_write(&lists_rwsem); + down_write(&ib_lists_rwsem); list_del(&client->list); - up_write(&lists_rwsem); + up_write(&ib_lists_rwsem); - list_for_each_entry(device, &device_list, core_list) { + list_for_each_entry(device, &ib_device_list, core_list) { struct ib_client_data *found_context = NULL; - down_write(&lists_rwsem); + down_write(&ib_lists_rwsem); write_lock_irq(&device->client_data_lock); list_for_each_entry(context, &device->client_data_list, list) if (context->client == client) { @@ -785,7 +787,7 @@ void ib_unregister_client(struct ib_client *client) break; } write_unlock_irq(&device->client_data_lock); - up_write(&lists_rwsem); + up_write(&ib_lists_rwsem); if (client->remove) client->remove(device, found_context ? @@ -798,15 +800,15 @@ void ib_unregister_client(struct ib_client *client) continue; } - down_write(&lists_rwsem); + down_write(&ib_lists_rwsem); write_lock_irq(&device->client_data_lock); list_del(&found_context->list); write_unlock_irq(&device->client_data_lock); - up_write(&lists_rwsem); + up_write(&ib_lists_rwsem); kfree(found_context); } - mutex_unlock(&device_mutex); + mutex_unlock(&ib_device_mutex); } EXPORT_SYMBOL(ib_unregister_client); @@ -1021,10 +1023,10 @@ void ib_enum_all_roce_netdevs(roce_netdev_filter filter, { struct ib_device *dev; - down_read(&lists_rwsem); - list_for_each_entry(dev, &device_list, core_list) + down_read(&ib_lists_rwsem); + list_for_each_entry(dev, &ib_device_list, core_list) ib_enum_roce_netdev(dev, filter, filter_cookie, cb, cookie); - up_read(&lists_rwsem); + up_read(&ib_lists_rwsem); } /** @@ -1040,15 +1042,15 @@ int ib_enum_all_devs(nldev_callback nldev_cb, struct sk_buff *skb, unsigned int idx = 0; int ret = 0; - down_read(&lists_rwsem); - list_for_each_entry(dev, &device_list, core_list) { + down_read(&ib_lists_rwsem); + list_for_each_entry(dev, &ib_device_list, core_list) { ret = nldev_cb(dev, skb, cb, idx); if (ret) break; idx++; } - up_read(&lists_rwsem); + up_read(&ib_lists_rwsem); return ret; } @@ -1219,7 +1221,7 @@ struct net_device *ib_get_net_dev_by_params(struct ib_device *dev, if (!rdma_protocol_ib(dev, port)) return NULL; - down_read(&lists_rwsem); + down_read(&ib_lists_rwsem); list_for_each_entry(context, &dev->client_data_list, list) { struct ib_client *client = context->client; @@ -1236,7 +1238,7 @@ struct net_device *ib_get_net_dev_by_params(struct ib_device *dev, } } - up_read(&lists_rwsem); + up_read(&ib_lists_rwsem); return net_dev; } -- 2.19.1