From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757549AbcLTL6T (ORCPT ); Tue, 20 Dec 2016 06:58:19 -0500 Received: from mailout1.w1.samsung.com ([210.118.77.11]:12407 "EHLO mailout1.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752329AbcLTL6P (ORCPT ); Tue, 20 Dec 2016 06:58:15 -0500 X-AuditID: cbfec7f2-f79de6d0000009d0-28-58591cd24c23 Subject: Re: [PATCH 0/2] s5p-mfc fix for using reserved memory To: Pankaj Dubey , 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: Marek Szyprowski Message-id: Date: Tue, 20 Dec 2016 12:58:08 +0100 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-version: 1.0 In-reply-to: <1481888915-19624-1-git-send-email-pankaj.dubey@samsung.com> Content-type: text/plain; charset=utf-8; format=flowed Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrIKsWRmVeSWpSXmKPExsWy7djPc7qXZCIjDOb/07NY8nMXk8Wbt2uY LI6svcpk0f/4NbPF+fMb2C3ONr1ht9j0+BqrxeVdc9gsejZsZbWYcX4fk8WyTX+YLFY/q7BY tPULuwOvx5TfG1k9Nq3qZPPYvKTeY0v/XXaPvi2rGD0+b5ILYIvisklJzcksSy3St0vgyui7 dZq94K1wxepFc1kbGLcKdDFyckgImEh8mbieCcIWk7hwbz1bFyMXh5DAUkaJY48ms0M4nxkl TuxZxw7T0fzxIxNEYhmjxLeFE1ggnOeMEguPXQTKcHAIC9hJbH1aARIXEdjMKPFm1UOwucwC 2xkldm3uYQYZxSZgKNH1tosNpIEXqGHGPUsQk0VAVWLeHbDzRAViJM7POApWzSsgKPFj8j0W EJtTwFNi6Yp7YHFmASuJZ/9aWSFseYnNa94yg6ySELjFLjHh23uweyQEZCU2HWCGeMBFYtat OVAvC0u8Or4F6jEZic6Og1DxfkaJplZtCHsGo8S5t7wQtrXE4eMXoXbxSUzaNp0ZYjyvREeb EESJh8Sclk9QYxwlXj++CA2eOYwSjec3MU5glJ+F5J1ZSF6YheSFBYzMqxhFUkuLc9NTi431 ihNzi0vz0vWS83M3MQIT0ul/xz/tYPx6wuoQowAHoxIPb0d1RIQQa2JZcWXuIUYJDmYlEV4X 6cgIId6UxMqq1KL8+KLSnNTiQ4zSHCxK4rx7FlwJFxJITyxJzU5NLUgtgskycXBKNTBuYjnC Hll/6sm8DOOJ4bfV5/EskW+897y76T7HJRHNJae0ij31ej25Hoj8id3GsbMlUaY09LOfnAXn 4imL0yN+dzDov7Oov8mpvEfhqmPSxJ+rdusc2sS5T6t9n7F6Rbo9017rOVJJmbldogf4Virt nfr419dXrzoqf3ms9FTyddy2xdrnRIESS3FGoqEWc1FxIgDQ6J8oRAMAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrIIsWRmVeSWpSXmKPExsVy+t/xK7qfZSIjDFZeVrVY8nMXk8Wbt2uY LI6svcpk0f/4NbPF+fMb2C3ONr1ht9j0+BqrxeVdc9gsejZsZbWYcX4fk8WyTX+YLFY/q7BY tPULuwOvx5TfG1k9Nq3qZPPYvKTeY0v/XXaPvi2rGD0+b5ILYItys8lITUxJLVJIzUvOT8nM S7dVCg1x07VQUshLzE21VYrQ9Q0JUlIoS8wpBfKMDNCAg3OAe7CSvl2CW0bfrdPsBW+FK1Yv msvawLhVoIuRk0NCwESi+eNHJghbTOLCvfVsXYxcHEICSxglWpfvZIFwnjNKNN8+xt7FyMEh LGAnsfVpBUhcRGAzo0T/8bvsIN1CAvMYJd508oMkmAW2M0pcXL6LBSTBJmAo0fW2iw2kmReo ecY9SxCTRUBVYt4dsCNEBWIklhyfB1bNKyAo8WPyPTCbU8BTYumKe8wgNrOAmcSXl4dZIWx5 ic1r3jJPYBSYhaRlFpKyWUjKFjAyr2IUSS0tzk3PLTbUK07MLS7NS9dLzs/dxAiMzm3Hfm7e wXhpY/AhRgEORiUe3o7qiAgh1sSy4srcQ4wSHMxKIrwu0pERQrwpiZVVqUX58UWlOanFhxhN gX6YyCwlmpwPTBx5JfGGJobmloZGxhYW5kZGSuK8JR+uhAsJpCeWpGanphakFsH0MXFwSjUw lgk36E5v0zLMjHufN6VT/twuhz278lrt0+PPmikyODle1L008b7filBHcf179Uun1PcumXgl IUTEUbXneP2OoAvLfXWvlzQdXBW6eOXbOZrBRuxTXD1yzlhy/eJifqUadflgqlG5Uof53FMd JsWTdqvufx7Z+/qJhEfwwa6/klmcLOdvaN5WYinOSDTUYi4qTgQABQFZnuQCAAA= X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20161220115810eucas1p112f5e0ac1f6a2533503e848b451905f2 X-Msg-Generator: CA X-Sender-IP: 182.198.249.179 X-Local-Sender: =?UTF-8?B?TWFyZWsgU3p5cHJvd3NraRtTUlBPTC1LZXJuZWwgKFRQKRs=?= =?UTF-8?B?7IK87ISx7KCE7J6QG1NlbmlvciBTb2Z0d2FyZSBFbmdpbmVlcg==?= X-Global-Sender: =?UTF-8?B?TWFyZWsgU3p5cHJvd3NraRtTUlBPTC1LZXJuZWwgKFRQKRtT?= =?UTF-8?B?YW1zdW5nIEVsZWN0cm9uaWNzG1NlbmlvciBTb2Z0d2FyZSBFbmdpbmVlcg==?= X-Sender-Code: =?UTF-8?B?QzEwG0VIURtDMTBDRDAyQ0QwMjczOTI=?= CMS-TYPE: 201P 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 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. > 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 -- Marek Szyprowski, PhD Samsung R&D Institute Poland From mboxrd@z Thu Jan 1 00:00:00 1970 From: m.szyprowski@samsung.com (Marek Szyprowski) Date: Tue, 20 Dec 2016 12:58:08 +0100 Subject: [PATCH 0/2] s5p-mfc fix for using reserved memory In-Reply-To: <1481888915-19624-1-git-send-email-pankaj.dubey@samsung.com> References: <1481888915-19624-1-git-send-email-pankaj.dubey@samsung.com> Message-ID: To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org 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. > 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 -- Marek Szyprowski, PhD Samsung R&D Institute Poland