IB/core: Remove the locking for character device bitmaps
Remove the locks that protect character device bitmaps of uverbs, umad and issm. The character device bitmaps are accessed in "client->add" and "client->remove" calls from ib_register_device and ib_unregister_device respectively. These calls are already protected by the "device_mutex" mutex. Thus, the spinlocks are not needed. Signed-off-by: Huy Nguyen <huyn@mellanox.com> Signed-off-by: Leon Romanovsky <leon@kernel.org> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
This commit is contained in:
parent
6f301e06de
commit
008b656f42
@ -129,7 +129,6 @@ static struct class *umad_class;
|
||||
|
||||
static const dev_t base_dev = MKDEV(IB_UMAD_MAJOR, IB_UMAD_MINOR_BASE);
|
||||
|
||||
static DEFINE_SPINLOCK(port_lock);
|
||||
static DECLARE_BITMAP(dev_map, IB_UMAD_MAX_PORTS);
|
||||
|
||||
static void ib_umad_add_one(struct ib_device *device);
|
||||
@ -1172,15 +1171,12 @@ static int ib_umad_init_port(struct ib_device *device, int port_num,
|
||||
int devnum;
|
||||
dev_t base;
|
||||
|
||||
spin_lock(&port_lock);
|
||||
devnum = find_first_zero_bit(dev_map, IB_UMAD_MAX_PORTS);
|
||||
if (devnum >= IB_UMAD_MAX_PORTS) {
|
||||
spin_unlock(&port_lock);
|
||||
devnum = find_overflow_devnum(device);
|
||||
if (devnum < 0)
|
||||
return -1;
|
||||
|
||||
spin_lock(&port_lock);
|
||||
port->dev_num = devnum + IB_UMAD_MAX_PORTS;
|
||||
base = devnum + overflow_maj;
|
||||
set_bit(devnum, overflow_map);
|
||||
@ -1189,7 +1185,6 @@ static int ib_umad_init_port(struct ib_device *device, int port_num,
|
||||
base = devnum + base_dev;
|
||||
set_bit(devnum, dev_map);
|
||||
}
|
||||
spin_unlock(&port_lock);
|
||||
|
||||
port->ib_dev = device;
|
||||
port->port_num = port_num;
|
||||
|
@ -69,7 +69,6 @@ enum {
|
||||
|
||||
static struct class *uverbs_class;
|
||||
|
||||
static DEFINE_SPINLOCK(map_lock);
|
||||
static DECLARE_BITMAP(dev_map, IB_UVERBS_MAX_DEVICES);
|
||||
|
||||
static ssize_t (*uverbs_cmd_table[])(struct ib_uverbs_file *file,
|
||||
@ -1062,15 +1061,12 @@ static void ib_uverbs_add_one(struct ib_device *device)
|
||||
INIT_LIST_HEAD(&uverbs_dev->uverbs_file_list);
|
||||
INIT_LIST_HEAD(&uverbs_dev->uverbs_events_file_list);
|
||||
|
||||
spin_lock(&map_lock);
|
||||
devnum = find_first_zero_bit(dev_map, IB_UVERBS_MAX_DEVICES);
|
||||
if (devnum >= IB_UVERBS_MAX_DEVICES) {
|
||||
spin_unlock(&map_lock);
|
||||
devnum = find_overflow_devnum();
|
||||
if (devnum < 0)
|
||||
goto err;
|
||||
|
||||
spin_lock(&map_lock);
|
||||
uverbs_dev->devnum = devnum + IB_UVERBS_MAX_DEVICES;
|
||||
base = devnum + overflow_maj;
|
||||
set_bit(devnum, overflow_map);
|
||||
@ -1079,7 +1075,6 @@ static void ib_uverbs_add_one(struct ib_device *device)
|
||||
base = devnum + IB_UVERBS_BASE_DEV;
|
||||
set_bit(devnum, dev_map);
|
||||
}
|
||||
spin_unlock(&map_lock);
|
||||
|
||||
rcu_assign_pointer(uverbs_dev->ib_dev, device);
|
||||
uverbs_dev->num_comp_vectors = device->num_comp_vectors;
|
||||
|
Loading…
Reference in New Issue
Block a user