Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751697AbcDUKfV (ORCPT ); Thu, 21 Apr 2016 06:35:21 -0400 Received: from foss.arm.com ([217.140.101.70]:53864 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751282AbcDUKfS (ORCPT ); Thu, 21 Apr 2016 06:35:18 -0400 Date: Thu, 21 Apr 2016 11:35:12 +0100 From: Catalin Marinas To: Stephen Boyd Cc: linux-kernel@vger.kernel.org, Laura Abbott , linux-arm@lists.infradead.org, Robin Murphy , Laura Abbott , Arnd Bergmann , Marek Szyprowski , Mimi Zohar , Andrew Morton , Mark Brown , Will Deacon , Ming Lei Subject: Re: [RFC/PATCHv2 v2 2/4] dma-mapping: Add dma_remap() APIs Message-ID: <20160421103512.GC23774@e104818-lin.cambridge.arm.com> References: <1461114269-13718-1-git-send-email-stephen.boyd@linaro.org> <1461114269-13718-3-git-send-email-stephen.boyd@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1461114269-13718-3-git-send-email-stephen.boyd@linaro.org> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1468 Lines: 33 Hi Stephen, On Tue, Apr 19, 2016 at 06:04:27PM -0700, Stephen Boyd wrote: > From: Laura Abbott > > Some systems are memory constrained but they need to load very > large firmwares. The firmware subsystem allows drivers to request > this firmware be loaded from the filesystem, but this requires > that the entire firmware be loaded into kernel memory first > before it's provided to the driver. This can lead to a situation > where we map the firmware twice, once to load the firmware into > kernel memory and once to copy the firmware into the final > resting place. > > This design creates needless memory pressure and delays loading > because we have to copy from kernel memory to somewhere else. > Let's add a couple DMA APIs that allow us to map DMA buffers into > the CPU's address space in arbitrary sizes. With this API, we can > allocate a DMA buffer with DMA_ATTR_NO_KERNEL_MAPPING and move a > small mapping window across our large DMA buffer to load the > firmware directly into buffer. The first two patches in this series don't make sense to me. I don't understand what the memory pressure is: physical or virtual? Because they don't seem to address the former (the DMA buffer is allocated in full) while the latter doesn't need any addressing at all on arm64, we have plenty of VA space. Why do you even need the coherent DMA API? Can you use the streaming API (map_sg etc.) with a separately allocated buffer? -- Catalin