Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756641AbdDRMvv (ORCPT ); Tue, 18 Apr 2017 08:51:51 -0400 Received: from foss.arm.com ([217.140.101.70]:56538 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932073AbdDRMvt (ORCPT ); Tue, 18 Apr 2017 08:51:49 -0400 Subject: Re: [PATCH v3 0/7] ARM: Fix dma_alloc_coherent() and friends for NOMMU To: =?UTF-8?B?U3plbXrFkSBBbmRyw6Fz?= References: <1489137839-549-1-git-send-email-vladimir.murzin@arm.com> <90e219f3-7139-c11c-a635-509173d4148a@arm.com> <33321273-E3E7-459B-A615-5ADA52445AA1@esh.hu> <186f0c06-39ce-cb88-35e5-6dd57aa81166@arm.com> <4e3ce329-6194-043b-0d69-cbec6b08e38e@arm.com> Cc: Mark Rutland , Joerg Roedel , alexandre.torgue@st.com, Yoshinori Sato , Greg Kroah-Hartman , linux@armlinux.org.uk, Michal Nazarewicz , linux-kernel@vger.kernel.org, Christian Borntraeger , Doug Ledford , Rich Felker , Alan Stern , kbuild-all@01.org, benjamin.gaignard@linaro.org, Rob Herring , akpm@linux-foundation.org, Roger Quadros , robin.murphy@arm.com, linux-arm-kernel@lists.infradead.org, Marek Szyprowski From: Vladimir Murzin Message-ID: <21ea43fb-0d3d-88e2-12ee-4a114e9d8459@arm.com> Date: Tue, 18 Apr 2017 13:51:35 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 In-Reply-To: <4e3ce329-6194-043b-0d69-cbec6b08e38e@arm.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 5719 Lines: 144 FYI, nothing has changed since last "ping" - András and Alexandre are still dependant on this series to safely enable DMA on their platforms. It is really scary that these patches do not move forward even though they are supposed to fix the real issue :( Thanks Vladimir On 29/03/17 09:17, Vladimir Murzin wrote: > Ping! > > On 23/03/17 09:26, Vladimir Murzin wrote: >> On 22/03/17 12:23, Szemző András wrote: >>> I’ve tested this v3 version on my Atmel armv7m board with several drivers with DMA and enabled caches, >>> and I’ve not seen any issues. >>> >>> You can add my Tested-by. >> >> Much appreciated! >> >> Russell, Andrew, Greg, any advise on how to get this series merged? Patches >> has been circulated on a list since December last year and without them András >> and Alexandre cannot safely enable DMA on their platforms. >> >> Cheers >> Vladimir >> >>> >>> Thanks for the patches! >>> >>> Andras >>> >>>> On 2017. Mar 16., at 10:03, Vladimir Murzin wrote: >>>> >>>> Gentle ping! >>>> >>>> On 10/03/17 09:23, Vladimir Murzin wrote: >>>>> It seem that addition of cache support for M-class CPUs uncovered >>>>> latent bug in DMA usage. NOMMU memory model has been treated as being >>>>> always consistent; however, for R/M CPU classes memory can be covered >>>>> by MPU which in turn might configure RAM as Normal i.e. bufferable and >>>>> cacheable. It breaks dma_alloc_coherent() and friends, since data can >>>>> stuck in caches now or be buffered. >>>>> >>>>> This patch set is trying to address the issue by providing region of >>>>> memory suitable for consistent DMA operations. It is supposed that >>>>> such region is marked by MPU as non-cacheable. Robin suggested to >>>>> advertise such memory as reserved shared-dma-pool, rather then using >>>>> homebrew command line option, and extend dma-coherent to provide >>>>> default DMA area in the similar way as it is done for CMA (PATCH >>>>> 4/7). It allows us to offload all bookkeeping on generic coherent DMA >>>>> framework, and it seems that it might be reused by other architectures >>>>> like c6x and blackfin. >>>>> >>>>> While reviewing/testing previous vesrions of the patch set it turned >>>>> out that dma-coherent does not take into account "dma-ranges" device >>>>> tree property, so it is addressed in PATCH 3/7. >>>>> >>>>> For ARM, dedicated DMA region is required for cases other than: >>>>> - MMU/MPU is off >>>>> - cpu is v7m w/o cache support >>>>> - device is coherent >>>>> >>>>> In case one of the above conditions is true dma operations are forced >>>>> to be coherent and wired with dma_noop_ops. >>>>> >>>>> To make life easier NOMMU dma operations are kept in separate >>>>> compilation unit. >>>>> >>>>> Since the issue was reported in the same time as Benjamin sent his >>>>> patch [1] to allow mmap for NOMMU, his case is also addressed in this >>>>> series (PATCH 1/7 and PATCH 2/7). >>>>> >>>>> Thanks! >>>>> >>>>> [1] http://www.armlinux.org.uk/developer/patches/viewpatch.php?id=8633/1 >>>>> >>>>> Cc: Joerg Roedel >>>>> Cc: Christian Borntraeger >>>>> Cc: Michal Nazarewicz >>>>> Cc: Marek Szyprowski >>>>> Cc: Alan Stern >>>>> Cc: Yoshinori Sato >>>>> Cc: Rich Felker >>>>> Cc: Roger Quadros >>>>> Cc: Greg Kroah-Hartman >>>>> Cc: Rob Herring >>>>> Cc: Mark Rutland >>>>> Cc: Doug Ledford >>>>> >>>>> Changelog: >>>>> v2 -> v3 >>>>> - fixed warnings reported by Alexandre and kbuild robot >>>>> >>>>> v1 -> v2 >>>>> - rebased on v4.11-rc1 >>>>> - added Robin's Reviewed-by >>>>> - dedicated flag is introduced to use dev->dma_pfn_offset >>>>> rather than mem->device_base in case memory region is >>>>> configured via device tree (so Tested-by discarded there) >>>>> >>>>> RFC v6 -> v1 >>>>> - dropped RFC tag >>>>> - added Alexandre's Tested-by >>>>> >>>>> Vladimir Murzin (7): >>>>> dma: Take into account dma_pfn_offset >>>>> dma: Add simple dma_noop_mmap >>>>> drivers: dma-coherent: Account dma_pfn_offset when used with device >>>>> tree >>>>> drivers: dma-coherent: Introduce default DMA pool >>>>> ARM: NOMMU: Introduce dma operations for noMMU >>>>> ARM: NOMMU: Set ARM_DMA_MEM_BUFFERABLE for M-class cpus >>>>> ARM: dma-mapping: Remove traces of NOMMU code >>>>> >>>>> .../bindings/reserved-memory/reserved-memory.txt | 3 + >>>>> arch/arm/Kconfig | 1 + >>>>> arch/arm/include/asm/dma-mapping.h | 2 +- >>>>> arch/arm/mm/Kconfig | 2 +- >>>>> arch/arm/mm/Makefile | 5 +- >>>>> arch/arm/mm/dma-mapping-nommu.c | 253 +++++++++++++++++++++ >>>>> arch/arm/mm/dma-mapping.c | 29 +-- >>>>> drivers/base/dma-coherent.c | 74 +++++- >>>>> lib/dma-noop.c | 29 ++- >>>>> 9 files changed, 354 insertions(+), 44 deletions(-) >>>>> create mode 100644 arch/arm/mm/dma-mapping-nommu.c >>>>> >>>> >>> >>> >> >> >> _______________________________________________ >> linux-arm-kernel mailing list >> linux-arm-kernel@lists.infradead.org >> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel >> > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel >