Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753479AbdFSGQw (ORCPT ); Mon, 19 Jun 2017 02:16:52 -0400 Received: from mailout2.w1.samsung.com ([210.118.77.12]:39861 "EHLO mailout2.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751024AbdFSGQu (ORCPT ); Mon, 19 Jun 2017 02:16:50 -0400 X-AuditID: cbfec7ef-f796a6d00000373c-0e-59476c51132c Subject: Re: [PATCH 5/9] [media] s5p-jpeg: Add IOMMU support To: Jacek Anaszewski , Thierry Escande , Andrzej Pietrasiewicz , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org From: Marek Szyprowski Message-id: Date: Mon, 19 Jun 2017 08:16:44 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.1.1 MIME-version: 1.0 In-reply-to: <22caa512-6feb-449c-e6c4-8d647b2d2e8d@gmail.com> Content-type: text/plain; charset=utf-8; format=flowed Content-transfer-encoding: 7bit Content-language: en-US X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrEKsWRmVeSWpSXmKPExsWy7djP87qBOe6RBgfXilvMetnOYnF76wYW i8u75rBZ9GzYymqxbNMfJov+q5fYHNg8dtxdwuixc9Zddo9NqzrZPPq2rGL0+LxJLoA1issm JTUnsyy1SN8ugSvjbPsGloKVKhVbtl1kb2A8JtvFyMkhIWAisen9JSYIW0ziwr31bF2MXBxC AssYJW4vbWIHSQgJfGaUWLy2Aqah98l6FriililvWSCKnjNKrP2tCmILC9hIrPuwih2kSETg IKPEvP9rwSYxC9hKdBzqBGtgEzCU6HrbxQZi8wrYSfSffQgWZxFQlZgxextQnINDVCBGYumx NIgSQYkfk++BlXACjfn15gfUSCuJZ/9aWSFseYnNa94yQ9jiEs2tN8EOlRBYxS7xbcVjZpCZ EgKyEpsOMEM84yKxY+oaNghbWOLV8S3sELaMxOXJ3SwQdj+jRFOrNoQ9g1Hi3FteCNta4vDx i1B7+SQmbZsONZ5XoqNNCKLEQ+LS9/lQYxwllnSdYIaE2wwmia6X3ewTGBVmIXltFpJ3ZiF5 ZxaSdxYwsqxiFEktLc5NTy021CtOzC0uzUvXS87P3cQITDmn/x1/v4PxaXPIIUYBDkYlHt6K 526RQqyJZcWVuYcYJTiYlUR4ozLcI4V4UxIrq1KL8uOLSnNSiw8xSnOwKInz8p66FiEkkJ5Y kpqdmlqQWgSTZeLglGpg5LQ8dPFMfz/j5xtqW563+TE8nTFnmfitFJGTlVMuP9tkVxQa3NfX JhJz57pV/Xxlv2j1hymnGVTa7A7NZ6os+f9K/63a4x1OBxj/JByb33Dp/poGvhlMwdHbeTcu 2O6Z8uH4z7urQguY/yzOm73j8v4zH9gC9r14MOFrSJDjtll6/ve6Niy9V6TEUpyRaKjFXFSc CABooqZtNQMAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrKIsWRmVeSWpSXmKPExsVy+t/xq7q+Oe6RBk2LbSxmvWxnsbi9dQOL xeVdc9gsejZsZbVYtukPk0X/1UtsDmweO+4uYfTYOesuu8emVZ1sHn1bVjF6fN4kF8Aa5WaT kZqYklqkkJqXnJ+SmZduqxQa4qZroaSQl5ibaqsUoesbEqSkUJaYUwrkGRmgAQfnAPdgJX27 BLeMs+0bWApWqlRs2XaRvYHxmGwXIyeHhICJRO+T9SwQtpjEhXvr2boYuTiEBJYwSuxacY4d wnnOKDH7xm+wKmEBG4l1H1aBJUQEDjNKnL07iQ0kwSxgK9FxqBOsSEhgBpPEyp8BIDabgKFE 19susBpeATuJ/rMPwWpYBFQlZszeBhYXFYiReLThLBNEjaDEj8n3wGo4gWb+evODHWK+mcSX l4dZIWx5ic1r3jJD2OISza03WSYwCs5C0j4LScssJC2zkLQsYGRZxSiSWlqcm55bbKRXnJhb XJqXrpecn7uJERiF24793LKDsetd8CFGAQ5GJR7eiudukUKsiWXFlbmHGCU4mJVEeKMy3COF eFMSK6tSi/Lji0pzUosPMZoCPTeRWUo0OR+YIPJK4g1NDM0tDY2MLSzMjYyUxHmnfrgSLiSQ nliSmp2aWpBaBNPHxMEp1cDY2PIlMSlXd23vYS0p/eAbG6yPsj5rX5V0+YeGsGZAX9Iyn76a D4u5tu/bZW682ZtHSpNxZp5ni0hIQ7AX85uETbcnRQae3fTVMu2Lo65y11RbpvxTAd9UzkY0 OfXp9hQvDFm/6fPEnzlcfsdEphzSiQ97fmFz5eIVNSuzi3qXb9xh+ua3EIMSS3FGoqEWc1Fx IgDsHq0x2AIAAA== X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170619061646eucas1p1e3de82256c3d2d22d3de2d23b5b0a1c1 X-Msg-Generator: CA X-Sender-IP: 182.198.249.180 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: 20170602214418epcas5p3687b21e80e33083e3e1bdbc9716fe868 X-RootMTR: 20170602214418epcas5p3687b21e80e33083e3e1bdbc9716fe868 References: <1496419376-17099-1-git-send-email-thierry.escande@collabora.com> <1496419376-17099-6-git-send-email-thierry.escande@collabora.com> <22caa512-6feb-449c-e6c4-8d647b2d2e8d@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4496 Lines: 151 Hi All, I'm sorry for the late reply, I just got back from holidays. On 2017-06-02 23:43, Jacek Anaszewski wrote: > Cc Marek Szyprowski. > > Marek, could you share your opinion about this patch? > > On 06/02/2017 06:02 PM, Thierry Escande wrote: >> From: Tony K Nadackal >> >> This patch adds support for IOMMU s5p-jpeg driver if the Exynos IOMMU >> and ARM DMA IOMMU configurations are supported. The address space is >> created with size limited to 256M and base address set to 0x20000000. Could you clarify WHY this patch is needed? IOMMU core configures per-device IO address space by default and AFAIR JPEG module doesn't have any specific requirements for the IO address space layout (base or size), so it should work fine (and works in my tests!) without this patch. Please drop this patch for now. >> Signed-off-by: Tony K Nadackal >> Signed-off-by: Thierry Escande >> --- >> drivers/media/platform/s5p-jpeg/jpeg-core.c | 77 +++++++++++++++++++++++++++++ >> 1 file changed, 77 insertions(+) >> >> diff --git a/drivers/media/platform/s5p-jpeg/jpeg-core.c b/drivers/media/platform/s5p-jpeg/jpeg-core.c >> index 770a709..5569b99 100644 >> --- a/drivers/media/platform/s5p-jpeg/jpeg-core.c >> +++ b/drivers/media/platform/s5p-jpeg/jpeg-core.c >> @@ -28,6 +28,14 @@ >> #include >> #include >> #include >> +#if defined(CONFIG_EXYNOS_IOMMU) && defined(CONFIG_ARM_DMA_USE_IOMMU) >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include >> +#endif >> >> #include "jpeg-core.h" >> #include "jpeg-hw-s5p.h" >> @@ -35,6 +43,10 @@ >> #include "jpeg-hw-exynos3250.h" >> #include "jpeg-regs.h" >> >> +#if defined(CONFIG_EXYNOS_IOMMU) && defined(CONFIG_ARM_DMA_USE_IOMMU) >> +static struct dma_iommu_mapping *mapping; >> +#endif >> + >> static struct s5p_jpeg_fmt sjpeg_formats[] = { >> { >> .name = "JPEG JFIF", >> @@ -956,6 +968,60 @@ static void exynos4_jpeg_parse_q_tbl(struct s5p_jpeg_ctx *ctx) >> } >> } >> >> +#if defined(CONFIG_EXYNOS_IOMMU) && defined(CONFIG_ARM_DMA_USE_IOMMU) >> +static int jpeg_iommu_init(struct platform_device *pdev) >> +{ >> + struct device *dev = &pdev->dev; >> + int err; >> + >> + mapping = arm_iommu_create_mapping(&platform_bus_type, 0x20000000, >> + SZ_512M); >> + if (IS_ERR(mapping)) { >> + dev_err(dev, "IOMMU mapping failed\n"); >> + return PTR_ERR(mapping); >> + } >> + >> + dev->dma_parms = devm_kzalloc(dev, sizeof(*dev->dma_parms), GFP_KERNEL); >> + if (!dev->dma_parms) { >> + err = -ENOMEM; >> + goto error_alloc; >> + } >> + >> + err = dma_set_max_seg_size(dev, 0xffffffffu); >> + if (err) >> + goto error; >> + >> + err = arm_iommu_attach_device(dev, mapping); >> + if (err) >> + goto error; >> + >> + return 0; >> + >> +error: >> + devm_kfree(dev, dev->dma_parms); >> + dev->dma_parms = NULL; >> + >> +error_alloc: >> + arm_iommu_release_mapping(mapping); >> + mapping = NULL; >> + >> + return err; >> +} >> + >> +static void jpeg_iommu_deinit(struct platform_device *pdev) >> +{ >> + struct device *dev = &pdev->dev; >> + >> + if (mapping) { >> + arm_iommu_detach_device(dev); >> + devm_kfree(dev, dev->dma_parms); >> + dev->dma_parms = NULL; >> + arm_iommu_release_mapping(mapping); >> + mapping = NULL; >> + } >> +} >> +#endif >> + >> /* >> * ============================================================================ >> * Device file operations >> @@ -2816,6 +2882,13 @@ static int s5p_jpeg_probe(struct platform_device *pdev) >> spin_lock_init(&jpeg->slock); >> jpeg->dev = &pdev->dev; >> >> +#if defined(CONFIG_EXYNOS_IOMMU) && defined(CONFIG_ARM_DMA_USE_IOMMU) >> + ret = jpeg_iommu_init(pdev); >> + if (ret) { >> + dev_err(&pdev->dev, "IOMMU Initialization failed\n"); >> + return ret; >> + } >> +#endif >> /* memory-mapped registers */ >> res = platform_get_resource(pdev, IORESOURCE_MEM, 0); >> >> @@ -2962,6 +3035,10 @@ static int s5p_jpeg_remove(struct platform_device *pdev) >> clk_disable_unprepare(jpeg->clocks[i]); >> } >> >> +#if defined(CONFIG_EXYNOS_IOMMU) && defined(CONFIG_ARM_DMA_USE_IOMMU) >> + jpeg_iommu_deinit(pdev); >> +#endif >> + >> return 0; >> } >> >> Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland