Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S967192AbdCXTcC (ORCPT ); Fri, 24 Mar 2017 15:32:02 -0400 Received: from mail-sn1nam02on0046.outbound.protection.outlook.com ([104.47.36.46]:44064 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S967068AbdCXTaH (ORCPT ); Fri, 24 Mar 2017 15:30:07 -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 19/19] remoteproc: virtio: idr_alloc for rvdev Date: Fri, 24 Mar 2017 12:22:35 -0700 Message-ID: <1490383355-23176-20-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)(39840400002)(39860400002)(39850400002)(39410400002)(39450400003)(2980300002)(438002)(199003)(189002)(9170700003)(81166006)(5003940100001)(6916009)(8936002)(36386004)(305945005)(50226002)(2950100002)(2906002)(48376002)(5660300001)(50466002)(189998001)(8676002)(4326008)(50986999)(36756003)(6666003)(77096006)(9786002)(38730400002)(110136004)(107886003)(47776003)(106466001)(33646002)(356003)(54906002)(2351001)(76176999)(107986001)(217873001);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR02MB1382;H:xsj-pvapsmtpgw01;FPR:;SPF:Pass;MLV:sfv;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BL2NAM02FT058;1:sPDyzBVvheCIT0pB21VoI7NgLE5FYphVyPYTlkLfdDysnp06vqlw3q42WZyQZe+uyUELPjg0+DTZR/e6iNc4hSjl4PRXnyG2l51OyPri3u/YZmvOUwf2sDPWE8uZ6SUIEk3NVrLyQT5x8T4yYMO62GkpKI8eOkV+ml+cGfwEbIR56KE1nJnWEE6UlGrP+W7/Jskeu8GRvz1heysmyhTNQBgbPutKBl2G1nZxQx7cJf5mN4zKaZt3PX/AIoXKR1zCihpY+Ejev1LfKgNB5HILoOmKbC7vIIpOEq9QV6UatJy6zBKOvDuH0WFhwIPkuXDsy0CAysxe/7RR/EMDtJqNdK/b94VAgSLdSnZTGk6ZsmRiQNuff6Q310JORHIQ5WIdFTIQKs68qn7cZPMfpsWi6+2nbpdbPc1aYM2rQNOHXuoPOydMhptdfVqePcWtpjjoUfa5FVUebkgIZV+CjGAK5HYC3dkfU6wnZjfF5oyNRQWPAKeGooAtwNwfNMEpXUOXRG/MQUB8F2Et3al19Qfy6wMx/uNIr84QynGFwB87WeKg6CJAh6umTGC4auxl2gj2dcdJcAgpWESFeh8r2DFKuQ== MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: 5cd25313-5707-4a2d-b8e3-08d472ec28f1 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(8251501002)(2017030254075);SRVR:CY1PR02MB1382; X-Microsoft-Exchange-Diagnostics: 1;CY1PR02MB1382;3:mXkEI9h+c5zGk4gdQz0gxhzKvvAWdA8tRSaMObtPwPE2p/79+4u4yUweYWPjMmgzHF/3KlLQeeSRHiWmz1CHcfwRWhiWMaOC6a1e+2TMpvHyALo2Ia1N2c12t7AwnXPs9h4thkqJ2JaK8yT+Mi9NvWWkxO5JeQycAwGondyeqzwqL4IUR0QL+3LbWyjhbp3kgOAQAXVBAYnpX131+XBtTUQaA2kz/HsddRVi6/WqxDKf5jzxj/8D5Qqc5SSBT6QapbdrM+b9bZRT/ATGjwCKKps99Gfwdp1yTCz00Gk5lu+ap+LCJsvU4BWZoqARYd5tTwXp3CtKRagYdNLyA/mAgUdLbc14h9/8TOHhL8ebw4A+YdN74IIOCEEJ5/fW3FwV01fxxAbDvDMpEBaZ6TeuMi+PbwS183kG2diy1HFFtjs=;25:O4bHUbXAy5XYq9Hb//UaxmKVCDwOd35kaH3bdNOZ0LQYAAkhYupUTyL5INE7t6FWwviIMK1WFV3xEKn4lBHbljIqyayRixBrt0CG3mY8r7fyJg0bE5RkVqF4qHKt27eMUGkhbObjKj76i+tDZ6tr3lbeZXSCKm0MDHkoONSJ6KmsJu6Uap8kMT9BeqCPdzTASJ9ooT+wW/MsYpa3/s0nR719o0a4pf0GOlgOo6qO5y4Myl7FINFIAF6fQ8boU/qCjit5WCFQ9+oSETINQLcZRx5AD6hjMTcZhFIBGDGm2Rnm1N2fxWbBJ5P1kyVXNZUliRMAJEM3ykN6Hk99DlycGi5jVwp5rDfKYsdpLlPe8HEVL+oDBVFqJGHFJecNj5hcW/0RV7BnnJjYuI1hoCvsPn+2PGxPwNj+FagvoNpGN/EpJLFuMO2126s3wj+sorIBr/rVYAZjXSDSvBxrYpzN8Q== X-Microsoft-Exchange-Diagnostics: 1;CY1PR02MB1382;31:WnXpMovClPMuKS6FlmaGBT4764UAEtdqAnj2tQQ33N6s1YxPgfGMBMv+YaxPriOeQqbKtPgvj/uLTVzoiMAwv1gspN4mRoR9hj+rmdvVjubPMCSYbQHI4WvcJ7XM0U6nq/8R5DUptaDV4Tv8AVkU4iDzqBC0Y8osWKrg7NrqcQx6QBCUKCnBGMoQjitUtEE78Wb8+Qh2QhbQLjzVHb25lEXqQLTVYSzEUHax01btJPZcru03nWxo9FYaRQBm+QYts4Ln5zTKk/WcnqtAScRWGr1X/unrvH32M84fJQNrlGM=;20:W5BD+i6HVkuj4wBJ7JJsjI6ul9gfklg3L+DzmLa5KeVFFMgt7VVSGV/Ks/I/4x2pFTmn1LHxuJsH7/PgivZc0sUgmYwb1pvD1isqvYHI4yTa8V2A/bCdZE/Sp/+mmXlv4RqiihPkhDrVDT+HFerMad0tZTt2cCeApksk+bJu+h5Z7xh2R3Sk/0V5w2f3zpLofLNtPDUEOWOWRxtYt0ErpwsfMGP1UF9iL9KtCok81ELNOFS6gi5BjGKziVsCinL+O06+YldktfIjTyUM/e+gU++CqgADAt+8yOSXIH0cHWJuoprmcwsBgEgQO+0Ih9C2q+PydhGyrmnpWtekpOL0g8+6GxYjdCf5/ZAWMOwvnqEIgFvnkPApEPstuUe0JRrdDgVCJcN2ce2EyFgf4Vt5XZ1wZL3PGgEsWhLWOE2/EyoEO8evAeTC35ouFV0hTwwmIbojnRHlvUWXrCH4Wfa64VRNGOQkU35Rm/tHnbL45RKPS7Eqguofc5XZV7hJc2lN 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)(13024025)(13023025)(13017025)(13018025)(13015025)(5005006)(8121501046)(10201501046)(3002001)(6055026)(6041248)(20161123564025)(20161123555025)(20161123560025)(20161123558025)(20161123562025)(6072148);SRVR:CY1PR02MB1382;BCL:0;PCL:0;RULEID:;SRVR:CY1PR02MB1382; X-Microsoft-Exchange-Diagnostics: 1;CY1PR02MB1382;4:gUn8W4srsnhYygDCrlfSSqVXx59QBnGkJbTmTUPeC73cPX+t8FeB9GO53Gb2V5irxxwol/y2Q00qVnbVFiKoptl5tPc+kjesDaIseO27DHZiNEI+A6ibZOg3bBbt9tYgTYscu36j1FISKNLeraVtdu3xyDxmUCnoXRg9TjAPmLxMgM0Y6YSdzc29+aZ8byGEKTBcvoCPl8BqWz0eST3bmVl2LXOblnyjknCFgr3QZ/lOVfiEJLrUeMDD/apopMu8Mtg5f4svz2oRoZiPNtDUDWR8wMbBytwGc+viEUv50FDTW3b1OzRK9qu97zHVu2+1+QecERD6OKtPKZRXfaCGp/ykRUcBZ6X0HAr9ry3F4dv3Hh/LDGTBoRnNW9/LW8Vch2Wa2uOWGOkvaVyVfZ6DU0EoXUIIpUpv+a3gPX3J1KvYa8QnovAW1RTrLAkW0nJbpyZKYRqZPTBt3E57WnqvmtbzFwTVSCxuWj/BGUai4MxhInHI8XIhA6TEFpHPhrfi5QTwn0r+IWvpbK+hwCIX3rKqoj+ndO8nNKQq+iMQVagEQxzB6Ek7dTM1yIVGEfs1Q95KLW3y26xpIPZf98AKngL/2GY/IcAQGKV1RFbZzKSoj460ccFaMVSwQAV7CcGJs7wBBkNdtDftMq/dMOT0SN3a0UpyCiaT2CN2Mwvfp+B5LAFDZYU1RacN0g0CwgLJXGc9QDT9a3+ZSNh2O5KEDpTkHAey6ForbYGzWIR8Zs60ho6QKuNDTd5mW9qDTBgfuame4VBfiGCglOmmABraeA== X-Forefront-PRVS: 0256C18696 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CY1PR02MB1382;23:E1lsP/E6XmPxR9c4GpimZCHGPGYiQXkl4BUZmsHXF?= =?us-ascii?Q?Xd8qk5xLv6/xSQn4X0Xfqo2qVsNz0oxofR5/tKZRGF0TuuTfxGup+IEuNE2H?= =?us-ascii?Q?XrXw/g8ciX8x4oVAVX888pyttsnlccouQ7HRBG7/6P8UQn9uljHBl0ijoCAW?= =?us-ascii?Q?U2TSAKblVU44EFVOVJRIGohD/lMd2U/LYGw3MZxcGksw3Q3QsY3g7NID0vJn?= =?us-ascii?Q?DFMaWTzHHl6pB7VSeD3teF2w1uSGXZl5W4UKLegKxw1dz0idqV2OO3h9dLyl?= =?us-ascii?Q?ZrjpXXVjxMKzAaX64RKVsgtSISZSqfQ3a8jdVXMizqLwz3usbksVKm6rVOcj?= =?us-ascii?Q?4WG9bC+DPUS3mhhR5Yikd8PnWmFIEqDf+tltM9TD9XZ48PGboOB23mhJY2dM?= =?us-ascii?Q?UYv7LJv7NcQ0GqTaB+aZpQEiKbfWLIPJkIJG80D1Y2zejkSlKnUReDrsuVp2?= =?us-ascii?Q?U7D59cqH1GPSbW9IqqkXponOpYQKdKZNd5DIv/e7OtAYMzqKM8SSWiIk+wNJ?= =?us-ascii?Q?JxXIj7c6SZn3PWmNh4WwMNpOlser8cJMMIGDzFUwqHiGxL36jNu9iEjFyTEj?= =?us-ascii?Q?KuWCO8NbuO+xTCNiSq5gYZNX1FmXARrb4oPUnCoHl+1zdOfoRyQIs2ypnBEY?= =?us-ascii?Q?iAtfAm+UPoy2XLXepIucwnIhfZJYCdHKJsP/i9vTF0ikiWptoiRCbGeFX19b?= =?us-ascii?Q?XBqiPRstMl4p/nmi/w9vrBYc4WGqBHaqarMVx+0M5mwcDIGEd7aAf8y3jJRn?= =?us-ascii?Q?ePlEBLk3hECQPFG6CjM4KMQRKItk600vvg1cXaHMxxHT9MQ3NleU1RVw+GZh?= =?us-ascii?Q?peX/fQffZkP7SnXfcsD0c3/xh2HttpPRYdSJ3cjJzsAkL8eK5SigUc1RSrZW?= =?us-ascii?Q?BXc8owT8/dv3d8tglffSkivBNVcsGKZciVlH+kJG6/hitpdHSbjp95AOO1dC?= =?us-ascii?Q?fjT4CDMq/X6tFzw1wsafu2OUzsCQBBRbdDNLdT/5vw8CiU1iekkJkG5iMVAL?= =?us-ascii?Q?5D2kCvqOnJFQ0IgfjDtQye1WKGDGkROCCjwWuhkPmfIF5MdtBHpFkSZr0srT?= =?us-ascii?Q?Pu2bVip+lgO9os4SWTPxjvA3Jgm?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR02MB1382;6:EbMFY/t5uM9gbC3mIt64vZjBXStiZNSsdui0sysBT0xzS98fiDN1/n3iTe3f8RQP8ZGvDM2qUU2FUAjNbcAC8AYhlO/zcRZmK0L50feeyNpkQwRnGvXgXbZ4EYfVwv7cldNG48D5beYRKMyLUYzUuwb8DxnGNEpSTdCxFG/8XAK8N0sf4eK8uwLb1Fvq3D44ejgnn6o18CyMMmHvz1NaEiPIPMRGvZU5AhrcCbxQX1RREdnpHmWZRdfbmqS0ZhqhWRIe2hPl6gE52ejs3jjiTtQRxJhz8OW7kWQo4sZFKlMwguDYlfmPvDt46rH/6J66IMW0Eu35laF0vnURrus5V7TSgoDibXfdpdTG3nw02hVmid00Ibe406dv429P/A3QokfNR7w/P0pRJUTOMBB+ZzHCZJw7q45sK1Naq+d/ewY=;5:kQJ7t4GhrWeY5wkgI/WHuEFwwe1qqFrYmRdtkHx36tUnb4kZyd2aQGqWXU0fPpS8S6tpCngk0JRuTsZB1GHQU+lu/dB2lmDGvM47Ak7w3/Y3YT0YB5Sks8AIHHgC3YRPgwj0JgRgR7nx8uthgbmk6w==;24:eb6HfTAtGv6dewH0Dx5PW4xT8pcZEAF6m6CfiPORfoMvCuy2AyjwQHOICEHFWKhLBAkYeLKe4Ey7DQx9RMIbZGMTF7JODmkq9VU3JAof+KM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY1PR02MB1382;7:913cvAFEGplpwu1NtUu0ZP3z4c3mBsPafPr9NMF2lk0lsLrDnmqGarqUgPcNdzVv0R5AT3VaCsInJeHIfKXfuSegTEZ2oAhFHTss6TEZ2mWvIgpg6LskrP9qMcxHsDwvKfrH1UdHAVhqT3wSerNcyDhLRcJaKd8hq3tzO+o/0ppiWbMOlverWTWIq1LYkCKW7GCS/uFoEURHG5VOH4WbeiVshCQb/IQAo30WRYdNIDW4MUkL9/HbwtHBi9zn1MGnuwtmfDzXh6anZW3V+BgeTABbUc4I+grXurAz33d+sznSdqaSPL8rk6vu6iN9BpOPzJr24estsmVrFNK5XU1EXg== X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Mar 2017 19:29:58.8204 (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: CY1PR02MB1382 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2746 Lines: 85 From: Wendy Liang use idr_alloc to allocate notifyid for rvdev and set it to the resource table. Signed-off-by: Wendy Liang Signed-off-by: Michal Simek --- drivers/remoteproc/remoteproc_core.c | 4 +--- drivers/remoteproc/remoteproc_virtio.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c index 62c0356..35cebd8 100644 --- a/drivers/remoteproc/remoteproc_core.c +++ b/drivers/remoteproc/remoteproc_core.c @@ -271,12 +271,10 @@ int rproc_alloc_vring(struct rproc_vdev *rvdev, int i) /* * Assign an rproc-wide unique index for this vring - * TODO: assign a notifyid for rvdev updates as well - * TODO: support predefined notifyids (via resource table) */ ret = rproc_idr_alloc(rproc, rvring, RPROC_IDR_VRING, 0, 0); if (ret < 0) { - dev_err(dev, "idr_alloc failed: %d\n", ret); + dev_err(dev, "rvfing idr_alloc failed: %d\n", ret); dma_free_coherent(dev->parent, size, va, dma); return ret; } diff --git a/drivers/remoteproc/remoteproc_virtio.c b/drivers/remoteproc/remoteproc_virtio.c index bf3be6f1..117e7e3 100644 --- a/drivers/remoteproc/remoteproc_virtio.c +++ b/drivers/remoteproc/remoteproc_virtio.c @@ -361,6 +361,8 @@ int rproc_add_virtio_dev(struct rproc_vdev *rvdev, int id) struct device *dev = &rproc->dev; struct virtio_device *vdev = &rvdev->vdev; int ret; + int idr_start, idr_end; + struct fw_rsc_vdev *rsc; vdev->id.device = id, vdev->config = &rproc_virtio_config_ops, @@ -381,6 +383,27 @@ int rproc_add_virtio_dev(struct rproc_vdev *rvdev, int id) /* Reference the vdev and vring allocations */ kref_get(&rvdev->refcount); + /* + * Assign an rproc-wide unique index for this rvdev + */ + rsc = (void *)rproc->table_ptr + rvdev->rsc_offset; + idr_start = 0; + idr_end = 0; + if (rsc->notifyid != FW_RSC_ADDR_ANY) { + if (!idr_find(&rproc->notifyids, rsc->notifyid)) { + idr_start = rsc->notifyid; + idr_end = idr_start + 1; + } + } + + ret = rproc_idr_alloc(rproc, rvdev, RPROC_IDR_VDEV, + idr_start, idr_end); + if (ret < 0) { + dev_err(dev, "rvdev idr_alloc failed: %d\n", ret); + return ret; + } + rsc->notifyid = ret; + ret = register_virtio_device(vdev); if (ret) { put_device(&rproc->dev); @@ -402,5 +425,11 @@ int rproc_add_virtio_dev(struct rproc_vdev *rvdev, int id) */ void rproc_remove_virtio_dev(struct rproc_vdev *rvdev) { + struct rproc *rproc = rvdev->rproc; + struct fw_rsc_vdev *rsc; + + rsc = (void *)rproc->table_ptr + rvdev->rsc_offset; + rproc_idr_remove(rproc, rsc->notifyid); + unregister_virtio_device(&rvdev->vdev); } -- 1.9.1