[PATCH] I2O: Optimizing
- make i2o_iop_free() static inline (from Adrian Bunk) - changed kmalloc() + memset(0) into kzalloc() Signed-off-by: Markus Lidel <Markus.Lidel@shadowconnect.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
2e1973a3cd
commit
f6ed39a6e1
@ -22,7 +22,7 @@
|
|||||||
#include <asm/uaccess.h>
|
#include <asm/uaccess.h>
|
||||||
|
|
||||||
#define OSM_NAME "config-osm"
|
#define OSM_NAME "config-osm"
|
||||||
#define OSM_VERSION "1.317"
|
#define OSM_VERSION "1.323"
|
||||||
#define OSM_DESCRIPTION "I2O Configuration OSM"
|
#define OSM_DESCRIPTION "I2O Configuration OSM"
|
||||||
|
|
||||||
/* access mode user rw */
|
/* access mode user rw */
|
||||||
|
@ -40,7 +40,16 @@ extern int i2o_device_parse_lct(struct i2o_controller *);
|
|||||||
|
|
||||||
/* IOP */
|
/* IOP */
|
||||||
extern struct i2o_controller *i2o_iop_alloc(void);
|
extern struct i2o_controller *i2o_iop_alloc(void);
|
||||||
extern void i2o_iop_free(struct i2o_controller *);
|
|
||||||
|
/**
|
||||||
|
* i2o_iop_free - Free the i2o_controller struct
|
||||||
|
* @c: I2O controller to free
|
||||||
|
*/
|
||||||
|
static inline void i2o_iop_free(struct i2o_controller *c)
|
||||||
|
{
|
||||||
|
i2o_pool_free(&c->in_msg);
|
||||||
|
kfree(c);
|
||||||
|
}
|
||||||
|
|
||||||
extern int i2o_iop_add(struct i2o_controller *);
|
extern int i2o_iop_add(struct i2o_controller *);
|
||||||
extern void i2o_iop_remove(struct i2o_controller *);
|
extern void i2o_iop_remove(struct i2o_controller *);
|
||||||
|
@ -195,12 +195,10 @@ static struct i2o_device *i2o_device_alloc(void)
|
|||||||
{
|
{
|
||||||
struct i2o_device *dev;
|
struct i2o_device *dev;
|
||||||
|
|
||||||
dev = kmalloc(sizeof(*dev), GFP_KERNEL);
|
dev = kzalloc(sizeof(*dev), GFP_KERNEL);
|
||||||
if (!dev)
|
if (!dev)
|
||||||
return ERR_PTR(-ENOMEM);
|
return ERR_PTR(-ENOMEM);
|
||||||
|
|
||||||
memset(dev, 0, sizeof(*dev));
|
|
||||||
|
|
||||||
INIT_LIST_HEAD(&dev->list);
|
INIT_LIST_HEAD(&dev->list);
|
||||||
init_MUTEX(&dev->lock);
|
init_MUTEX(&dev->lock);
|
||||||
|
|
||||||
|
@ -217,10 +217,9 @@ int i2o_driver_dispatch(struct i2o_controller *c, u32 m)
|
|||||||
/* cut of header from message size (in 32-bit words) */
|
/* cut of header from message size (in 32-bit words) */
|
||||||
size = (le32_to_cpu(msg->u.head[0]) >> 16) - 5;
|
size = (le32_to_cpu(msg->u.head[0]) >> 16) - 5;
|
||||||
|
|
||||||
evt = kmalloc(size * 4 + sizeof(*evt), GFP_ATOMIC);
|
evt = kzalloc(size * 4 + sizeof(*evt), GFP_ATOMIC);
|
||||||
if (!evt)
|
if (!evt)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
memset(evt, 0, size * 4 + sizeof(*evt));
|
|
||||||
|
|
||||||
evt->size = size;
|
evt->size = size;
|
||||||
evt->tcntxt = le32_to_cpu(msg->u.s.tcntxt);
|
evt->tcntxt = le32_to_cpu(msg->u.s.tcntxt);
|
||||||
@ -348,12 +347,10 @@ int __init i2o_driver_init(void)
|
|||||||
osm_info("max drivers = %d\n", i2o_max_drivers);
|
osm_info("max drivers = %d\n", i2o_max_drivers);
|
||||||
|
|
||||||
i2o_drivers =
|
i2o_drivers =
|
||||||
kmalloc(i2o_max_drivers * sizeof(*i2o_drivers), GFP_KERNEL);
|
kzalloc(i2o_max_drivers * sizeof(*i2o_drivers), GFP_KERNEL);
|
||||||
if (!i2o_drivers)
|
if (!i2o_drivers)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
memset(i2o_drivers, 0, i2o_max_drivers * sizeof(*i2o_drivers));
|
|
||||||
|
|
||||||
rc = bus_register(&i2o_bus_type);
|
rc = bus_register(&i2o_bus_type);
|
||||||
|
|
||||||
if (rc < 0)
|
if (rc < 0)
|
||||||
|
@ -75,12 +75,10 @@ static struct i2o_exec_wait *i2o_exec_wait_alloc(void)
|
|||||||
{
|
{
|
||||||
struct i2o_exec_wait *wait;
|
struct i2o_exec_wait *wait;
|
||||||
|
|
||||||
wait = kmalloc(sizeof(*wait), GFP_KERNEL);
|
wait = kzalloc(sizeof(*wait), GFP_KERNEL);
|
||||||
if (!wait)
|
if (!wait)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
memset(wait, 0, sizeof(*wait));
|
|
||||||
|
|
||||||
INIT_LIST_HEAD(&wait->list);
|
INIT_LIST_HEAD(&wait->list);
|
||||||
|
|
||||||
return wait;
|
return wait;
|
||||||
|
@ -64,7 +64,7 @@
|
|||||||
#include "i2o_block.h"
|
#include "i2o_block.h"
|
||||||
|
|
||||||
#define OSM_NAME "block-osm"
|
#define OSM_NAME "block-osm"
|
||||||
#define OSM_VERSION "1.316"
|
#define OSM_VERSION "1.325"
|
||||||
#define OSM_DESCRIPTION "I2O Block Device OSM"
|
#define OSM_DESCRIPTION "I2O Block Device OSM"
|
||||||
|
|
||||||
static struct i2o_driver i2o_block_driver;
|
static struct i2o_driver i2o_block_driver;
|
||||||
@ -981,13 +981,12 @@ static struct i2o_block_device *i2o_block_device_alloc(void)
|
|||||||
struct request_queue *queue;
|
struct request_queue *queue;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
dev = kmalloc(sizeof(*dev), GFP_KERNEL);
|
dev = kzalloc(sizeof(*dev), GFP_KERNEL);
|
||||||
if (!dev) {
|
if (!dev) {
|
||||||
osm_err("Insufficient memory to allocate I2O Block disk.\n");
|
osm_err("Insufficient memory to allocate I2O Block disk.\n");
|
||||||
rc = -ENOMEM;
|
rc = -ENOMEM;
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
memset(dev, 0, sizeof(*dev));
|
|
||||||
|
|
||||||
INIT_LIST_HEAD(&dev->open_queue);
|
INIT_LIST_HEAD(&dev->open_queue);
|
||||||
spin_lock_init(&dev->lock);
|
spin_lock_init(&dev->lock);
|
||||||
|
@ -583,13 +583,12 @@ static int i2o_cfg_passthru32(struct file *file, unsigned cmnd,
|
|||||||
reply_size >>= 16;
|
reply_size >>= 16;
|
||||||
reply_size <<= 2;
|
reply_size <<= 2;
|
||||||
|
|
||||||
reply = kmalloc(reply_size, GFP_KERNEL);
|
reply = kzalloc(reply_size, GFP_KERNEL);
|
||||||
if (!reply) {
|
if (!reply) {
|
||||||
printk(KERN_WARNING "%s: Could not allocate reply buffer\n",
|
printk(KERN_WARNING "%s: Could not allocate reply buffer\n",
|
||||||
c->name);
|
c->name);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
memset(reply, 0, reply_size);
|
|
||||||
|
|
||||||
sg_offset = (msg->u.head[0] >> 4) & 0x0f;
|
sg_offset = (msg->u.head[0] >> 4) & 0x0f;
|
||||||
|
|
||||||
@ -817,13 +816,12 @@ static int i2o_cfg_passthru(unsigned long arg)
|
|||||||
reply_size >>= 16;
|
reply_size >>= 16;
|
||||||
reply_size <<= 2;
|
reply_size <<= 2;
|
||||||
|
|
||||||
reply = kmalloc(reply_size, GFP_KERNEL);
|
reply = kzalloc(reply_size, GFP_KERNEL);
|
||||||
if (!reply) {
|
if (!reply) {
|
||||||
printk(KERN_WARNING "%s: Could not allocate reply buffer\n",
|
printk(KERN_WARNING "%s: Could not allocate reply buffer\n",
|
||||||
c->name);
|
c->name);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
memset(reply, 0, reply_size);
|
|
||||||
|
|
||||||
sg_offset = (msg->u.head[0] >> 4) & 0x0f;
|
sg_offset = (msg->u.head[0] >> 4) & 0x0f;
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
#include "core.h"
|
#include "core.h"
|
||||||
|
|
||||||
#define OSM_NAME "i2o"
|
#define OSM_NAME "i2o"
|
||||||
#define OSM_VERSION "1.316"
|
#define OSM_VERSION "1.325"
|
||||||
#define OSM_DESCRIPTION "I2O subsystem"
|
#define OSM_DESCRIPTION "I2O subsystem"
|
||||||
|
|
||||||
/* global I2O controller list */
|
/* global I2O controller list */
|
||||||
@ -838,12 +838,11 @@ static int i2o_systab_build(void)
|
|||||||
i2o_systab.len = sizeof(struct i2o_sys_tbl) + num_controllers *
|
i2o_systab.len = sizeof(struct i2o_sys_tbl) + num_controllers *
|
||||||
sizeof(struct i2o_sys_tbl_entry);
|
sizeof(struct i2o_sys_tbl_entry);
|
||||||
|
|
||||||
systab = i2o_systab.virt = kmalloc(i2o_systab.len, GFP_KERNEL);
|
systab = i2o_systab.virt = kzalloc(i2o_systab.len, GFP_KERNEL);
|
||||||
if (!systab) {
|
if (!systab) {
|
||||||
osm_err("unable to allocate memory for System Table\n");
|
osm_err("unable to allocate memory for System Table\n");
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
memset(systab, 0, i2o_systab.len);
|
|
||||||
|
|
||||||
systab->version = I2OVERSION;
|
systab->version = I2OVERSION;
|
||||||
systab->change_ind = change_ind + 1;
|
systab->change_ind = change_ind + 1;
|
||||||
@ -1019,16 +1018,6 @@ static int i2o_hrt_get(struct i2o_controller *c)
|
|||||||
return -EBUSY;
|
return -EBUSY;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* i2o_iop_free - Free the i2o_controller struct
|
|
||||||
* @c: I2O controller to free
|
|
||||||
*/
|
|
||||||
void i2o_iop_free(struct i2o_controller *c)
|
|
||||||
{
|
|
||||||
i2o_pool_free(&c->in_msg);
|
|
||||||
kfree(c);
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* i2o_iop_release - release the memory for a I2O controller
|
* i2o_iop_release - release the memory for a I2O controller
|
||||||
* @dev: I2O controller which should be released
|
* @dev: I2O controller which should be released
|
||||||
@ -1058,13 +1047,12 @@ struct i2o_controller *i2o_iop_alloc(void)
|
|||||||
struct i2o_controller *c;
|
struct i2o_controller *c;
|
||||||
char poolname[32];
|
char poolname[32];
|
||||||
|
|
||||||
c = kmalloc(sizeof(*c), GFP_KERNEL);
|
c = kzalloc(sizeof(*c), GFP_KERNEL);
|
||||||
if (!c) {
|
if (!c) {
|
||||||
osm_err("i2o: Insufficient memory to allocate a I2O controller."
|
osm_err("i2o: Insufficient memory to allocate a I2O controller."
|
||||||
"\n");
|
"\n");
|
||||||
return ERR_PTR(-ENOMEM);
|
return ERR_PTR(-ENOMEM);
|
||||||
}
|
}
|
||||||
memset(c, 0, sizeof(*c));
|
|
||||||
|
|
||||||
c->unit = unit++;
|
c->unit = unit++;
|
||||||
sprintf(c->name, "iop%d", c->unit);
|
sprintf(c->name, "iop%d", c->unit);
|
||||||
|
Loading…
Reference in New Issue
Block a user