Commit 9ac16252 authored by Matthias Kaehlcke's avatar Matthias Kaehlcke Committed by Linus Torvalds

Use mutexes instead of semaphores in I2O driver

The I2O driver uses two semaphores as mutexes.  Use the mutex API instead of
the (binary) semaphores.
Signed-off-by: default avatarMatthias Kaehlcke <matthias.kaehlcke@gmail.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 1c6b4aa9
...@@ -62,7 +62,7 @@ int i2o_device_claim(struct i2o_device *dev) ...@@ -62,7 +62,7 @@ int i2o_device_claim(struct i2o_device *dev)
{ {
int rc = 0; int rc = 0;
down(&dev->lock); mutex_lock(&dev->lock);
rc = i2o_device_issue_claim(dev, I2O_CMD_UTIL_CLAIM, I2O_CLAIM_PRIMARY); rc = i2o_device_issue_claim(dev, I2O_CMD_UTIL_CLAIM, I2O_CLAIM_PRIMARY);
if (!rc) if (!rc)
...@@ -72,7 +72,7 @@ int i2o_device_claim(struct i2o_device *dev) ...@@ -72,7 +72,7 @@ int i2o_device_claim(struct i2o_device *dev)
pr_debug("i2o: claim of device %d failed %d\n", pr_debug("i2o: claim of device %d failed %d\n",
dev->lct_data.tid, rc); dev->lct_data.tid, rc);
up(&dev->lock); mutex_unlock(&dev->lock);
return rc; return rc;
} }
...@@ -96,7 +96,7 @@ int i2o_device_claim_release(struct i2o_device *dev) ...@@ -96,7 +96,7 @@ int i2o_device_claim_release(struct i2o_device *dev)
int tries; int tries;
int rc = 0; int rc = 0;
down(&dev->lock); mutex_lock(&dev->lock);
/* /*
* If the controller takes a nonblocking approach to * If the controller takes a nonblocking approach to
...@@ -118,7 +118,7 @@ int i2o_device_claim_release(struct i2o_device *dev) ...@@ -118,7 +118,7 @@ int i2o_device_claim_release(struct i2o_device *dev)
pr_debug("i2o: claim release of device %d failed %d\n", pr_debug("i2o: claim release of device %d failed %d\n",
dev->lct_data.tid, rc); dev->lct_data.tid, rc);
up(&dev->lock); mutex_unlock(&dev->lock);
return rc; return rc;
} }
...@@ -198,7 +198,7 @@ static struct i2o_device *i2o_device_alloc(void) ...@@ -198,7 +198,7 @@ static struct i2o_device *i2o_device_alloc(void)
return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM);
INIT_LIST_HEAD(&dev->list); INIT_LIST_HEAD(&dev->list);
init_MUTEX(&dev->lock); mutex_init(&dev->lock);
dev->device.bus = &i2o_bus_type; dev->device.bus = &i2o_bus_type;
dev->device.release = &i2o_device_release; dev->device.release = &i2o_device_release;
...@@ -326,7 +326,7 @@ int i2o_device_parse_lct(struct i2o_controller *c) ...@@ -326,7 +326,7 @@ int i2o_device_parse_lct(struct i2o_controller *c)
u16 table_size; u16 table_size;
u32 buf; u32 buf;
down(&c->lct_lock); mutex_lock(&c->lct_lock);
kfree(c->lct); kfree(c->lct);
...@@ -335,7 +335,7 @@ int i2o_device_parse_lct(struct i2o_controller *c) ...@@ -335,7 +335,7 @@ int i2o_device_parse_lct(struct i2o_controller *c)
lct = c->lct = kmalloc(table_size * 4, GFP_KERNEL); lct = c->lct = kmalloc(table_size * 4, GFP_KERNEL);
if (!lct) { if (!lct) {
up(&c->lct_lock); mutex_unlock(&c->lct_lock);
return -ENOMEM; return -ENOMEM;
} }
...@@ -408,7 +408,7 @@ int i2o_device_parse_lct(struct i2o_controller *c) ...@@ -408,7 +408,7 @@ int i2o_device_parse_lct(struct i2o_controller *c)
i2o_device_remove(dev); i2o_device_remove(dev);
} }
up(&c->lct_lock); mutex_unlock(&c->lct_lock);
return 0; return 0;
} }
......
...@@ -537,7 +537,7 @@ static int i2o_exec_lct_notify(struct i2o_controller *c, u32 change_ind) ...@@ -537,7 +537,7 @@ static int i2o_exec_lct_notify(struct i2o_controller *c, u32 change_ind)
struct device *dev; struct device *dev;
struct i2o_message *msg; struct i2o_message *msg;
down(&c->lct_lock); mutex_lock(&c->lct_lock);
dev = &c->pdev->dev; dev = &c->pdev->dev;
...@@ -561,7 +561,7 @@ static int i2o_exec_lct_notify(struct i2o_controller *c, u32 change_ind) ...@@ -561,7 +561,7 @@ static int i2o_exec_lct_notify(struct i2o_controller *c, u32 change_ind)
i2o_msg_post(c, msg); i2o_msg_post(c, msg);
up(&c->lct_lock); mutex_unlock(&c->lct_lock);
return 0; return 0;
}; };
......
...@@ -1067,7 +1067,7 @@ struct i2o_controller *i2o_iop_alloc(void) ...@@ -1067,7 +1067,7 @@ struct i2o_controller *i2o_iop_alloc(void)
INIT_LIST_HEAD(&c->devices); INIT_LIST_HEAD(&c->devices);
spin_lock_init(&c->lock); spin_lock_init(&c->lock);
init_MUTEX(&c->lct_lock); mutex_init(&c->lct_lock);
device_initialize(&c->device); device_initialize(&c->device);
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/workqueue.h> /* work_struct */ #include <linux/workqueue.h> /* work_struct */
#include <linux/mempool.h> #include <linux/mempool.h>
#include <linux/mutex.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/semaphore.h> /* Needed for MUTEX init macros */ #include <asm/semaphore.h> /* Needed for MUTEX init macros */
...@@ -425,7 +426,7 @@ struct i2o_device { ...@@ -425,7 +426,7 @@ struct i2o_device {
struct device device; struct device device;
struct semaphore lock; /* device lock */ struct mutex lock; /* device lock */
}; };
/* /*
...@@ -544,7 +545,7 @@ struct i2o_controller { ...@@ -544,7 +545,7 @@ struct i2o_controller {
struct i2o_dma hrt; /* HW Resource Table */ struct i2o_dma hrt; /* HW Resource Table */
i2o_lct *lct; /* Logical Config Table */ i2o_lct *lct; /* Logical Config Table */
struct i2o_dma dlct; /* Temp LCT */ struct i2o_dma dlct; /* Temp LCT */
struct semaphore lct_lock; /* Lock for LCT updates */ struct mutex lct_lock; /* Lock for LCT updates */
struct i2o_dma status_block; /* IOP status block */ struct i2o_dma status_block; /* IOP status block */
struct i2o_io base; /* controller messaging unit */ struct i2o_io base; /* controller messaging unit */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment