Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S967182AbdCXTbv (ORCPT ); Fri, 24 Mar 2017 15:31:51 -0400 Received: from mail-sn1nam01on0054.outbound.protection.outlook.com ([104.47.32.54]:11399 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S967073AbdCXTaJ (ORCPT ); Fri, 24 Mar 2017 15:30:09 -0400 Authentication-Results: spf=pass (sender IP is 149.199.60.83) smtp.mailfrom=xilinx.com; vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=bestguesspass action=none header.from=xilinx.com; From: Wendy Liang To: CC: , , "Wendy Liang" , Wendy Liang , Michal Simek Subject: [RFC LINUX PATCH 11/19] remoteproc: Add rproc_idr_alloc/remove wrapper Date: Fri, 24 Mar 2017 12:22:27 -0700 Message-ID: <1490383355-23176-12-git-send-email-jliang@xilinx.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1490383355-23176-1-git-send-email-jliang@xilinx.com> References: <1490383355-23176-1-git-send-email-jliang@xilinx.com> X-RCIS-Action: ALLOW X-TM-AS-Product-Ver: IMSS-7.1.0.1224-8.1.0.1062-22962.005 X-TM-AS-User-Approved-Sender: Yes;Yes X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:149.199.60.83;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(39450400003)(39840400002)(39410400002)(39860400002)(39850400002)(2980300002)(438002)(199003)(189002)(9170700003)(48376002)(305945005)(356003)(6666003)(189998001)(2950100002)(50466002)(6916009)(5660300001)(2906002)(33646002)(36386004)(8936002)(2351001)(110136004)(8676002)(50986999)(36756003)(81166006)(107886003)(47776003)(50226002)(106466001)(5003940100001)(76176999)(77096006)(38730400002)(9786002)(54906002)(4326008)(107986001)(217873001);DIR:OUT;SFP:1101;SCL:1;SRVR:DM2PR02MB1385;H:xsj-pvapsmtpgw01;FPR:;SPF:Pass;MLV:sfv;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BL2NAM02FT024;1:j14VT3vFAlKGcviOFAVhb47YfgqBx23qWW18i/Hj28HBxUmOWMh4v1/e3JM2rXduitE3iIvJaSNxT6JVCGNf5VMElfs1+C/mhlEJVL1v74IemModqiWEnwiCaCE27ZF7O1rX8tOCRYamiyLryvrzBTOk5gGLJC4XgkR5X5bxUqYbEreXzgdh/r9H/67K0h3kb8rwLN5D8tVsLaC1NlHu6Pt1iRXANm+OuHd4PcYc8w+6BDIvFpgCFeubfINyw46t8BmTC6LMAVpX3mKp9+hZjXN3ebK58uHtWQkyBwFO6BGgdLwoFjt0M6DA8BkOOKGG6suDsLJATPUSMf1D+0I7TqtKuHTEuS1Wm6lwINffQ5v2eqQPEUilNRSu3y4PWyZE3Nep86dc1LSjpOIstYWmMmg4HOAkNTcxQTXKwQwdfSkRhb3OmrveKlRMFwYDwLE6XY85s2Gxsv0wgGS7Cjeds0mrMVkcGR/cIk+gK8p3sho3NHVHymDJdORSITJCy+yZxkEbvXHqXqgB/rTgJ1dcUtV01JnYiy7FDXwHb2HOt2mGiew1aV3oaLR3YBUNKkZ7aawlY1Ah8Ln2rI2F07a2Mw== MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: 11d55f41-dcb8-4582-c4c4-08d472ec2945 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(8251501002)(2017030254075);SRVR:DM2PR02MB1385; X-Microsoft-Exchange-Diagnostics: 1;DM2PR02MB1385;3:kIK8sc2U60kJ6FA8dOsEMBsCLukmqpahFPpfV8Z0f5giBhXqW279B2e7ArulkOtWO3ezli55rM9jQNo6uraQjDGZ3h1sp4MZ116u43d3Qd29FBibT+0MyxtWlcRRlFSjksgD1+h7qyIXF1/Rms9uzdrW+CnCDZIaUeJtiwdez6a1ezAToivY9aJLk84Zd33wPvh20Bj3S2+qxiGUuVrwLa6+M1SO5x7Z/ba0c8WuILhCrnSDIlW8e4B1TVr4txXYxnIe+fkoymniQyMxAzdEUDfcUhXonGhksuKj9Q8ouWkOkIqmW5EMYFy7EfIQWpJqGIvCGDsskLidH2x9H9f1qjYY5X76SUzEzQz0/Gz1lHsSkDUkHcaPhnOPSOxoTnIqd/TpIulvO7nHQejXEOpl6eo98E5+jcnasMhH8NfeijU=;25:lyGghsGJPVvEPSYoWypGz0Gqk+E+Fzh3Xh9fUQMfz71qAwkPuB2VLy1mqpi43avoZY/w6RFqnzjBmh4SRnmtZNIsQP9yS7ctHDSC+RxQVOdeAvL+56dtqQbNeWzBL+b5GyD+1F0rQUvyvdCvMoXCOnP0WDEyDqI6FoSPmwtLN5bOSAB9EpFGh1NeqZ6wSa5X5tkpI8T7KupQAzvV3eWbdpAK9AapyNReAlp43al5rCktYRkTZIpgf9rYbzqG18gdsaAmaBXraT2U2Skp1Xv3Bk9F18eBI5UT8SSJ9Z+xQIHKkSm6oiB6GCQ+SFcoR0KZvT3/xvuMdmYHa/N5oBHQYMw0flG8ez1xG9pBk7a46zAC/h6B5+qycwz3d2meK1G6gnAyDWvUaO5PkHu/nb25zeFoyTCUkpvIx7ZZxS1aesBg6S2DoZ+T8nQDQXuW3JOGgUKvUj6lu4ZbvVbPKGNO+g== X-Microsoft-Exchange-Diagnostics: 1;DM2PR02MB1385;31:v9vgdvk6PCz1fbHLqLvPw4rnBYXW+fiNjUxqRLBC/nmRPqTO7z+L48XTf4Hadacz/0LiWAvxZ1JNqfgLND23Qn+7+8CIx0vLj/KChbRdW4+pbA7HPZJtve/6JriH58corDPv2/YK3VOhTQZWftYyclub4lUdjKlaKOzJ+2XreOLKxsRr70rhXR8PhQOkwwMMAcRgV7V/7UR8Xm64rLJyoeKch7dOsN+5NiZCXEcKxjbuaVsjLvH1pntkRE1qfgTrKno6ggTzsFr6zxHfSjLHkah6+3762/SgxWPhFAOo/gE=;20:ptpU12AVtSGQ7o0HD/bJNcc7ky+Apd9DEUSfGnHXVxdsYxuEy6JQ+QVncGpJRZdJajoywnF3fTgz8TNIeP9g1UGhF/hPgYnlOf5z/0vzfDd8V1IH5PMNpHQT07vP8qZtMlUsiqCBbOr/PbKEgejI/6ODCeuvs6/kRqHrUL19btme90Lq3oM6gmqTmjTr9gn0PwA2kr8HEpHa1jksWDRSY/i2ze05JM68mo5BLV4Av+CTpjckgOciP1m5cN1o2qsg9dVgi7AwcXIyHrtPsvFTB9n8TldX7X0uCq6tdTnpWM3lKbMtrx073sTbKElSz2dtX+TUikDwj7U2NogxGkHxU3FKDh2BerlfSjGfmbMetLYxyS6T06mWhEY91f5i8nTXXnH7GA7OqLVq5LtF6d7MIgMx8AwzqwtDHQeSc7u/p0UOAiE0oWhXxLOIzfejjZjQmXp3/K3gIj5DND1xqKxu0UgkMzVAjl+Sd9DPKXbuY9yiewsos9wpc+GApV8PwHGc X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(192813158149592); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(13015025)(13024025)(5005006)(13018025)(13023025)(8121501046)(13017025)(10201501046)(3002001)(6055026)(6041248)(20161123564025)(20161123558025)(20161123562025)(20161123560025)(20161123555025)(6072148);SRVR:DM2PR02MB1385;BCL:0;PCL:0;RULEID:;SRVR:DM2PR02MB1385; X-Microsoft-Exchange-Diagnostics: 1;DM2PR02MB1385;4:AWzYq2gr0BN3clbPacbFQmMP37kNvqy7JRLtl3mdWzyqU3Mddt/XW6+PQXyJFX+sNNUbli9Ql30FGC0qzE2Vu53PV/tmYzG4cGGAwVuh4hacyDwMQqNZlgrFufwv9EeQ1VHIRe8pvc5RKx/fYQ+EXz0v4tXnoyQ1/4ISQw7VrbZTmExn/4Zo5LMEStKCJCp4NCYgFEqe7GyU7naxiZ37GEX8R52KKYj7Zq+daMn7PmAstx6SFuK3EK8kuVLQyMXLA46KilUr9Ha8ZnONOj09zaptcPK0adu+WIKUU+n4YwpDKlqes+8OsRoWCLeAyZpHX2g41bFkjuiN8RYSBDcCTBohpZtve1NiyGb3RnIszbMsHnSTxWH67YUnqvHTqY0VEDRAxGiaR1Trd8BKWELmYMy+e4Z0OqpL+b9HrBz4STfu5+lXNJ+DWYOb85CS0Da5aSH31aUQ1k0G+6EG0qolQ1chELHVjPU1nNzN4+U7fhwgwdjNTocDJcw++iuNgsiEhMxP6QxaXXymE1VpHxKC969pDfkx6afsDKbsmJRYncRnBpZPOB/dQuhWW2sh3MTYkBbgXhaOTW+7KMqq60eNPW1yVNCyaUyxCiPWhZc2uGocxJlcs/3V5THy8DJVpsqnhYQgwyKUaN5P5ab3RkpaQO3lSVKAnglBEPAt/n7J3L2a49HapGxLORs6PvoQUIW1WeOFDhyQr7pqM9cPfo4drPLX4C2N/0FM9jwnxPOps8EO/TsBr5d2aMF9jwL4qn6GDPyji99EM7mGg/HvQbCr3g== X-Forefront-PRVS: 0256C18696 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DM2PR02MB1385;23:iXdO2zdgRYPVMsR9RWfMobKkO2VzmYS5z9vZiu9xP?= =?us-ascii?Q?vD9mLySrq2ddRqphFhAbKpo7Xb2O+aRupKI7G4u7EYk5hRBr4y131ETmt+P+?= =?us-ascii?Q?+wEaSTb9hQ7h/iARtyQM4mG+WsqBFsc1pSIrOIDtChbUsUWJxw4P4O2wuy4M?= =?us-ascii?Q?WeykcOq3gnRPZjhpvpp89h3YcSqaUZ1aVC096Vag4+bG9VLYiif8yDahLZ5G?= =?us-ascii?Q?lAiDjvzuMFJ2/6Bas69J6CTKMhFIP96T+t+WWTkGIRYekmirXdxk9VInmGE8?= =?us-ascii?Q?LimXsBkFFxpZOWZ0ZLVhpIZae/Jd9SQS2hl9rMAKzIUuNluHykt21yahl8lz?= =?us-ascii?Q?zHaAoI27C4wSkGgXV4fKRrO6GUa+5+I2Htnhm6EuFfeByV0FBDJF2aHUyyjM?= =?us-ascii?Q?hj+t2PnTiTfXGDQcc7rtzZrhq+T9OUNkU/XzDiFKhS0X0xlTWsfYTu8GrfRP?= =?us-ascii?Q?OsgxcOfXhIcuYYHgvM6+0VrfYH+FuVpw7GWDUgbinpIN2XcxHUyDKLXmTSL4?= =?us-ascii?Q?Q36iZZlCc0ZFVKGqzV8Ii48cNQPuTzNq7/LoIj7SEzNugPGtOwqtc3VdJQaT?= =?us-ascii?Q?B6/cYduYhPwbqavrtRWY5ZkgVawrC5SaRmzd1qt84Xt6ZvgItdq0oKcFAVzs?= =?us-ascii?Q?ouviQ3Y0x4a+YSDRarQxwk7rePsXTPaMrVut+rgJs3XyW7RRUJB9a9TI/E7k?= =?us-ascii?Q?y/ZCQfeArRcezg6aEpoeVSMHAJ6Zaft73pcKfdidaUViIqhFt/mdaU1bpkP2?= =?us-ascii?Q?uH5SCzNWe4PqTbZuywjkq7SNeI1hc8Mxo2EF4XXPzAVCmjPmaKm1lp+e7Zka?= =?us-ascii?Q?IVU+6GfaRZi8R0p4EQ+1DcCN1Ng/8Xe4sBPx9LwI8xAdLmRUltLXbadWlckE?= =?us-ascii?Q?p0e3RAGX8AyEUVn+WjM7Pr6R86AHmQJZfyE9HtyHSR4kRRWFiLdICfg4Cwdx?= =?us-ascii?Q?dQIPeUD7LFFoorAw4XXgI3Hi5eJwk4ANcWEy9BBuyHvwBo+9G7OwXf5dkT1K?= =?us-ascii?Q?OfPniYA/puE67FIk0OrRqBBOPjhmsrJONEThCyYwXUTSJKkOmR+44P99PkQc?= =?us-ascii?Q?1q0l4iQ+n0e/DGZjBwiry+d07vC?= X-Microsoft-Exchange-Diagnostics: 1;DM2PR02MB1385;6:sKNTvYGAGi+Ku2K8Z6PSGfL5g4lkfWQY1o1FSAEHZ71yw5APAKGnJ/cZL7OTGcVI/1mKHkoscd+w16lDJaPZmTkfg8jg/ajaZJNngM/UE1QwnLu3uPZ3gw7IkEftsnRgIStv7mJIWYtRQLTRZeGlR7/mwl2hLfOiy14zQceRAJb/NJZtUBDKtTYoEB+bsGuLgIkhzdARMpe66oUY4Tejdu/JRLEhX+pqBsJkJ4l+RlC41f2KY/F2hchPL732aYI2fgKrOR5obWhyePeCxLgoab9w9XQT/R7aSE+BThOmsvFuEFMD4ac/O9p65gC4E7J3lwi9SlHvAXXin4JQ8Veuq7EsVbnuSiyYpuEYeywZ8kPIpvClyzxbqfYFZj+0/TOP+8Ig7tM4/imgUlNcvITlqx2XqSZPk6k36zPMnP6/56g=;5:la9z2dexZspcXEdZ1JxAJzA2ZOQMmaGInMfX/lVaP3ZCLhXOfTxXbrkL4X04FZbK++SdxJ7M+mGxJRSBVnPI5/maonYtouvufdXRtAHUALNqeAhJXBlg0EDQjOF9m7EVpIXfCmyGHSmwdN19R+tU6g==;24:1oa+v9QLSsSA4ygQLnHXi8qQQpmdGtR1LdVpPAPK/lke+JjS2CmClKX/enY24IOPvo2T75RIgBTqnQR5upIZDEwKwwcxnb6JG8cRlmjBw2Q= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DM2PR02MB1385;7:r+OrzOiuKii7ZLsf8/1Slo750PQ64JV8b8DUfWZzAzsgiAD82gDTQJy4Wjbu6BrqWwIu1nm7qviZU98ZXVG4BbzXEnbJaeIamXPfs9kmFGY34peyaqwCZZFIgZ4Rd5ZtN+TSZ5GVLesdNvGOJRGtlcCdyg7aUOqzgRnygDU/nqlPj94gdNZYIHcQcHClaRBdz4uWGhZMRNATgsQ0TeAbUhLyaUgkWsBC0nWHYbf6fR8F92Ixh3GBug6iyGdaOMy5ZKfyDZ5F89YsVXjslbwz1F8ZPdNcs1cl/2bQRW1qdrjpj16XqxMspHhdYTuR7VO/2vBGiwrmNcmVUsGWXoJWGw== X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Mar 2017 19:29:59.3556 (UTC) X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c;Ip=[149.199.60.83];Helo=[xsj-pvapsmtpgw01] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR02MB1385 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2644 Lines: 88 From: Wendy Liang Add rproc_idr_alloc()/rproc_idr_remove() wrapper for id allocation/removal. Signed-off-by: Wendy Liang Signed-off-by: Michal Simek --- drivers/remoteproc/remoteproc_core.c | 46 ++++++++++++++++++++++++++++++++ drivers/remoteproc/remoteproc_internal.h | 6 +++++ 2 files changed, 52 insertions(+) diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c index e4fb289..d711345 100644 --- a/drivers/remoteproc/remoteproc_core.c +++ b/drivers/remoteproc/remoteproc_core.c @@ -140,6 +140,52 @@ static void rproc_disable_iommu(struct rproc *rproc) } /** + * rproc_idr_alloc() - allocate id with idr_alloc() + * @rproc: handle of a remote processor + * @ptr: pointer to the resource to allocate id for + * @rsc_type: type of the resource for which to allocate id + * @start: start id + * @end: end id + * + * This function returns an ID from idr_alloc() or negative number + * if it fails. + */ +int rproc_idr_alloc(struct rproc *rproc, void *ptr, unsigned int rsc_type, + int start, int end) +{ + struct rproc_id_rsc *rsc; + int ret; + + rsc = kzalloc(sizeof(*rsc), GFP_KERNEL); + if (!rsc) + return -ENOMEM; + + rsc->rsc_ptr = ptr; + rsc->rsc_type = rsc_type; + + ret = idr_alloc(&rproc->notifyids, rsc, start, end, GFP_KERNEL); + if (ret < 0) + kfree(rsc); + return ret; +} + +/** + * rproc_idr_remove() - remove id with idr_remove() + * @rproc: handle of a remote processor + * @id: id to remove + */ +void rproc_idr_remove(struct rproc *rproc, int id) +{ + struct rproc_id_rsc *rsc; + + rsc = idr_find(&rproc->notifyids, id); + if (!rsc) + return; + idr_remove(&rproc->notifyids, id); + kfree(rsc); +} + +/** * rproc_da_to_va() - lookup the kernel virtual address for a remoteproc address * @rproc: handle of a remote processor * @da: remoteproc device address to translate diff --git a/drivers/remoteproc/remoteproc_internal.h b/drivers/remoteproc/remoteproc_internal.h index 7e25621..865bd1c 100644 --- a/drivers/remoteproc/remoteproc_internal.h +++ b/drivers/remoteproc/remoteproc_internal.h @@ -94,6 +94,12 @@ struct dentry *rproc_create_trace_file(const char *name, struct rproc *rproc, int rproc_init_sysfs(void); void rproc_exit_sysfs(void); +/* rproc idr_alloc wrapper */ +int rproc_idr_alloc(struct rproc *rproc, void *ptr, unsigned int rsc_type, + int start, int end); +/* rproc idr_remove wrapper */ +void rproc_idr_remove(struct rproc *rproc, int id); + void rproc_free_vring(struct rproc_vring *rvring); int rproc_alloc_vring(struct rproc_vdev *rvdev, int i); -- 1.9.1