From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751511AbdIAITz (ORCPT ); Fri, 1 Sep 2017 04:19:55 -0400 Received: from mailout2.w1.samsung.com ([210.118.77.12]:59452 "EHLO mailout2.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751367AbdIAITv (ORCPT ); Fri, 1 Sep 2017 04:19:51 -0400 X-AuditID: cbfec7f1-f793a6d00000326b-5f-59a918235f69 Subject: Re: [PATCH 2/2] dma-coherent: remove the DMA_MEMORY_MAP and DMA_MEMORY_IO flags To: Christoph Hellwig , linux-kernel@vger.kernel.org Cc: Robin Murphy From: Marek Szyprowski Message-id: Date: Fri, 01 Sep 2017 10:19:45 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 MIME-version: 1.0 In-reply-to: <20170826072650.10264-3-hch@lst.de> Content-type: text/plain; charset="utf-8"; format="flowed" Content-transfer-encoding: 7bit Content-language: en-US X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpnleLIzCtJLcpLzFFi42LZduznOV1liZWRBjd/KVqsXH2UyeLyrjls Fgc/PGF1YPZYM28No8fumw1sHp83yQUwR3HZpKTmZJalFunbJXBlbH1wgb3gtmXFsduiDYyn dLoYOTkkBEwk/mxbxgRhi0lcuLeerYuRi0NIYCmjxKrlrYwQzmdGiWMdk5m7GDnAOm4fiQFp EBJYxiix+S03RM1zRomfp+ezgCSEBaIkJrZPYwWxRQQcJKa/uABmMwuoS+x+/JIdxGYTMJTo etvFBmLzCthJHOj7xAhiswioSrzrecEMYosKxEi0H7rJDFEjKPFj8j2w+ZwCBhL9JzcwQcy0 knj2rxVqvrzE5jVvmSFscYnm1pssIMdJCLSzS9xcOIsd4gFZiU0HoH5xkfjQbQDxvLDEq+Nb 2CFsGYnOjoPQQOlnlGhq1YawZzBKnHvLC2FbSxw+fhFqLZ/EpG3ToUbySnS0CUGUeEhMftnL CGE7Shx5284OCaqVjBIr1l1kmsCoMAvJZ7OQfDMLyTezkHyzgJFlFaNIamlxbnpqsZFecWJu cWleul5yfu4mRmDyOP3v+McdjO9PWB1iFOBgVOLhfeG0IlKINbGsuDL3EKMEB7OSCG++yMpI Id6UxMqq1KL8+KLSnNTiQ4zSHCxK4ry2UW2RQgLpiSWp2ampBalFMFkmDk6pBkbe53sz8/6L 75Pee1BTmkPo7eJ+bnnfjVs2zatPSrSyjk5cval1W2ZYSZau5YsdTzx8Fe4IbArk3Z9m37zj 6faCBx+Vmfc4xvZ9qFzzQ1nibEK63B/v9Zv3MbSxZHUvll4vMtUouHLTahvvTxnzHfRXtxcn s5X51S/dUesY9Kv6w/S3K5/pCyuxFGckGmoxFxUnAgDWja+0GgMAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrFIsWRmVeSWpSXmKPExsVy+t/xq7pKEisjDRacsLZYufook8XlXXPY LA5+eMLqwOyxZt4aRo/dNxvYPD5vkgtgjnKzyUhNTEktUkjNS85PycxLt1UKDXHTtVBSyEvM TbVVitD1DQlSUihLzCkF8owM0ICDc4B7sJK+XYJbxtYHF9gLbltWHLst2sB4SqeLkYNDQsBE 4vaRmC5GTiBTTOLCvfVsXYxcHEICSxglNn1axArhPGeUeHzpCSNIlbBAlMTE9mmsILaIgIPE 9BcXwGxmAXWJ3Y9fskM0rGSUmLn7GDtIgk3AUKLrbRcbiM0rYCdxoO8T2CAWAVWJdz0vmEFs UYEYiZ+XHrFA1AhK/Jh8D8zmFDCQ6D+5gQligZnEl5eHoZbJS2xe85YZwhaXaG69yTKBUXAW kvZZSFpmIWmZhaRlASPLKkaR1NLi3PTcYkO94sTc4tK8dL3k/NxNjMB42nbs5+YdjJc2Bh9i FOBgVOLhfWC9IlKINbGsuDL3EKMEB7OSCG++yMpIId6UxMqq1KL8+KLSnNTiQ4ymQM9NZJYS Tc4HxnpeSbyhiaG5paGRsYWFuZGRkjiv+uWmSCGB9MSS1OzU1ILUIpg+Jg5OqQbG2UfPNTK4 /Zxp9OSdxfPv21osJv1XsbVbov9XT3/6u+R7jFZnbfekHbh/cvs9r7M7pf9O/bJnVd+bHezK 3lrr1vDPuGZ/5dDRCelLGX4UnTn/3X2yXfHP/KTdMpNYDiy+UlfgONPxmcSWYOFJzAfjdHRm byo/Gmag5hDCPDF8i4NozLqbudbJsUosxRmJhlrMRcWJALmpoVW9AgAA X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170901081947eucas1p2cd6cc223688b8189a55955eb0e8f1528 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-CMS-RootMailID: 20170826072710epcas2p26c5694499c94c97208acb4bd7950e69e X-RootMTR: 20170826072710epcas2p26c5694499c94c97208acb4bd7950e69e References: <20170826072650.10264-1-hch@lst.de> <20170826072650.10264-3-hch@lst.de> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Christoph, On 2017-08-26 09:26, Christoph Hellwig wrote: > DMA_MEMORY_IO was never used in the tree, so remove it. That means there is > no need for the DMA_MEMORY_MAP flag either now, so remove it as well and > change dma_declare_coherent_memory to return a normal errno value. > > Signed-off-by: Christoph Hellwig There are 2 minor issues, besides that: Reviewed-by: Marek Szyprowski > --- > Documentation/DMA-API.txt | 21 +--------- > arch/arm/mach-imx/mach-imx27_visstrim_m10.c | 43 +++++++------------- > arch/arm/mach-imx/mach-mx31moboard.c | 12 +++--- > arch/sh/drivers/pci/fixups-dreamcast.c | 3 +- > drivers/base/dma-coherent.c | 46 +++++++--------------- > drivers/base/dma-mapping.c | 7 +--- > .../platform/soc_camera/sh_mobile_ceu_camera.c | 5 +-- > drivers/scsi/NCR_Q720.c | 3 +- > drivers/usb/host/ohci-sm501.c | 7 ++-- > drivers/usb/host/ohci-tmio.c | 9 ++--- > include/linux/dma-mapping.h | 6 +-- > 11 files changed, 50 insertions(+), 112 deletions(-) > > diff --git a/Documentation/DMA-API.txt b/Documentation/DMA-API.txt > index ded50aed1cd8..da58585c7b3a 100644 > --- a/Documentation/DMA-API.txt > +++ b/Documentation/DMA-API.txt > @@ -590,30 +590,11 @@ size is the size of the area (must be multiples of PAGE_SIZE). > > flags can be ORed together and are: > > -- DMA_MEMORY_MAP - request that the memory returned from > - dma_alloc_coherent() be directly writable. > - > -- DMA_MEMORY_IO - request that the memory returned from > - dma_alloc_coherent() be addressable using read()/write()/memcpy_toio() etc. > - > -One or both of these flags must be present. > - > - DMA_MEMORY_EXCLUSIVE - only allocate memory from the declared regions. > Do not allow dma_alloc_coherent() to fall back to system memory when > it's out of memory in the declared region. > > -The return value will be either DMA_MEMORY_MAP or DMA_MEMORY_IO and > -must correspond to a passed in flag (i.e. no returning DMA_MEMORY_IO > -if only DMA_MEMORY_MAP were passed in) for success or zero for > -failure. > - > -Note, for DMA_MEMORY_IO returns, all subsequent memory returned by > -dma_alloc_coherent() may no longer be accessed directly, but instead > -must be accessed using the correct bus functions. If your driver > -isn't prepared to handle this contingency, it should not specify > -DMA_MEMORY_IO in the input flags. > - > -As a simplification for the platforms, only **one** such region of > +As a simplification for the platforms, only *one* such region of > memory may be declared per device. > > For reasons of efficiency, most platforms choose to track the declared > diff --git a/arch/arm/mach-imx/mach-imx27_visstrim_m10.c b/arch/arm/mach-imx/mach-imx27_visstrim_m10.c > index dd75a4756761..c2818af18c55 100644 > --- a/arch/arm/mach-imx/mach-imx27_visstrim_m10.c > +++ b/arch/arm/mach-imx/mach-imx27_visstrim_m10.c > @@ -245,7 +245,6 @@ static phys_addr_t mx2_camera_base __initdata; > static void __init visstrim_analog_camera_init(void) > { > struct platform_device *pdev; > - int dma; > > gpio_set_value(TVP5150_PWDN, 1); > ndelay(1); > @@ -258,12 +257,9 @@ static void __init visstrim_analog_camera_init(void) > if (IS_ERR(pdev)) > return; > > - dma = dma_declare_coherent_memory(&pdev->dev, > - mx2_camera_base, mx2_camera_base, > - MX2_CAMERA_BUF_SIZE, > - DMA_MEMORY_MAP | DMA_MEMORY_EXCLUSIVE); > - if (!(dma & DMA_MEMORY_MAP)) > - return; > + dma_declare_coherent_memory(&pdev->dev, mx2_camera_base, > + mx2_camera_base, MX2_CAMERA_BUF_SIZE, > + DMA_MEMORY_EXCLUSIVE); > } > > static void __init visstrim_reserve(void) > @@ -444,16 +440,13 @@ static const struct imx_ssi_platform_data visstrim_m10_ssi_pdata __initconst = { > static void __init visstrim_coda_init(void) > { > struct platform_device *pdev; > - int dma; > > pdev = imx27_add_coda(); > - dma = dma_declare_coherent_memory(&pdev->dev, > - mx2_camera_base + MX2_CAMERA_BUF_SIZE, > - mx2_camera_base + MX2_CAMERA_BUF_SIZE, > - MX2_CAMERA_BUF_SIZE, > - DMA_MEMORY_MAP | DMA_MEMORY_EXCLUSIVE); > - if (!(dma & DMA_MEMORY_MAP)) > - return; > + dma_declare_coherent_memory(&pdev->dev, > + mx2_camera_base + MX2_CAMERA_BUF_SIZE, > + mx2_camera_base + MX2_CAMERA_BUF_SIZE, > + MX2_CAMERA_BUF_SIZE, > + DMA_MEMORY_EXCLUSIVE); > } > > /* DMA deinterlace */ > @@ -466,24 +459,20 @@ static void __init visstrim_deinterlace_init(void) > { > int ret = -ENOMEM; > struct platform_device *pdev = &visstrim_deinterlace; > - int dma; > > ret = platform_device_register(pdev); > > - dma = dma_declare_coherent_memory(&pdev->dev, > - mx2_camera_base + 2 * MX2_CAMERA_BUF_SIZE, > - mx2_camera_base + 2 * MX2_CAMERA_BUF_SIZE, > - MX2_CAMERA_BUF_SIZE, > - DMA_MEMORY_MAP | DMA_MEMORY_EXCLUSIVE); > - if (!(dma & DMA_MEMORY_MAP)) > - return; > + dma_declare_coherent_memory(&pdev->dev, > + mx2_camera_base + 2 * MX2_CAMERA_BUF_SIZE, > + mx2_camera_base + 2 * MX2_CAMERA_BUF_SIZE, > + MX2_CAMERA_BUF_SIZE, > + DMA_MEMORY_EXCLUSIVE); > } > > /* Emma-PrP for format conversion */ > static void __init visstrim_emmaprp_init(void) > { > struct platform_device *pdev; > - int dma; > > pdev = imx27_add_mx2_emmaprp(); > if (IS_ERR(pdev)) > @@ -493,12 +482,10 @@ static void __init visstrim_emmaprp_init(void) > * Use the same memory area as the analog camera since both > * devices are, by nature, exclusive. > */ > - dma = dma_declare_coherent_memory(&pdev->dev, > + dma_declare_coherent_memory(&pdev->dev, > mx2_camera_base, mx2_camera_base, > MX2_CAMERA_BUF_SIZE, > - DMA_MEMORY_MAP | DMA_MEMORY_EXCLUSIVE); > - if (!(dma & DMA_MEMORY_MAP)) > - pr_err("Failed to declare memory for emmaprp\n"); > + DMA_MEMORY_EXCLUSIVE); Can we keep error message? It might be useful in case of any problems, because the return value is not propagated otherwise. > > [...] > diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h > index 9b12cb255063..92f7d84e51f5 100644 > --- a/include/linux/dma-mapping.h > +++ b/include/linux/dma-mapping.h > @@ -708,9 +708,7 @@ static inline int dma_get_cache_alignment(void) > #endif > > /* flags for the coherent memory api */ > -#define DMA_MEMORY_MAP 0x01 > -#define DMA_MEMORY_IO 0x02 > -#define DMA_MEMORY_EXCLUSIVE 0x04 > +#define DMA_MEMORY_EXCLUSIVE 0x01 > > #ifdef CONFIG_HAVE_GENERIC_DMA_COHERENT > int dma_declare_coherent_memory(struct device *dev, phys_addr_t phys_addr, > @@ -723,7 +721,7 @@ static inline int > dma_declare_coherent_memory(struct device *dev, phys_addr_t phys_addr, > dma_addr_t device_addr, size_t size, int flags) > { > - return 0; > + return -EINVAL; ENOSYS ? > } > > static inline void Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland