From mboxrd@z Thu Jan 1 00:00:00 1970 From: Clemens Ladisch Subject: Re: Buffer memory does not get allocated? Date: Fri, 05 Nov 2010 09:23:05 +0100 Message-ID: <4CD3BEE9.6070808@ladisch.de> References: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from out3.smtp.messagingengine.com (out3.smtp.messagingengine.com [66.111.4.27]) by alsa0.perex.cz (Postfix) with ESMTP id BB19E103934 for ; Fri, 5 Nov 2010 09:21:16 +0100 (CET) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: alsa-devel-bounces@alsa-project.org Errors-To: alsa-devel-bounces@alsa-project.org To: Radivoje Jovanovic Cc: alsa-devel@alsa-project.org List-Id: alsa-devel@alsa-project.org Radivoje Jovanovic wrote: > I am allocating memory for the buffers in my init call by doing: > snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_CONTINUOUS, > snd_dma_continuous_data(GFP_KERNEL), 256*1024, 256*1024); > > in my hw_params call I have: > ret= snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params)); > > here is the output from my hw_params call: > > called snd_pcm_lib_malloc_pages return=1 > params_buffer_bytes(hw_params)=32768 > Size of DMA area=32768 > Buffer size in bytes=262144 > Buffer virt address=9dc00000 > Buffer phys address=0 > > Now I am not sure why is my buffer size bigger than my DMA area. You did not say which values are output, but 262144 is 256*1024, so this is the preallocated buffer. The DMA is what is actually used with the current hw_params. > I assume that memory is not linear because of that SNDRV_DMA_TYPE_CONTINUOUS gives you continguous pages. > and that is why I do not have phys address to the buffer. It doesn't give you the physical address; it looks as if this memory is intended to be accessed only by the CPU. To get coherent memory with a DMA address for a specific device, use SNDRV_DMA_TYPE_DEV. (This must be supported by your architecture.) Regards, Clemens