From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754268AbcLUFmR (ORCPT ); Wed, 21 Dec 2016 00:42:17 -0500 Received: from mailout3.samsung.com ([203.254.224.33]:48068 "EHLO mailout3.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751031AbcLUFmP (ORCPT ); Wed, 21 Dec 2016 00:42:15 -0500 X-AuditID: b6c32a3c-f79646d000004d82-be-585a163469fe Subject: Re: [PATCH 0/2] s5p-mfc fix for using reserved memory To: Marek Szyprowski , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: kyungmin.park@samsung.com, jtp.park@samsung.com, mchehab@kernel.org, mchehab@osg.samsung.com, hans.verkuil@cisco.com, krzk@kernel.org, kgene@kernel.org, javier@osg.samsung.com From: "pankaj.dubey" Message-id: <57a75b39-95bf-16f2-54fb-7c7e032a2eb7@samsung.com> Date: Wed, 21 Dec 2016 11:14:39 +0530 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-version: 1.0 In-reply-to: Content-type: text/plain; charset=utf-8 Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA01SfUgTYRzuvbvdprS45tIXy9KD6IPcdmvqW34VWlwUYSSxrLBLD5XcZrsp WlTWMkwsswxtrJJY5keiTi2TKJn2SWZaFhFaoWWU9qFUWBHtvKL+e57nfX48v+fHq8BVTjJQ kWG28VYzl0mTvsTlzkWaUIN/klHX2aVCrsl2DI2OXcJQV30/hkqG3uOop6dRjroPjsqRe+iJ DD1qd5KouLFVhip6rmOovmtAjqrcPzFU9yZ3hZIt+9EkY921R0i22bWfbSkZkLPHWmoBO+Ge m0Am8VHpPJfKW4N5c4olNcOcFk2v3ZgclxwWrmNCmWUogg42cyY+mo5flxC6OiPTuycdnMNl ZnulBE4QaG1MlNWSbeOD0y2CLZrewjB6DaOL0Oj1eo1Bv225Psxr2c6nHz1ZQGY9g7k9nxvw fFCjLgI+CkgZYF/fMULC/vDhYANZBHwVKqoNQNfH7zKJTABY9KLc+6KYmrgzDiS9FcCL3Z2Y qPtRMbD1da6oq6krAP7oGJGLBBdJe3MxLkaQlBaWD10mRaz0Dpxr6sdETFDz4amGwSl9FmWE nlvPcckzE949PTy1ng8VC8c6vxNiGE4tgg3tWlHGqXnwypgTF7MgdU8OB6srMGnRIOjuwKVm 8bDK/g1I2A++u90il3AgtH/+JJNm7QDmt5YREqkAsPLqSUxyxcKOx05CSpsBP3wplkkBSlh4 WCVZWOg8NP7HvhK+H+olpAv1AmivOwqOg7mO//o4/nVw/NehEuC1wJ/PEkxpvMBkIY3AmYRs c5omxWJyg6mfuTiqDfQ9WOcBlALQ05VtkZuNKhmXI+SZPAAqcFqtnKNOMqqUqVzebt5qSbZm Z/KCB4R5T1yKB85KsXj/udmWzBjCGYPeoIsIR8hAByirDkQaVVQaZ+N38nwWb/07hyl8AvNB aUHfLepaSt3EmZpNkUt25GgZFd01c/bIpfuevBv16ptUIXHhyf3J0bimvezS0V2bv7m+Gp8u wFy9BfdsI/vViYPTdIlB5bk3Yyfj9p1bQ5/1f6tbr93gGzDev8dy/pfsRGn9wrK7rxy3qzXP CmGqbtVZ9uWOEHuI4HsoxDFc27yVJoR0jlmMWwXuNzsrnHKvAwAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrOIsWRmVeSWpSXmKPExsWSnRNcq2siFhVh8Okak8WSn7uYLN68XcNk cWTtVSaL/sevmS3On9/AbnG26Q27xabH11gtLu+aw2bRs2Erq8WM8/uYLNYeuctusWzTHyaL 1c8qHHg9pvzeyOqxaVUnm8fmJfUeW/rvsnv0bVnF6PF5k1wAW5SbTUZqYkpqkUJqXnJ+SmZe uq1SaIibroWSQl5ibqqtUoSub0iQkkJZYk4pkGdkgAYcnAPcg5X07RLcMnont7IV3JSoOP9x PXMD40qRLkYODgkBE4kTnxi7GDmBTDGJC/fWs3UxcnEICWxmlFhwcAkjSI2wgJ3E1qcVIHER ge1A8fd7oYouMkrsXzGbFcRhBslcXL6LBWQUm4C+xPTH29hAbF6g7vkbrzKB2CwCqhJT199j A5kqKhAh0XA4HaJEUOLkzCdgrZwC9hJvD/8Cs5kF1CX+zLvEDGHLS2x/O4d5AiP/LCQts5CU zUJStoCReRWjWGpBcW56bnGBgaFecWJucWleul5yfu4mRmAkbjusJLaDsW2F1yFGAQ5GJR7e jO7ICCHWxLLiytxDjBIczEoivDIiURFCvCmJlVWpRfnxRaU5qcWHGE2BvpjILCWanA9MEnkl 8YYmphYWFiaWxsbGFiZK4ryx05+FCwmkJ5akZqemFqQWwfQxcXBKNTC6mvqoHXpyRTj5wDlD DgaVV691lTle/u5vajn+7frGOIuLh9UdXLJ65nQki7z8GVf+ZNvePjc/C7GPKeZV3rut5jw9 28i9xdbu022BC2Y8ngf/V5lujkp/88as8v3Sv/9uJklbWd7dGfrGKFG0L9iEacWCY43iH96W Rwg9Cl08Me5xzueXblZKLMUZiYZazEXFiQDwxnZa2gIAAA== X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20161221054212epcas1p46e9ae10a1df7a9c5e4d0389e59584ef7 X-Msg-Generator: CA X-Sender-IP: 182.195.34.22 X-Local-Sender: =?UTF-8?B?7YyQ7Lm07KaIG1NTSVItVHVybiBLZXkgU29sdXRpb25zGw==?= =?UTF-8?B?7IK87ISx7KCE7J6QGy4vQ2hpZWYgRW5naW5lZXI=?= X-Global-Sender: =?UTF-8?B?UEFOS0FKIEtVTUFSIERVQkVZG1NTSVItVHVybiBLZXkgU29s?= =?UTF-8?B?dXRpb25zG1NhbXN1bmcgRWxlY3Ryb25pY3MbLi9DaGllZiBFbmdpbmVlcg==?= X-Sender-Code: =?UTF-8?B?QzEwG1NXQUhRG0MxMElEMDdJRDAxMDk5Nw==?= CMS-TYPE: 101P DLP-Filter: Pass X-CFilter-Loop: Reflected X-HopCount: 7 X-CMS-RootMailID: 20161216115004epcas1p276eddca803dcafe3470e223386b86da0 X-RootMTR: 20161216115004epcas1p276eddca803dcafe3470e223386b86da0 References: <1481888915-19624-1-git-send-email-pankaj.dubey@samsung.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Marek, On Tuesday 20 December 2016 05:28 PM, Marek Szyprowski wrote: > Hi Pankaj > > > On 2016-12-16 12:48, Pankaj Dubey wrote: >> It has been observed on ARM64 based Exynos SoC, if IOMMU is not enabled >> and we try to use reserved memory for MFC, reqbufs fails with below >> mentioned error >> --------------------------------------------------------------------------- >> >> V4L2 Codec decoding example application >> Kamil Debski >> Copyright 2012 Samsung Electronics Co., Ltd. >> >> Opening MFC. >> (mfc.c:mfc_open:58): MFC Info (/dev/video0): driver="s5p-mfc" \ >> bus_info="platform:12c30000.mfc0" card="s5p-mfc-dec" fd=0x4[ >> 42.339165] Remapping memory failed, error: -6 >> >> MFC Open Success. >> (main.c:main:711): Successfully opened all necessary files and devices >> (mfc.c:mfc_dec_setup_output:103): Setup MFC decoding OUTPUT buffer \ >> size=4194304 (requested=4194304) >> (mfc.c:mfc_dec_setup_output:120): Number of MFC OUTPUT buffers is 2 \ >> (requested 2) >> >> [App] Out buf phy : 0x00000000, virt : 0xffffffff >> Output Length is = 0x300000 >> Error (mfc.c:mfc_dec_setup_output:145): Failed to MMAP MFC OUTPUT buffer >> ------------------------------------------------------------------------- >> This is because the device requesting for memory is mfc0.left not the >> parent mfc0. >> Hence setting of alloc_devs need to be done only if IOMMU is enabled >> and in that case both the left and right device is treated as mfc0 only. >> Also we need to populate vb2_queue's dev pointer with mfc dev pointer. > > I also got this issue but Your solution is imho not the proper approach. > Too much hacking in the driver, while the issue is in the core. ARM64 > requires > to call arch_setup_dma_ops() for each device that will be used for > dma-mapping. > So the issue is in drivers/of/of_reserved_mem.c - in > of_reserved_mem_device_init_by_idx() function, which should ensure that > arch_setup_dma_ops() is called also for the virtual devices for reserved > memory. > > s5p-mfc driver however still requires some patching for > dma-mapping/iommu glue > used on ARM64 architecture. > Thanks for review and suggestion. Our initial investigation pointed out issue due to change in vb2_queue dev field by commit 2548fee63d9e ("[media] media/platform: convert drivers to use the new vb2_queue dev field"), where only for mfc q->dev pointer was not set. But I think you are right, and of_reserved_mem_device_init_by_idx should take care of setting dma_ops for devices which calls this function. So I will be submitting new change soon to fix this issue after testing it. Thanks, Pankaj Dubey >> Smitha T Murthy (2): >> media: s5p-mfc: convert drivers to use the new vb2_queue dev field >> media: s5p-mfc: fix MMAP of mfc buffer during reqbufs >> >> drivers/media/platform/s5p-mfc/s5p_mfc.c | 2 ++ >> drivers/media/platform/s5p-mfc/s5p_mfc_dec.c | 17 ++++++++++------- >> drivers/media/platform/s5p-mfc/s5p_mfc_enc.c | 18 +++++++++++------- >> 3 files changed, 23 insertions(+), 14 deletions(-) >> > > Best regards From mboxrd@z Thu Jan 1 00:00:00 1970 From: pankaj.dubey@samsung.com (pankaj.dubey) Date: Wed, 21 Dec 2016 11:14:39 +0530 Subject: [PATCH 0/2] s5p-mfc fix for using reserved memory In-Reply-To: References: <1481888915-19624-1-git-send-email-pankaj.dubey@samsung.com> Message-ID: <57a75b39-95bf-16f2-54fb-7c7e032a2eb7@samsung.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi Marek, On Tuesday 20 December 2016 05:28 PM, Marek Szyprowski wrote: > Hi Pankaj > > > On 2016-12-16 12:48, Pankaj Dubey wrote: >> It has been observed on ARM64 based Exynos SoC, if IOMMU is not enabled >> and we try to use reserved memory for MFC, reqbufs fails with below >> mentioned error >> --------------------------------------------------------------------------- >> >> V4L2 Codec decoding example application >> Kamil Debski >> Copyright 2012 Samsung Electronics Co., Ltd. >> >> Opening MFC. >> (mfc.c:mfc_open:58): MFC Info (/dev/video0): driver="s5p-mfc" \ >> bus_info="platform:12c30000.mfc0" card="s5p-mfc-dec" fd=0x4[ >> 42.339165] Remapping memory failed, error: -6 >> >> MFC Open Success. >> (main.c:main:711): Successfully opened all necessary files and devices >> (mfc.c:mfc_dec_setup_output:103): Setup MFC decoding OUTPUT buffer \ >> size=4194304 (requested=4194304) >> (mfc.c:mfc_dec_setup_output:120): Number of MFC OUTPUT buffers is 2 \ >> (requested 2) >> >> [App] Out buf phy : 0x00000000, virt : 0xffffffff >> Output Length is = 0x300000 >> Error (mfc.c:mfc_dec_setup_output:145): Failed to MMAP MFC OUTPUT buffer >> ------------------------------------------------------------------------- >> This is because the device requesting for memory is mfc0.left not the >> parent mfc0. >> Hence setting of alloc_devs need to be done only if IOMMU is enabled >> and in that case both the left and right device is treated as mfc0 only. >> Also we need to populate vb2_queue's dev pointer with mfc dev pointer. > > I also got this issue but Your solution is imho not the proper approach. > Too much hacking in the driver, while the issue is in the core. ARM64 > requires > to call arch_setup_dma_ops() for each device that will be used for > dma-mapping. > So the issue is in drivers/of/of_reserved_mem.c - in > of_reserved_mem_device_init_by_idx() function, which should ensure that > arch_setup_dma_ops() is called also for the virtual devices for reserved > memory. > > s5p-mfc driver however still requires some patching for > dma-mapping/iommu glue > used on ARM64 architecture. > Thanks for review and suggestion. Our initial investigation pointed out issue due to change in vb2_queue dev field by commit 2548fee63d9e ("[media] media/platform: convert drivers to use the new vb2_queue dev field"), where only for mfc q->dev pointer was not set. But I think you are right, and of_reserved_mem_device_init_by_idx should take care of setting dma_ops for devices which calls this function. So I will be submitting new change soon to fix this issue after testing it. Thanks, Pankaj Dubey >> Smitha T Murthy (2): >> media: s5p-mfc: convert drivers to use the new vb2_queue dev field >> media: s5p-mfc: fix MMAP of mfc buffer during reqbufs >> >> drivers/media/platform/s5p-mfc/s5p_mfc.c | 2 ++ >> drivers/media/platform/s5p-mfc/s5p_mfc_dec.c | 17 ++++++++++------- >> drivers/media/platform/s5p-mfc/s5p_mfc_enc.c | 18 +++++++++++------- >> 3 files changed, 23 insertions(+), 14 deletions(-) >> > > Best regards