[PATCH 09/11] Remove old cache setup functions
DORMANTno replies
From: Goldwyn Rodrigues <hidden>
Date: 2011-11-07 08:50:44
Subsystem:
infiniband subsystem, the rest · Maintainers:
Jason Gunthorpe, Leon Romanovsky, Linus Torvalds
Signed-off-by: Goldwyn Rodrigues <redacted> --- drivers/infiniband/core/cache.c | 193 -------------------------------------- drivers/infiniband/core/device.c | 10 -- 2 files changed, 0 insertions(+), 203 deletions(-)
diff --git a/drivers/infiniband/core/cache.c b/drivers/infiniband/core/cache.c
index 532d442..3e410fe 100644
--- a/drivers/infiniband/core/cache.c
+++ b/drivers/infiniband/core/cache.c@@ -260,121 +260,6 @@ int ib_update_cached_gid(struct ib_cache *cache, } EXPORT_SYMBOL(ib_update_cached_gid); -static void ib_cache_update(struct ib_device *device, - u8 port) -{ - struct ib_port_attr *tprops = NULL; - struct ib_pkey_cache *pkey_cache = NULL, *old_pkey_cache; - struct ib_gid_cache *gid_cache = NULL, *old_gid_cache; - int i; - int ret; - - tprops = kmalloc(sizeof *tprops, GFP_KERNEL); - if (!tprops) - return; - - ret = ib_query_port(device, port, tprops); - if (ret) { - printk(KERN_WARNING "ib_query_port failed (%d) for %s\n", - ret, device->name); - goto err; - } - - pkey_cache = kmalloc(sizeof *pkey_cache + tprops->pkey_tbl_len * - sizeof *pkey_cache->table, GFP_KERNEL); - if (!pkey_cache) - goto err; - - pkey_cache->table_len = tprops->pkey_tbl_len; - pkey_cache->valid_bm = kzalloc(BITS_TO_LONGS(pkey_cache->table_len), - GFP_KERNEL); - if (!pkey_cache->valid_bm) - goto err; - - - gid_cache = kmalloc(sizeof *gid_cache + tprops->gid_tbl_len * - sizeof *gid_cache->table, GFP_KERNEL); - if (!gid_cache) - goto err; - - gid_cache->table_len = tprops->gid_tbl_len; - gid_cache->valid_bm = kzalloc(BITS_TO_LONGS(gid_cache->table_len), - GFP_KERNEL); - if (!gid_cache->valid_bm) - goto err; - - for (i = 0; i < pkey_cache->table_len; ++i) { - ret = ib_query_pkey(device, port, i, pkey_cache->table + i); - if (ret) { - printk(KERN_WARNING "ib_query_pkey failed (%d) for %s (index %d)\n", - ret, device->name, i); - goto err; - } - set_bit(i, pkey_cache->valid_bm); - } - - for (i = 0; i < gid_cache->table_len; ++i) { - ret = ib_query_gid(device, port, i, gid_cache->table + i); - if (ret) { - printk(KERN_WARNING "ib_query_gid failed (%d) for %s (index %d)\n", - ret, device->name, i); - goto err; - } - set_bit(i, gid_cache->valid_bm); - } - - write_lock_irq(&device->cache.lock); - - old_pkey_cache = device->cache.pkey_cache[port - start_port(device)]; - old_gid_cache = device->cache.gid_cache [port - start_port(device)]; - - device->cache.pkey_cache[port - start_port(device)] = pkey_cache; - device->cache.gid_cache [port - start_port(device)] = gid_cache; - - write_unlock_irq(&device->cache.lock); - - kfree(old_pkey_cache); - kfree(old_gid_cache); - kfree(tprops); - return; - -err: - kfree(pkey_cache); - kfree(gid_cache); - kfree(tprops); -} - -static void ib_cache_task(struct work_struct *_work) -{ - struct ib_update_work *work = - container_of(_work, struct ib_update_work, work); - - ib_cache_update(work->device, work->port_num); - kfree(work); -} - -static void ib_cache_event(struct ib_event_handler *handler, - struct ib_event *event) -{ - struct ib_update_work *work; - - if (event->event == IB_EVENT_PORT_ERR || - event->event == IB_EVENT_PORT_ACTIVE || - event->event == IB_EVENT_LID_CHANGE || - event->event == IB_EVENT_PKEY_CHANGE || - event->event == IB_EVENT_SM_CHANGE || - event->event == IB_EVENT_CLIENT_REREGISTER || - event->event == IB_EVENT_GID_CHANGE) { - work = kmalloc(sizeof *work, GFP_ATOMIC); - if (work) { - INIT_WORK(&work->work, ib_cache_task); - work->device = event->device; - work->port_num = event->element.port_num; - queue_work(ib_wq, &work->work); - } - } -} - static struct ib_pkey_cache *ib_cache_pkey_alloc(int size) { struct ib_pkey_cache *pc;
@@ -504,81 +389,3 @@ void ib_cache_free(struct ib_cache *cache) kfree(cache->gid_cache); } EXPORT_SYMBOL(ib_cache_free); - -static void ib_cache_setup_one(struct ib_device *device) -{ - int p; - - device->cache.start_port = start_port(device); - device->cache.end_port = end_port(device); - - rwlock_init(&device->cache.lock); - - device->cache.pkey_cache = - kmalloc(sizeof *device->cache.pkey_cache * - (end_port(device) - start_port(device) + 1), GFP_KERNEL); - device->cache.gid_cache = - kmalloc(sizeof *device->cache.gid_cache * - (end_port(device) - start_port(device) + 1), GFP_KERNEL); - - if (!device->cache.pkey_cache || !device->cache.gid_cache) { - printk(KERN_WARNING "Couldn't allocate cache " - "for %s\n", device->name); - goto err; - } - - for (p = 0; p <= end_port(device) - start_port(device); ++p) { - device->cache.pkey_cache[p] = NULL; - device->cache.gid_cache [p] = NULL; - ib_cache_update(device, p + start_port(device)); - } - - INIT_IB_EVENT_HANDLER(&device->cache.event_handler, - device, ib_cache_event); - if (ib_register_event_handler(&device->cache.event_handler)) - goto err_cache; - - return; - -err_cache: - for (p = 0; p <= end_port(device) - start_port(device); ++p) { - kfree(device->cache.pkey_cache[p]); - kfree(device->cache.gid_cache[p]); - } - -err: - kfree(device->cache.pkey_cache); - kfree(device->cache.gid_cache); -} - -static void ib_cache_cleanup_one(struct ib_device *device) -{ - int p; - - ib_unregister_event_handler(&device->cache.event_handler); - flush_workqueue(ib_wq); - - for (p = 0; p <= end_port(device) - start_port(device); ++p) { - kfree(device->cache.pkey_cache[p]); - kfree(device->cache.gid_cache[p]); - } - - kfree(device->cache.pkey_cache); - kfree(device->cache.gid_cache); -} - -static struct ib_client cache_client = { - .name = "cache", - .add = ib_cache_setup_one, - .remove = ib_cache_cleanup_one -}; - -int __init ib_cache_setup(void) -{ - return ib_register_client(&cache_client); -} - -void __exit ib_cache_cleanup(void) -{ - ib_unregister_client(&cache_client); -}
diff --git a/drivers/infiniband/core/device.c b/drivers/infiniband/core/device.c
index 5ea7652..52793ee 100644
--- a/drivers/infiniband/core/device.c
+++ b/drivers/infiniband/core/device.c@@ -766,17 +766,8 @@ static int __init ib_core_init(void) goto err_sysfs; } - ret = ib_cache_setup(); - if (ret) { - printk(KERN_WARNING "Couldn't set up InfiniBand P_Key/GID cache\n"); - goto err_nl; - } - return 0; -err_nl: - ibnl_cleanup(); - err_sysfs: ib_sysfs_cleanup();
@@ -787,7 +778,6 @@ err: static void __exit ib_core_cleanup(void) { - ib_cache_cleanup(); ibnl_cleanup(); ib_sysfs_cleanup(); /* Make sure that any pending umem accounting work is done. */
--
1.7.6
--
Goldwyn
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html