From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pekka Enberg Subject: Re: [PATCH v3] ad7877: keep dma rx buffers in seperate cache lines Date: Wed, 12 May 2010 00:01:02 +0300 Message-ID: <4BE9C58E.4070204@cs.helsinki.fi> References: <1273487642-2169-1-git-send-email-os@emlix.com> <20100511063309.GC9644@core.coreip.homeip.net> <1273608441.15067.1002.camel@calx> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Return-path: Received: from courier.cs.helsinki.fi ([128.214.9.1]:34340 "EHLO mail.cs.helsinki.fi" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752267Ab0EKVBd (ORCPT ); Tue, 11 May 2010 17:01:33 -0400 In-Reply-To: Sender: linux-input-owner@vger.kernel.org List-Id: linux-input@vger.kernel.org To: Mike Frysinger Cc: Christoph Lameter , Matt Mackall , Dmitry Torokhov , Andrew Morton , Oskar Schirmer , Michael Hennerich , linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, =?UTF-8?B?RGFuaWVsIEdsw7Zja25lcg==?= , Oliver Schneidewind , Johannes Weiner , Nick Piggin , David Rientjes , David Brownell , Grant Likely Mike Frysinger wrote: > On Tue, May 11, 2010 at 16:46, Christoph Lameter wrote: >> On Tue, 11 May 2010, Mike Frysinger wrote: >>>> DMA. If the arch can only DMA into cacheline aligned objects then the >>>> correct method is to force kmalloc alignment to cacheline size. >>> these are SPI drivers and are usable on any arch that supports a SPI >>> bus (which is pretty much every arch). forget about "embedded" >>> arches. >>> >>> the issue here is simple: a SPI driver (AD7877) needs to do a receive >>> SPI transfer into a DMA safe buffer. what is the exact API to >>> dynamically allocate memory for the structure with this buffer >>> embedded in it such that the start of the structure is cached aligned >>> ? creating a dedicated kmem cache may work, but it isnt a scalable >>> solution if every SPI driver needs to create its own cache. >> kmalloc returns a pointer to a DMA safe buffer. There is no requirement on >> the x86 hardware that the DMA buffers have to be cache aligned. Cachelines >> will be invalidated as needed. > > so this guarantee is made by the kmalloc() API ? and for arches where > the cacheline invalidation is handled in software rather than > hardware, they must declare a min alignment value for kmalloc to be at > least as big as their cache alignment ? > > does the phrase "DMA safe buffer" imply cache alignment ? Yes, you should be able to DMA into kmalloc'd memory. IIRC the block or the SCSI layer depends on that.