From mboxrd@z Thu Jan 1 00:00:00 1970 Received: with ECARTIS (v1.0.0; list linux-mips); Fri, 27 Nov 2009 10:26:20 +0100 (CET) Received: from cantor.suse.de ([195.135.220.2]:35348 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-OK) by eddie.linux-mips.org with ESMTP id S1492047AbZK0J0Q (ORCPT ); Fri, 27 Nov 2009 10:26:16 +0100 Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.221.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.suse.de (Postfix) with ESMTP id 2541D9C247; Fri, 27 Nov 2009 10:26:16 +0100 (CET) Date: Fri, 27 Nov 2009 10:26:15 +0100 Message-ID: From: Takashi Iwai To: wuzhangjin@gmail.com Cc: alsa-devel@alsa-project.org, Ralf Baechle , Thomas Bogendoerfer , linux-mips@linux-mips.org, Benjamin Herrenschmidt , Kumar Gala , Becky Bruce Subject: Re: [PATCH 3/5] ALSA: pcm - fix page conversion on non-coherent MIPS arch In-Reply-To: <1259293978.3197.92.camel@falcon.domain.org> References: <1259248388-20095-1-git-send-email-tiwai@suse.de> <1259248388-20095-2-git-send-email-tiwai@suse.de> <1259248388-20095-3-git-send-email-tiwai@suse.de> <1259248388-20095-4-git-send-email-tiwai@suse.de> <1259293978.3197.92.camel@falcon.domain.org> User-Agent: Wanderlust/2.15.6 (Almost Unreal) SEMI/1.14.6 (Maruoka) FLIM/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL/10.7 Emacs/23.1 (x86_64-suse-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=US-ASCII Return-Path: X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0) X-Orcpt: rfc822;linux-mips@linux-mips.org Original-Recipient: rfc822;linux-mips@linux-mips.org X-archive-position: 25174 X-ecartis-version: Ecartis v1.0.0 Sender: linux-mips-bounce@linux-mips.org Errors-to: linux-mips-bounce@linux-mips.org X-original-sender: tiwai@suse.de Precedence: bulk X-list: linux-mips At Fri, 27 Nov 2009 11:52:58 +0800, Wu Zhangjin wrote: > > On Thu, 2009-11-26 at 16:13 +0100, Takashi Iwai wrote: > > The non-coherent MIPS arch doesn't give the correct address by a simple > > virt_to_page() for pages allocated via dma_alloc_coherent(). > > > > Original patch by Wu Zhangjin . A proper check of the > > buffer allocation type was added to avoid the wrong conversion. > > > > Note that this doesn't fix perfectly: the pages should be marked with > > proper pgprot value. This will be done in a future implementation like > > the conversion to dma_mmap_coherent(). > > > > Signed-off-by: Takashi Iwai > > --- > > sound/core/pcm_native.c | 4 ++++ > > 1 files changed, 4 insertions(+), 0 deletions(-) > > > > diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c > > index c906be2..e48c5f6 100644 > > --- a/sound/core/pcm_native.c > > +++ b/sound/core/pcm_native.c > > @@ -3066,6 +3066,10 @@ static inline struct page * > > snd_pcm_default_page_ops(struct snd_pcm_substream *substream, unsigned long ofs) > > { > > void *vaddr = substream->runtime->dma_area + ofs; > > +#if defined(CONFIG_MIPS) && defined(CONFIG_DMA_NONCOHERENT) > > + if (substream->dma_buffer.dev.type == SNDRV_DMA_TYPE_DEV) > > + return virt_to_page(CAC_ADDR(vaddr)); > > +#endif > > return virt_to_page(vaddr); > > } > > Works well on Loongson family machines, thanks! Thanks for checking! Takashi