]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
IB/core: Rename event_handler_lock to qp_open_list_lock
authorParav Pandit <parav@mellanox.com>
Thu, 12 Dec 2019 11:30:24 +0000 (13:30 +0200)
committerJason Gunthorpe <jgg@mellanox.com>
Wed, 8 Jan 2020 00:20:48 +0000 (20:20 -0400)
This lock is used to protect the qp->open_list linked list. As a side
effect it seems to also globally serialize the qp event_handler, but it
isn't clear if that is a deliberate design.

Link: https://lore.kernel.org/r/20191212113024.336702-5-leon@kernel.org
Signed-off-by: Parav Pandit <parav@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/core/device.c
drivers/infiniband/core/verbs.c
include/rdma/ib_verbs.h

index c38b2b0b078ad1f06df664f70f7b981cd9b90417..e4c3ea727eac6df6f7b24a8af75d0ff5cdf73819 100644 (file)
@@ -587,7 +587,7 @@ struct ib_device *_ib_alloc_device(size_t size)
        rdma_init_coredev(&device->coredev, device, &init_net);
 
        INIT_LIST_HEAD(&device->event_handler_list);
-       spin_lock_init(&device->event_handler_lock);
+       spin_lock_init(&device->qp_open_list_lock);
        init_rwsem(&device->event_handler_rwsem);
        mutex_init(&device->unregistration_lock);
        /*
index 47d54c31eb2a0beabcf195a05c25187590368478..78b27aff2846ccb3b771a4fda7b5ebd94cac1e72 100644 (file)
@@ -1056,11 +1056,11 @@ static void __ib_shared_qp_event_handler(struct ib_event *event, void *context)
        struct ib_qp *qp = context;
        unsigned long flags;
 
-       spin_lock_irqsave(&qp->device->event_handler_lock, flags);
+       spin_lock_irqsave(&qp->device->qp_open_list_lock, flags);
        list_for_each_entry(event->element.qp, &qp->open_list, open_list)
                if (event->element.qp->event_handler)
                        event->element.qp->event_handler(event, event->element.qp->qp_context);
-       spin_unlock_irqrestore(&qp->device->event_handler_lock, flags);
+       spin_unlock_irqrestore(&qp->device->qp_open_list_lock, flags);
 }
 
 static void __ib_insert_xrcd_qp(struct ib_xrcd *xrcd, struct ib_qp *qp)
@@ -1097,9 +1097,9 @@ static struct ib_qp *__ib_open_qp(struct ib_qp *real_qp,
        qp->qp_num = real_qp->qp_num;
        qp->qp_type = real_qp->qp_type;
 
-       spin_lock_irqsave(&real_qp->device->event_handler_lock, flags);
+       spin_lock_irqsave(&real_qp->device->qp_open_list_lock, flags);
        list_add(&qp->open_list, &real_qp->open_list);
-       spin_unlock_irqrestore(&real_qp->device->event_handler_lock, flags);
+       spin_unlock_irqrestore(&real_qp->device->qp_open_list_lock, flags);
 
        return qp;
 }
@@ -1827,9 +1827,9 @@ int ib_close_qp(struct ib_qp *qp)
        if (real_qp == qp)
                return -EINVAL;
 
-       spin_lock_irqsave(&real_qp->device->event_handler_lock, flags);
+       spin_lock_irqsave(&real_qp->device->qp_open_list_lock, flags);
        list_del(&qp->open_list);
-       spin_unlock_irqrestore(&real_qp->device->event_handler_lock, flags);
+       spin_unlock_irqrestore(&real_qp->device->qp_open_list_lock, flags);
 
        atomic_dec(&real_qp->usecnt);
        if (qp->qp_sec)
index 37dac147a946939a0f74361da2ba27618d14eb65..cea4e198701eaab86a65aa9f3347e220b238e8ae 100644 (file)
@@ -2631,7 +2631,7 @@ struct ib_device {
        struct rw_semaphore event_handler_rwsem;
 
        /* Protects QP's event_handler calls and open_qp list */
-       spinlock_t event_handler_lock;
+       spinlock_t qp_open_list_lock;
 
        struct rw_semaphore           client_data_rwsem;
        struct xarray                 client_data;