IB: convert from semaphores to mutexes
semaphore to mutex conversion by Ingo and Arjan's script. Signed-off-by: Ingo Molnar <mingo@elte.hu> [ Sanity-checked on real IB hardware ] Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:

committed by
Roland Dreier

parent
9eacee2ac6
commit
95ed644fd1
@@ -45,11 +45,11 @@
|
||||
#include <linux/config.h>
|
||||
#include <linux/kref.h>
|
||||
#include <linux/if_infiniband.h>
|
||||
#include <linux/mutex.h>
|
||||
|
||||
#include <net/neighbour.h>
|
||||
|
||||
#include <asm/atomic.h>
|
||||
#include <asm/semaphore.h>
|
||||
|
||||
#include <rdma/ib_verbs.h>
|
||||
#include <rdma/ib_pack.h>
|
||||
@@ -123,8 +123,8 @@ struct ipoib_dev_priv {
|
||||
|
||||
unsigned long flags;
|
||||
|
||||
struct semaphore mcast_mutex;
|
||||
struct semaphore vlan_mutex;
|
||||
struct mutex mcast_mutex;
|
||||
struct mutex vlan_mutex;
|
||||
|
||||
struct rb_root path_tree;
|
||||
struct list_head path_list;
|
||||
|
@@ -52,7 +52,7 @@ MODULE_PARM_DESC(data_debug_level,
|
||||
|
||||
#define IPOIB_OP_RECV (1ul << 31)
|
||||
|
||||
static DECLARE_MUTEX(pkey_sem);
|
||||
static DEFINE_MUTEX(pkey_mutex);
|
||||
|
||||
struct ipoib_ah *ipoib_create_ah(struct net_device *dev,
|
||||
struct ib_pd *pd, struct ib_ah_attr *attr)
|
||||
@@ -445,10 +445,10 @@ int ipoib_ib_dev_down(struct net_device *dev)
|
||||
|
||||
/* Shutdown the P_Key thread if still active */
|
||||
if (!test_bit(IPOIB_PKEY_ASSIGNED, &priv->flags)) {
|
||||
down(&pkey_sem);
|
||||
mutex_lock(&pkey_mutex);
|
||||
set_bit(IPOIB_PKEY_STOP, &priv->flags);
|
||||
cancel_delayed_work(&priv->pkey_task);
|
||||
up(&pkey_sem);
|
||||
mutex_unlock(&pkey_mutex);
|
||||
flush_workqueue(ipoib_workqueue);
|
||||
}
|
||||
|
||||
@@ -599,13 +599,13 @@ void ipoib_ib_dev_flush(void *_dev)
|
||||
if (test_bit(IPOIB_FLAG_ADMIN_UP, &priv->flags))
|
||||
ipoib_ib_dev_up(dev);
|
||||
|
||||
down(&priv->vlan_mutex);
|
||||
mutex_lock(&priv->vlan_mutex);
|
||||
|
||||
/* Flush any child interfaces too */
|
||||
list_for_each_entry(cpriv, &priv->child_intfs, list)
|
||||
ipoib_ib_dev_flush(&cpriv->dev);
|
||||
|
||||
up(&priv->vlan_mutex);
|
||||
mutex_unlock(&priv->vlan_mutex);
|
||||
}
|
||||
|
||||
void ipoib_ib_dev_cleanup(struct net_device *dev)
|
||||
@@ -651,12 +651,12 @@ void ipoib_pkey_poll(void *dev_ptr)
|
||||
if (test_bit(IPOIB_PKEY_ASSIGNED, &priv->flags))
|
||||
ipoib_open(dev);
|
||||
else {
|
||||
down(&pkey_sem);
|
||||
mutex_lock(&pkey_mutex);
|
||||
if (!test_bit(IPOIB_PKEY_STOP, &priv->flags))
|
||||
queue_delayed_work(ipoib_workqueue,
|
||||
&priv->pkey_task,
|
||||
HZ);
|
||||
up(&pkey_sem);
|
||||
mutex_unlock(&pkey_mutex);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -670,12 +670,12 @@ int ipoib_pkey_dev_delay_open(struct net_device *dev)
|
||||
|
||||
/* P_Key value not assigned yet - start polling */
|
||||
if (!test_bit(IPOIB_PKEY_ASSIGNED, &priv->flags)) {
|
||||
down(&pkey_sem);
|
||||
mutex_lock(&pkey_mutex);
|
||||
clear_bit(IPOIB_PKEY_STOP, &priv->flags);
|
||||
queue_delayed_work(ipoib_workqueue,
|
||||
&priv->pkey_task,
|
||||
HZ);
|
||||
up(&pkey_sem);
|
||||
mutex_unlock(&pkey_mutex);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@@ -105,7 +105,7 @@ int ipoib_open(struct net_device *dev)
|
||||
struct ipoib_dev_priv *cpriv;
|
||||
|
||||
/* Bring up any child interfaces too */
|
||||
down(&priv->vlan_mutex);
|
||||
mutex_lock(&priv->vlan_mutex);
|
||||
list_for_each_entry(cpriv, &priv->child_intfs, list) {
|
||||
int flags;
|
||||
|
||||
@@ -115,7 +115,7 @@ int ipoib_open(struct net_device *dev)
|
||||
|
||||
dev_change_flags(cpriv->dev, flags | IFF_UP);
|
||||
}
|
||||
up(&priv->vlan_mutex);
|
||||
mutex_unlock(&priv->vlan_mutex);
|
||||
}
|
||||
|
||||
netif_start_queue(dev);
|
||||
@@ -140,7 +140,7 @@ static int ipoib_stop(struct net_device *dev)
|
||||
struct ipoib_dev_priv *cpriv;
|
||||
|
||||
/* Bring down any child interfaces too */
|
||||
down(&priv->vlan_mutex);
|
||||
mutex_lock(&priv->vlan_mutex);
|
||||
list_for_each_entry(cpriv, &priv->child_intfs, list) {
|
||||
int flags;
|
||||
|
||||
@@ -150,7 +150,7 @@ static int ipoib_stop(struct net_device *dev)
|
||||
|
||||
dev_change_flags(cpriv->dev, flags & ~IFF_UP);
|
||||
}
|
||||
up(&priv->vlan_mutex);
|
||||
mutex_unlock(&priv->vlan_mutex);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -892,8 +892,8 @@ static void ipoib_setup(struct net_device *dev)
|
||||
spin_lock_init(&priv->lock);
|
||||
spin_lock_init(&priv->tx_lock);
|
||||
|
||||
init_MUTEX(&priv->mcast_mutex);
|
||||
init_MUTEX(&priv->vlan_mutex);
|
||||
mutex_init(&priv->mcast_mutex);
|
||||
mutex_init(&priv->vlan_mutex);
|
||||
|
||||
INIT_LIST_HEAD(&priv->path_list);
|
||||
INIT_LIST_HEAD(&priv->child_intfs);
|
||||
|
@@ -55,7 +55,7 @@ MODULE_PARM_DESC(mcast_debug_level,
|
||||
"Enable multicast debug tracing if > 0");
|
||||
#endif
|
||||
|
||||
static DECLARE_MUTEX(mcast_mutex);
|
||||
static DEFINE_MUTEX(mcast_mutex);
|
||||
|
||||
/* Used for all multicast joins (broadcast, IPv4 mcast and IPv6 mcast) */
|
||||
struct ipoib_mcast {
|
||||
@@ -385,10 +385,10 @@ static void ipoib_mcast_join_complete(int status,
|
||||
|
||||
if (!status && !ipoib_mcast_join_finish(mcast, mcmember)) {
|
||||
mcast->backoff = 1;
|
||||
down(&mcast_mutex);
|
||||
mutex_lock(&mcast_mutex);
|
||||
if (test_bit(IPOIB_MCAST_RUN, &priv->flags))
|
||||
queue_work(ipoib_workqueue, &priv->mcast_task);
|
||||
up(&mcast_mutex);
|
||||
mutex_unlock(&mcast_mutex);
|
||||
complete(&mcast->done);
|
||||
return;
|
||||
}
|
||||
@@ -418,7 +418,7 @@ static void ipoib_mcast_join_complete(int status,
|
||||
|
||||
mcast->query = NULL;
|
||||
|
||||
down(&mcast_mutex);
|
||||
mutex_lock(&mcast_mutex);
|
||||
if (test_bit(IPOIB_MCAST_RUN, &priv->flags)) {
|
||||
if (status == -ETIMEDOUT)
|
||||
queue_work(ipoib_workqueue, &priv->mcast_task);
|
||||
@@ -427,7 +427,7 @@ static void ipoib_mcast_join_complete(int status,
|
||||
mcast->backoff * HZ);
|
||||
} else
|
||||
complete(&mcast->done);
|
||||
up(&mcast_mutex);
|
||||
mutex_unlock(&mcast_mutex);
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -482,12 +482,12 @@ static void ipoib_mcast_join(struct net_device *dev, struct ipoib_mcast *mcast,
|
||||
if (mcast->backoff > IPOIB_MAX_BACKOFF_SECONDS)
|
||||
mcast->backoff = IPOIB_MAX_BACKOFF_SECONDS;
|
||||
|
||||
down(&mcast_mutex);
|
||||
mutex_lock(&mcast_mutex);
|
||||
if (test_bit(IPOIB_MCAST_RUN, &priv->flags))
|
||||
queue_delayed_work(ipoib_workqueue,
|
||||
&priv->mcast_task,
|
||||
mcast->backoff * HZ);
|
||||
up(&mcast_mutex);
|
||||
mutex_unlock(&mcast_mutex);
|
||||
} else
|
||||
mcast->query_id = ret;
|
||||
}
|
||||
@@ -520,11 +520,11 @@ void ipoib_mcast_join_task(void *dev_ptr)
|
||||
priv->broadcast = ipoib_mcast_alloc(dev, 1);
|
||||
if (!priv->broadcast) {
|
||||
ipoib_warn(priv, "failed to allocate broadcast group\n");
|
||||
down(&mcast_mutex);
|
||||
mutex_lock(&mcast_mutex);
|
||||
if (test_bit(IPOIB_MCAST_RUN, &priv->flags))
|
||||
queue_delayed_work(ipoib_workqueue,
|
||||
&priv->mcast_task, HZ);
|
||||
up(&mcast_mutex);
|
||||
mutex_unlock(&mcast_mutex);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -580,10 +580,10 @@ int ipoib_mcast_start_thread(struct net_device *dev)
|
||||
|
||||
ipoib_dbg_mcast(priv, "starting multicast thread\n");
|
||||
|
||||
down(&mcast_mutex);
|
||||
mutex_lock(&mcast_mutex);
|
||||
if (!test_and_set_bit(IPOIB_MCAST_RUN, &priv->flags))
|
||||
queue_work(ipoib_workqueue, &priv->mcast_task);
|
||||
up(&mcast_mutex);
|
||||
mutex_unlock(&mcast_mutex);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -595,10 +595,10 @@ int ipoib_mcast_stop_thread(struct net_device *dev, int flush)
|
||||
|
||||
ipoib_dbg_mcast(priv, "stopping multicast thread\n");
|
||||
|
||||
down(&mcast_mutex);
|
||||
mutex_lock(&mcast_mutex);
|
||||
clear_bit(IPOIB_MCAST_RUN, &priv->flags);
|
||||
cancel_delayed_work(&priv->mcast_task);
|
||||
up(&mcast_mutex);
|
||||
mutex_unlock(&mcast_mutex);
|
||||
|
||||
if (flush)
|
||||
flush_workqueue(ipoib_workqueue);
|
||||
|
@@ -65,9 +65,9 @@ int ipoib_mcast_attach(struct net_device *dev, u16 mlid, union ib_gid *mgid)
|
||||
}
|
||||
|
||||
/* attach QP to multicast group */
|
||||
down(&priv->mcast_mutex);
|
||||
mutex_lock(&priv->mcast_mutex);
|
||||
ret = ib_attach_mcast(priv->qp, mgid, mlid);
|
||||
up(&priv->mcast_mutex);
|
||||
mutex_unlock(&priv->mcast_mutex);
|
||||
if (ret)
|
||||
ipoib_warn(priv, "failed to attach to multicast group, ret = %d\n", ret);
|
||||
|
||||
@@ -81,9 +81,9 @@ int ipoib_mcast_detach(struct net_device *dev, u16 mlid, union ib_gid *mgid)
|
||||
struct ipoib_dev_priv *priv = netdev_priv(dev);
|
||||
int ret;
|
||||
|
||||
down(&priv->mcast_mutex);
|
||||
mutex_lock(&priv->mcast_mutex);
|
||||
ret = ib_detach_mcast(priv->qp, mgid, mlid);
|
||||
up(&priv->mcast_mutex);
|
||||
mutex_unlock(&priv->mcast_mutex);
|
||||
if (ret)
|
||||
ipoib_warn(priv, "ib_detach_mcast failed (result = %d)\n", ret);
|
||||
|
||||
|
@@ -63,7 +63,7 @@ int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey)
|
||||
|
||||
ppriv = netdev_priv(pdev);
|
||||
|
||||
down(&ppriv->vlan_mutex);
|
||||
mutex_lock(&ppriv->vlan_mutex);
|
||||
|
||||
/*
|
||||
* First ensure this isn't a duplicate. We check the parent device and
|
||||
@@ -124,7 +124,7 @@ int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey)
|
||||
|
||||
list_add_tail(&priv->list, &ppriv->child_intfs);
|
||||
|
||||
up(&ppriv->vlan_mutex);
|
||||
mutex_unlock(&ppriv->vlan_mutex);
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -139,7 +139,7 @@ device_init_failed:
|
||||
free_netdev(priv->dev);
|
||||
|
||||
err:
|
||||
up(&ppriv->vlan_mutex);
|
||||
mutex_unlock(&ppriv->vlan_mutex);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -153,7 +153,7 @@ int ipoib_vlan_delete(struct net_device *pdev, unsigned short pkey)
|
||||
|
||||
ppriv = netdev_priv(pdev);
|
||||
|
||||
down(&ppriv->vlan_mutex);
|
||||
mutex_lock(&ppriv->vlan_mutex);
|
||||
list_for_each_entry_safe(priv, tpriv, &ppriv->child_intfs, list) {
|
||||
if (priv->pkey == pkey) {
|
||||
unregister_netdev(priv->dev);
|
||||
@@ -167,7 +167,7 @@ int ipoib_vlan_delete(struct net_device *pdev, unsigned short pkey)
|
||||
break;
|
||||
}
|
||||
}
|
||||
up(&ppriv->vlan_mutex);
|
||||
mutex_unlock(&ppriv->vlan_mutex);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
Reference in New Issue
Block a user