From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mailserv.intranet.gr (mailserv.intranet.GR [146.124.14.106]) by ozlabs.org (Postfix) with ESMTP id E412D679F0 for ; Tue, 10 May 2005 23:52:39 +1000 (EST) Received: from mailserv.intranet.gr (localhost [127.0.0.1]) by mailserv.intranet.gr (8.13.1/8.13.1) with ESMTP id j4ADvGKk011946 for ; Tue, 10 May 2005 16:57:18 +0300 (EEST) Message-ID: <4280B8D2.4080702@intracom.gr> Date: Tue, 10 May 2005 16:36:18 +0300 From: Pantelis Antoniou MIME-Version: 1.0 To: Matt Porter References: <427F4D3F.1010802@intracom.gr> <20050509133808.A16776@cox.net> <4280985D.80108@intracom.gr> <20050510062744.A21835@cox.net> <4280B3CB.8030007@intracom.gr> <20050510064702.B21835@cox.net> In-Reply-To: <20050510064702.B21835@cox.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Cc: Tom Rini , linuxppc-embedded Subject: Re: [PATCH 03/04] Freescale Ethernet combined driver List-Id: Linux on Embedded PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Matt Porter wrote: > On Tue, May 10, 2005 at 04:14:51PM +0300, Pantelis Antoniou wrote: > >>Matt Porter wrote: >> >>>On Tue, May 10, 2005 at 08:13:48AM -0400, Dan Malek wrote: >>> >>> >>>>On May 10, 2005, at 7:17 AM, Pantelis Antoniou wrote: >>>> >>>> >>>> >>>>>This patch replace iopa use with virt_to_phys. >>>> >>>>Not gonna work ..... >>>> >>>>When you map uncached on 8xx you get a new vmalloc() >>>>space. The virt_to_xxx macros don't work on those addresses. >>>>You need to use the dma_consistent() function, stash the >>>>real physical address it returns and then use it where >>>>appropriate. >>> >>> >>>That and the use of virt_to_* and friends is deprecated by >>>the DMA API. You'll never get that upstream even if it were >>>a case where it did work. That's a good thing to know for >>>anybody doing other drivers... >>> >>>-Matt >>> >>> >> >>OK then. >> >>What's the recommended function to call to go from a >>virtual -> physical address, but without doing a cache >>flush/invalidate? > > > There is no generic function to do that in a driver since > no mainstream drivers in the kernel need to do it. Generally > you can rework the driver such that you cache the DMA address > as Dan suggested already. I don't know your exact usage, however, > you can allocate memory with dma_alloc_noncoherent() that is > cached on ppc32 NOT_CACHE_COHERENT prcoessors and stash the > dma_addr_t/void * for later use. The other way is to kmalloc and > dma_map_single() (stashing the same way) which is basically the > same thing. > > Do you have a case where this doesn't work? > No that will do just fine. I just want to know the recommended way to do it. > -Matt > > Regards Pantelis