From 4e7b9f52dfb300ed267db7c618d764b6dc857e1a Mon Sep 17 00:00:00 2001 From: Matthew Wilcox Date: Mon, 18 Feb 2019 13:41:32 -0500 Subject: [PATCH] i3c: Convert i3c_bus_idr to IDA Signed-off-by: Matthew Wilcox --- drivers/i3c/master.c | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c index d6f8b038a896..745e55ea5882 100644 --- a/drivers/i3c/master.c +++ b/drivers/i3c/master.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -19,8 +20,7 @@ #include "internals.h" -static DEFINE_IDR(i3c_bus_idr); -static DEFINE_MUTEX(i3c_core_lock); +static DEFINE_IDA(i3c_bus_ids); /** * i3c_bus_maintenance_lock - Lock the bus for a maintenance operation @@ -440,9 +440,7 @@ static void i3c_bus_init_addrslots(struct i3c_bus *bus) static void i3c_bus_cleanup(struct i3c_bus *i3cbus) { - mutex_lock(&i3c_core_lock); - idr_remove(&i3c_bus_idr, i3cbus->id); - mutex_unlock(&i3c_core_lock); + ida_free(&i3c_bus_ids, i3cbus->id); } static int i3c_bus_init(struct i3c_bus *i3cbus) @@ -455,15 +453,11 @@ static int i3c_bus_init(struct i3c_bus *i3cbus) i3c_bus_init_addrslots(i3cbus); i3cbus->mode = I3C_BUS_MODE_PURE; - mutex_lock(&i3c_core_lock); - ret = idr_alloc(&i3c_bus_idr, i3cbus, 0, 0, GFP_KERNEL); - mutex_unlock(&i3c_core_lock); - + ret = ida_alloc(&i3c_bus_ids, GFP_KERNEL); if (ret < 0) return ret; i3cbus->id = ret; - return 0; } @@ -2685,7 +2679,6 @@ subsys_initcall(i3c_init); static void __exit i3c_exit(void) { - idr_destroy(&i3c_bus_idr); bus_unregister(&i3c_bus_type); } module_exit(i3c_exit); -- 2.50.1