From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Return-Path: wendy.liang@xilinx.com From: Wendy Liang Subject: [RFC LINUX PATCH 2/3] remoteproc: add rproc_mem resource entry handler Date: Fri, 24 Mar 2017 12:22:15 -0700 Message-ID: <1490383336-23117-3-git-send-email-jliang@xilinx.com> In-Reply-To: <1490383336-23117-1-git-send-email-jliang@xilinx.com> References: <1490383336-23117-1-git-send-email-jliang@xilinx.com> MIME-Version: 1.0 Content-Type: text/plain To: bjorn.andersson@linaro.org Cc: linux-remoteproc@vger.kernel.org, linux-kernel@vger.kernel.org, "Wendy Liang , Wendy Liang , Michal Simek" List-ID: From: Wendy Liang Add resource table handler to handle fw_rsc_rproc_mem entry. Signed-off-by: Wendy Liang Signed-off-by: Michal Simek --- drivers/remoteproc/remoteproc_core.c | 37 ++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c index 3dabb20..0ffd9dc 100644 --- a/drivers/remoteproc/remoteproc_core.c +++ b/drivers/remoteproc/remoteproc_core.c @@ -720,6 +720,42 @@ static int rproc_handle_carveout(struct rproc *rproc, return ret; } +/** + * rproc_handle_rproc_mem() - handle remote processor memory + * @rproc: rproc handle + * @rsc: the resource entry + * @avail: size of available data (for image validation) + * + * This function will handle declare the remote procesor's memory + * as DMA memory of the remoteproc, and then, the host can use it + * as shared memory, e.g. vrings ahre shared buffers. + */ +static int rproc_handle_rproc_mem(struct rproc *rproc, + struct fw_rsc_rproc_mem *rsc, + int offset, int avail) +{ + struct device *dev = &rproc->dev; + int ret; + + if (sizeof(*rsc) > avail) { + dev_err(dev, "rproc_mem rsc is truncated\n"); + return -EINVAL; + } + + if (rsc->pa == FW_RSC_ADDR_ANY) { + dev_err(dev, "not able to declare rproc mem, pa is 0x%x\n", + rsc->pa); + return -EINVAL; + } + ret = dma_declare_coherent_memory(dev->parent, rsc->pa, + rsc->pa, rsc->len, DMA_MEMORY_MAP); + if (!ret) { + dev_err(dev, "failed to declare rproc mem as DMA mem.\n"); + return -ENOMEM; + } + return 0; +} + /* * A lookup table for resource handlers. The indices are defined in * enum fw_resource_type. @@ -729,6 +765,7 @@ static int rproc_handle_carveout(struct rproc *rproc, [RSC_DEVMEM] = (rproc_handle_resource_t)rproc_handle_devmem, [RSC_TRACE] = (rproc_handle_resource_t)rproc_handle_trace, [RSC_VDEV] = (rproc_handle_resource_t)rproc_handle_vdev, + [RSC_RPROC_MEM] = (rproc_handle_resource_t)rproc_handle_rproc_mem, }; /* handle firmware resource entries before booting the remote processor */ -- 1.9.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S967085AbdCXTaQ (ORCPT ); Fri, 24 Mar 2017 15:30:16 -0400 Received: from mail-by2nam03on0066.outbound.protection.outlook.com ([104.47.42.66]:39664 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S936009AbdCXT3c (ORCPT ); Fri, 24 Mar 2017 15:29:32 -0400 Authentication-Results: spf=pass (sender IP is 149.199.60.100) 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 2/3] remoteproc: add rproc_mem resource entry handler Date: Fri, 24 Mar 2017 12:22:15 -0700 Message-ID: <1490383336-23117-3-git-send-email-jliang@xilinx.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1490383336-23117-1-git-send-email-jliang@xilinx.com> References: <1490383336-23117-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.100;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(39450400003)(39410400002)(39850400002)(39840400002)(2970300002)(438002)(199003)(189002)(9170700003)(106466001)(110136004)(36756003)(356003)(189998001)(107886003)(33646002)(4326008)(54906002)(38730400002)(77096006)(2906002)(2351001)(5660300001)(8676002)(50226002)(305945005)(36386004)(2950100002)(6916009)(9786002)(5003940100001)(6666003)(47776003)(76176999)(50466002)(48376002)(81166006)(50986999)(8936002)(107986001)(217873001);DIR:OUT;SFP:1101;SCL:1;SRVR:DM2PR0201MB0768;H:xsj-pvapsmtpgw02;FPR:;SPF:Pass;MLV:sfv;A:1;MX:3;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;CY1NAM02FT030;1:+jY/Of53vz8YOY8BwRmwi8/cppFC2JD8wwcTQKw0WIme1r8rNl4tTY06yIg+FOXXJHbMFTY7hhXZbV+40zqkY+wOSzku/9A1fdLRkzdsNjBYNWybX51S0YklJy6IUINIuWIcRSyE4ZSXTLo7eUgyny+/aVI2ckAAbc3THElH74Na10Z085QAQMdz9gphL4Xo2DLnJDstPhxqxdBNdt2UDdPvac0I2JHBzF95QCzlZu0mXgr2xQSyGQdtFrs5RCW6v71hxb11+h+RDyDc1tztEj5Jw4m5npK8bnRwvYTf4g8Sy6mODDIs7Qa8h1jpTSBGVOmRVG3CcSXSAB4DfbA0PRCtXD3w2nNdPOwXcmx9K8Z1TBsZJPL1D4wrtffiJWj8cfZWz1ybNTEK0gP7PXug2IQBVUqi7eTUQxapYE79rtdiFE3aPdAxpk7lM3w9rbUqg0vG4uDbN4i5DHJy4boZTwurnNZw7gPmwl6ypb4zhRHw6a7BbJw/5jVGa9PDs2DwEGOmPuxmu9iAqEiiweF9If/jE0331qlEOLRRtT1RBMUg3yLQkq3+jDkRHDpOhwDJmnr6iKUWOvZNlRj1le4Bvw== MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: 62740733-df99-46cf-2dcd-08d472ec1688 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(8251501002)(2017030254075);SRVR:DM2PR0201MB0768; X-Microsoft-Exchange-Diagnostics: 1;DM2PR0201MB0768;3:IiE+VIIUgTd5GPbSMDPgIiZjKxbfrMad6bU061LHn//2zb5055jB6ccWf+HZbM/FBiMomdzPm6ZwsE+YEsYlDBOKhxT1RjONFbJBl6+AjF3XT67u6OqMa9K9kFE1hfvbPwOPc0hdhJm3vrGZXwolCXtMguDbIr/FyTgo1+2frHsOHrQtxm2nc8wMxn1+eap6p8ghkWZQomYFSfpPA4lQh9UiMxLxpv4L5q77xixwCayeSTcWEK6dUxhXVAA9SsdwY2TS5VFK3YQu3HaVsa3QPS5hbcEWdnh6qOLzeohEUE0yt22VYysnjwg2oGTROpWRgbFcZEXWKT6KmW9ulm8qWSbHq81RTZM8pbsZgT7SUxFQj9zhY4VLSVZbR0bvuP9TfkYhaDkcfhvcQdSkXCJl3/tEgBPQ09pTABCPtgZsekphR+F3+bBQ9EdhLLWgLA17;25:luckUMhRItZdBgtYq+XYrFre+VVXP4abocuv7RWiHm/JLlMpS17eRoeeEJEmjcFqb69Qx++hw78kEhEumQDYBqi33RI1wc5i6xLiGwXuc/fkYhTDrN9uzfWBwTNsWPmwgNszu+SvbNuPL4s2hOe0Viq5aeI8TpQaz2EbbnwlOrhm7dBHAt/B3JG2fIfRWESLQNofMl0L6zpSMta/9KbD9Jz69bUO6ToVLX9Biy4eI/R7AyJ+LxZR0r3hrRNFaeGgWTp6SDXhCsHtYz1Cy0nixgyey0NNyOGgr046nJga1G8Yg2BPEYEI25c/EBv5Q9Kruj9TXRLXaZDqG+Kj27LaipB50GOwFmk4o88a0tXiP9+VRIqni/DYMoZyMr2qArkgJ+K+5PS1lNyywvAdldFFx2ATHdv+mAaU+wyL4mP9j35AURjdjy4eNFuLI5oyiaYxOYGT7amT1+pPbSUBQbSzXQ== X-Microsoft-Exchange-Diagnostics: 1;DM2PR0201MB0768;31:URyUrdqilg1mXWrqop7y/csAek1t8w8df/Ty4fJ0CK0RBmp37WUOWX7i4YQKUVZOHpYK+x216LgdDQDMluAS8D9uoCy0Obzqhxe6oFpb1gU0UxsJTxglPB1wkHI/s+wuotyJXRegf8cqKTAw+xSMEVuLAcfyIZNZkmHKoj8UeWLOHtte5vu2QmKxLtyd5sQQJd7u/xWEXD9d6B4itxogD4PUgGXz9uGaFQTfXGBXgGelSy9RlHOG/sdJm1iUqqGzSYUi+4oBkA6FbdIgVh4xoA==;20:yiMW4TPvXZCx4LnFDabi16L3vkC+dsPZEfdeVUC57TSNV1t5qBFz3rqcLE86ziFO0TpRySyc0i8CgWvf8T2yfsteazxuJwBDqdEbKypzZqsXjbbnWqdSJToMoCX6R7kwJzMSxMGeaUZ3rduMRn8d/yot4guKDkz8zHmoBb2aWvYC9N4upuDS8oT5kk63XUFX25MhqQiYKbsXP/oy8e/Rom36RVl70JU7EpZzHqoD6xSEw7Gk3iA9GkwMH6fay/lay2+8fOwqfw0szKKE2DtJiPTQYBcX5kWNhgCD4I3EWDad217tZkDm5NHNVD2lDYBZBmhHj/AcwAHxWz98Ne+n7m9g9SW97cMrEl87p+xlXivunAihnuWXZIAFsxXxbjqKGErphPniuZPu6DsT4VuUfF14fniR7onYMMm+YsWIjQlrhcTq+unjsccatmbj8gGT4RTLJcReb9L3qUB3tHxEKaQuJDUw+XCSr5WstQ5ORlaul2lY+MtL7r4dRu5/iGl/ 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)(13023025)(13018025)(8121501046)(13024025)(13017025)(13015025)(5005006)(3002001)(10201501046)(6055026)(6041248)(20161123564025)(20161123558025)(20161123555025)(20161123560025)(20161123562025)(6072148);SRVR:DM2PR0201MB0768;BCL:0;PCL:0;RULEID:;SRVR:DM2PR0201MB0768; X-Microsoft-Exchange-Diagnostics: 1;DM2PR0201MB0768;4:xHsfZrIGu644g9hol6+m+ewzWbu2XHyg+xKwB3N5xGmHL+HPPaALRbTg5ShmdK/mW+XhCrSz+aHteID3fvW/ELFFBfGedVLgYrngUUIS/3bGq4ART81Iz5L8TzwQrc79IP2ot86vTJfQAJVhIfTv6ytARoOlN3Kff4bTj6iG17APyuxHh7b2K7yMe9/xYck1vJomARp2bZ7tZD4NY8bxM8llfaUFo5JSMkEMyl0aHZhWZ2jdSBMu+ELfNfNBpocTByJi2w1lhIXRIGIrnIdU2dRYvLwdQ6IFoWV8vjyAVljsFvMD1nv9kx7JDG5f0o4Ah4q5u2pAL9Q8EAX5NDxhKvPh4spjZTFBw6tGQE5iT3nqUOrC8Z1Taq1gs5DZfRKzfvklJzc7j4cjyZ4I3UHgI0RXhXbaTadOCjMnhZ/ORy2YOYCPldqFQ77qeNN7k36GPoLyrCxl7GemQdfb9DSAH4mTjzGyRKhCE2C9If3yOa5Zi1zwgeQ73xYi3nmkKpAmqCVdsoIXFh452IU4r5hIAhs2iMKeakdOUZFBPwxSI487gFMYx2nZCjLXkgi64FlnNr2OlVtBvojV2dDw4hETyF0rQm63EwRimmsjz21nY34qd9ZxEGPFXHbWjxbOOBUpUAY0sPC+N5/ScuNNLfeS1gljeHw66DJiG4SnID6qinp4Mr+fZS5njSI0b0hb7BL7suXTZH9xrjDEhH7FI/0Khb9DZDmp6fyNE5N+5Q0fy03PncagK7KC6HqTe9GWqXawscI5G6E9iCZwjLkEmhtMuQ== X-Forefront-PRVS: 0256C18696 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DM2PR0201MB0768;23:XX3aldEWr/b2nCuoT8xt54rkYnCozVjM5S6yDEA?= =?us-ascii?Q?YV01P8nB18e46ouddnf5CchZXdD/3Juy3hzxqhbw8Nf8o2bdIZNsahCKbSIp?= =?us-ascii?Q?UErYZC31jY1qPaCPmOhs1aOWeKD7e6BaGEm33PburCLLwIEwU4GXunr3LL7l?= =?us-ascii?Q?NyqpO83qbG6cCaecDSSjcJ/rDl78dwqQkhhz57oZUes4TMOGhhRZ1CRClDbh?= =?us-ascii?Q?/rUv399SMBz7EQqYJ4Cp1rNZDGhTdjhHJEJxIYXIfxJAgunWI5YaxnBgHlmj?= =?us-ascii?Q?CWR8Ma49GzD8Qra5Z/TWITHfpljMBmFrXb/A3cCjD6xGiESNpl4XvWD1LZsh?= =?us-ascii?Q?uhkRjLykU5mhGetMcOX5HxfYfVJClQA6MxFTOzB58gumsdx2d/Fz/HTwp7fO?= =?us-ascii?Q?ejVmLEQdbTcFs++VdZUfi2/feid5uH2W1SUMa+Ev29OOxw6z3IjmGp4Qor2N?= =?us-ascii?Q?RraFfRr2R2aftabkG/ihMlJe5EtG37e4aQavnAazZ6sNllzkYwT9mEeLEsPO?= =?us-ascii?Q?DdXWdy/8A8TZ8F8wsqMCHKOp/LIGXzjRR9LDHDn6+CexAu8ev/jFiwK6MPMZ?= =?us-ascii?Q?Rb4ezFxYAKYV/50kVbOsGjsdNpBTlxfOX7TWcnbpX9P86yGRwgkmKXLiMsVl?= =?us-ascii?Q?crAsyDWHfRB4QQkbTCFxcJZvjFT8FAX63+pk80s2x8UORyGTezMtf2swwlDx?= =?us-ascii?Q?XphhyebPq7WHmmOKotuUe+K9/Qi9nq23VfV2L/ytUL0+R7nFmK4NF8TaXnwm?= =?us-ascii?Q?AiPk1tNHDlE3ncwTe9f0pQMuld6f1GU1osxgOqCjmPoUCHvo5wBpSLnZScD0?= =?us-ascii?Q?aRgUhTxAkMBuFsHogo8jagGvYkcdJ7CqMHBOStMCgs0x/UA9GL4EIVqBBKUf?= =?us-ascii?Q?oKddzwQEA76tfT+MCoabyeP6ahINOVLuqAoN8GUn8Sdt755U0WSq7mEs1TnU?= =?us-ascii?Q?FEToZd3FnaQO811vrOSDCZ2U/xdlMkvE7QlNF1caxAawLqAaJdWUlpmpKrN9?= =?us-ascii?Q?vBcTaekILTZWkRiiB1fTmjIsnFOOGudTw9ZHzNdr4DZR617IRPGDUNxdZSai?= =?us-ascii?Q?ewrm111A=3D?= X-Microsoft-Exchange-Diagnostics: 1;DM2PR0201MB0768;6:GARhRJs7oFh7ST57YR0bgkQ7wpaeqOu3stXZr+XhtTQaHpdMR/flB1iMbkzajw1A0umq99LNKUVWp1sqcCmQU9QuY9TaRMuPva9qhUpdWrJ/SHRZHPM659Z8S3aTtf9C0nQElsZVpxGQz+FREp/uMbgwbI7AC2bmk6ik8OP0OH00p8QJSY7MhSeM5XSuEJ1n4IRQCkKdGwDhV8CTLQZY56jqL04J+oqQ3/kSobdByC1OtyqDFpeWpMQ5ziFxTL8dfuokzQIlcvjm1EQnl/2V26czqLxEI1ubdHFum941nubVvSCTdai1UGvMLWjreMc+IBWI6QDwQrT9S6lsZUVYWB0kGyRvecU+C+BFCzg6SQUxg+UrBC74O+568e+AiEXnTpi9MReL2GciYtRb5zJPF4U3CGQPxzmPsZp2rH5RYwE=;5:BXGIsyypKx0YcPhSx2Mgc3xmsVTI1t8EVPHOMpHlVSy0EU1XSszu3A4roIru/kjKmOaVbnGIsVzUHPIhOcly7iVXYUa62O7MngyPK6r/e5eOQwv6157jchtoaQixNLelKsD+gMF2NOEmCv1dbzkrFQ==;24:Bt4v0OHyu/u/usvvSIMBFfVMwa+Rf/U5JV8Tk0kaT1U3Fb2B/64dswoWO8Xd2sa6fDpR2MJ4s+0roBQLBQrM6RncqCVtmjAEKC9oeb/6rFs= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DM2PR0201MB0768;7:neHdJD5yQUJ4nl8P4GorNSr7/Qg3NshWj56pP5GXN2QwZ12byPnqV0IMuraaau2Xjqj4S/JoGhDJnOV6P6kE2u6jI6cXbHdkYj6oTqPsyPvEyYFsVOFnMjryx7e4qJaALDGME9NvN058QMH4qBBpuDgyFSXfsSB/rgzC0Qi0EJh/TKf9rEyBXWAT0cl+o7OUy2wKaN7F61rHbZ/qQxSmH9rmn6sFB+88jxsyU+OnlmvCDBAck4YDADN7s+rE4dSETc12zmF+fEdq/zJlNfIl/JZ+PaPHvDVN81+rJ/a5MzByc4JoDtVrY6HuJS/yKEKydPQG4UmDUbSM7Ga1KSKspw== X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Mar 2017 19:29:27.9454 (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.100];Helo=[xsj-pvapsmtpgw02] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR0201MB0768 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Wendy Liang Add resource table handler to handle fw_rsc_rproc_mem entry. Signed-off-by: Wendy Liang Signed-off-by: Michal Simek --- drivers/remoteproc/remoteproc_core.c | 37 ++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c index 3dabb20..0ffd9dc 100644 --- a/drivers/remoteproc/remoteproc_core.c +++ b/drivers/remoteproc/remoteproc_core.c @@ -720,6 +720,42 @@ static int rproc_handle_carveout(struct rproc *rproc, return ret; } +/** + * rproc_handle_rproc_mem() - handle remote processor memory + * @rproc: rproc handle + * @rsc: the resource entry + * @avail: size of available data (for image validation) + * + * This function will handle declare the remote procesor's memory + * as DMA memory of the remoteproc, and then, the host can use it + * as shared memory, e.g. vrings ahre shared buffers. + */ +static int rproc_handle_rproc_mem(struct rproc *rproc, + struct fw_rsc_rproc_mem *rsc, + int offset, int avail) +{ + struct device *dev = &rproc->dev; + int ret; + + if (sizeof(*rsc) > avail) { + dev_err(dev, "rproc_mem rsc is truncated\n"); + return -EINVAL; + } + + if (rsc->pa == FW_RSC_ADDR_ANY) { + dev_err(dev, "not able to declare rproc mem, pa is 0x%x\n", + rsc->pa); + return -EINVAL; + } + ret = dma_declare_coherent_memory(dev->parent, rsc->pa, + rsc->pa, rsc->len, DMA_MEMORY_MAP); + if (!ret) { + dev_err(dev, "failed to declare rproc mem as DMA mem.\n"); + return -ENOMEM; + } + return 0; +} + /* * A lookup table for resource handlers. The indices are defined in * enum fw_resource_type. @@ -729,6 +765,7 @@ static int rproc_handle_carveout(struct rproc *rproc, [RSC_DEVMEM] = (rproc_handle_resource_t)rproc_handle_devmem, [RSC_TRACE] = (rproc_handle_resource_t)rproc_handle_trace, [RSC_VDEV] = (rproc_handle_resource_t)rproc_handle_vdev, + [RSC_RPROC_MEM] = (rproc_handle_resource_t)rproc_handle_rproc_mem, }; /* handle firmware resource entries before booting the remote processor */ -- 1.9.1