From patchwork Fri Jul 22 16:41:12 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 106335 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from mail-wy0-f184.google.com (mail-wy0-f184.google.com [74.125.82.184]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority" (verified OK)) by ozlabs.org (Postfix) with ESMTPS id BD5BCB6F76 for ; Sat, 23 Jul 2011 02:41:35 +1000 (EST) Received: by wyg24 with SMTP id 24sf4048904wyg.11 for ; Fri, 22 Jul 2011 09:41:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=beta; h=mime-version:x-beenthere:received-spf:x-cam-antivirus :x-cam-spamdetails:x-cam-scannerinfo:from:to:cc:subject:date :message-id:x-mailer:in-reply-to:references:x-original-sender :x-original-authentication-results:reply-to:precedence:mailing-list :list-id:x-google-group-id:list-post:list-help:list-archive:sender :list-subscribe:list-unsubscribe:content-type; bh=xftzo+uR8ZgYfL53TDlCLfg8ay6ZsZZuTF8TKO+eKXM=; b=F4+cmMl2H2M7rNRLxd79oZHXq8b0Ss4qXKMsPYqh7jVXfyuvwMi97/Huniqb7Q5Uwb faMyQ0funElDz6N3H2x1qzS6VwkATYC8Z8WMGVjRPrzzUWL6y1I+W5HLC1hyiA41Zj88 3NjNdC3BZu94JlVXuqZihTPg9bYfDyZ4EnGaE= Received: by 10.216.240.141 with SMTP id e13mr1030846wer.26.1311352890240; Fri, 22 Jul 2011 09:41:30 -0700 (PDT) MIME-Version: 1.0 X-BeenThere: rtc-linux@googlegroups.com Received: by 10.227.106.37 with SMTP id v37ls1571720wbo.1.gmail; Fri, 22 Jul 2011 09:41:29 -0700 (PDT) Received: by 10.216.30.17 with SMTP id j17mr149940wea.1.1311352889381; Fri, 22 Jul 2011 09:41:29 -0700 (PDT) Received: by 10.216.30.17 with SMTP id j17mr149939wea.1.1311352889362; Fri, 22 Jul 2011 09:41:29 -0700 (PDT) Received: from ppsw-51.csi.cam.ac.uk (ppsw-51.csi.cam.ac.uk [131.111.8.151]) by gmr-mx.google.com with ESMTP id c25si2631321wbp.1.2011.07.22.09.41.29; Fri, 22 Jul 2011 09:41:29 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of jic23@cam.ac.uk designates 131.111.8.151 as permitted sender) client-ip=131.111.8.151; X-Cam-AntiVirus: no malware found X-Cam-SpamDetails: not scanned X-Cam-ScannerInfo: http://www.cam.ac.uk/cs/email/scanner/ Received: from arcturus.eng.cam.ac.uk ([129.169.154.73]:58777 helo=localhost.eng.cam.ac.uk) by ppsw-51.csi.cam.ac.uk (smtp.hermes.cam.ac.uk [131.111.8.158]:465) with esmtpsa (LOGIN:jic23) (TLSv1:DHE-RSA-AES256-SHA:256) id 1QkImy-0004Oy-Wi (Exim 4.72) (return-path ); Fri, 22 Jul 2011 17:41:24 +0100 From: Jonathan Cameron To: linux-kernel@vger.kernel.org Cc: lm-sensors@lm-sensors.org, rtc-linux@googlegroups.com, osd-dev@open-osd.org, linux-scsi@vger.kernel.org, dri-devel@lists.freedesktop.org, jkosina@suse.cz, naota@elisp.net, rusty@rustcorp.com.au, paulmck@linux.vnet.ibm.com, namhyung@gmail.com, randy.dunlap@oracle.com, tj@kernel.org, cabarnes@indesign-llc.com, akpm@linux-foundation.org, airlied@redhat.com, thellstrom@vmware.com, johnpol@2ka.mipt.ru, JBottomley@parallels.com, bhalevy@panasas.com, bharrosh@panasas.com, a.zummo@towertech.it, guenter.roeck@ericsson.com, khali@linux-fr.org, airlied@linux.ie, Jonathan Cameron Subject: [rtc-linux] [PATCH 3/8] hwmon: ibmaem: convert idr to ida and use ida_simple_get Date: Fri, 22 Jul 2011 17:41:12 +0100 Message-Id: <1311352886-4047-4-git-send-email-jic23@cam.ac.uk> X-Mailer: git-send-email 1.7.3.4 In-Reply-To: <1311352886-4047-1-git-send-email-jic23@cam.ac.uk> References: <1311352886-4047-1-git-send-email-jic23@cam.ac.uk> X-Original-Sender: jic23@cam.ac.uk X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: best guess record for domain of jic23@cam.ac.uk designates 131.111.8.151 as permitted sender) smtp.mail=jic23@cam.ac.uk Reply-To: rtc-linux@googlegroups.com Precedence: list Mailing-list: list rtc-linux@googlegroups.com; contact rtc-linux+owners@googlegroups.com List-ID: X-Google-Group-Id: 712029733259 List-Post: , List-Help: , List-Archive: Sender: rtc-linux@googlegroups.com List-Subscribe: , List-Unsubscribe: , A straightforward looking use of idr for a device id. Signed-off-by: Jonathan Cameron Acked-by: Darrick J. Wong --- Note I have even build tested this one so will definitely want an Ack from someone who has. drivers/hwmon/ibmaem.c | 47 ++++++++--------------------------------------- 1 files changed, 8 insertions(+), 39 deletions(-) diff --git a/drivers/hwmon/ibmaem.c b/drivers/hwmon/ibmaem.c index 1a409c5..058e0ae 100644 --- a/drivers/hwmon/ibmaem.c +++ b/drivers/hwmon/ibmaem.c @@ -88,8 +88,7 @@ #define AEM_MIN_POWER_INTERVAL 200 #define UJ_PER_MJ 1000L -static DEFINE_IDR(aem_idr); -static DEFINE_SPINLOCK(aem_idr_lock); +static DEFINE_IDA(aem_ida); static struct platform_driver aem_driver = { .driver = { @@ -356,38 +355,6 @@ static void aem_msg_handler(struct ipmi_recv_msg *msg, void *user_msg_data) complete(&data->read_complete); } -/* ID functions */ - -/* Obtain an id */ -static int aem_idr_get(int *id) -{ - int i, err; - -again: - if (unlikely(!idr_pre_get(&aem_idr, GFP_KERNEL))) - return -ENOMEM; - - spin_lock(&aem_idr_lock); - err = idr_get_new(&aem_idr, NULL, &i); - spin_unlock(&aem_idr_lock); - - if (unlikely(err == -EAGAIN)) - goto again; - else if (unlikely(err)) - return err; - - *id = i & MAX_ID_MASK; - return 0; -} - -/* Release an object ID */ -static void aem_idr_put(int id) -{ - spin_lock(&aem_idr_lock); - idr_remove(&aem_idr, id); - spin_unlock(&aem_idr_lock); -} - /* Sensor support functions */ /* Read a sensor value */ @@ -525,7 +492,7 @@ static void aem_delete(struct aem_data *data) ipmi_destroy_user(data->ipmi.user); platform_set_drvdata(data->pdev, NULL); platform_device_unregister(data->pdev); - aem_idr_put(data->id); + ida_simple_remove(&aem_ida, data->id); kfree(data); } @@ -582,7 +549,8 @@ static int aem_init_aem1_inst(struct aem_ipmi_data *probe, u8 module_handle) data->power_period[i] = AEM_DEFAULT_POWER_INTERVAL; /* Create sub-device for this fw instance */ - if (aem_idr_get(&data->id)) + data->id = ida_simple_get(&aem_ida, 0, 0, GFP_KERNEL); + if (data->id < 0) goto id_err; data->pdev = platform_device_alloc(DRVNAME, data->id); @@ -633,7 +601,7 @@ ipmi_err: platform_set_drvdata(data->pdev, NULL); platform_device_unregister(data->pdev); dev_err: - aem_idr_put(data->id); + ida_simple_remove(&aem_ida, data->id); id_err: kfree(data); @@ -715,7 +683,8 @@ static int aem_init_aem2_inst(struct aem_ipmi_data *probe, data->power_period[i] = AEM_DEFAULT_POWER_INTERVAL; /* Create sub-device for this fw instance */ - if (aem_idr_get(&data->id)) + data->id = ida_simple_get(&aem_ida, 0, 0, GFP_KERNEL); + if (data->id < 0) goto id_err; data->pdev = platform_device_alloc(DRVNAME, data->id); @@ -766,7 +735,7 @@ ipmi_err: platform_set_drvdata(data->pdev, NULL); platform_device_unregister(data->pdev); dev_err: - aem_idr_put(data->id); + ida_simple_remove(&aem_ida, data->id); id_err: kfree(data);