diff options
Diffstat (limited to 'sound/core/pcm_memory.c')
| -rw-r--r-- | sound/core/pcm_memory.c | 24 | 
1 files changed, 6 insertions, 18 deletions
diff --git a/sound/core/pcm_memory.c b/sound/core/pcm_memory.c index 0af622c34e1..54debc07f5c 100644 --- a/sound/core/pcm_memory.c +++ b/sound/core/pcm_memory.c @@ -51,17 +51,9 @@ static const size_t snd_minimum_buffer = 16384;  static int preallocate_pcm_pages(struct snd_pcm_substream *substream, size_t size)  {  	struct snd_dma_buffer *dmab = &substream->dma_buffer; +	size_t orig_size = size;  	int err; -	/* already reserved? */ -	if (snd_dma_get_reserved_buf(dmab, substream->dma_buf_id) > 0) { -		if (dmab->bytes >= size) -			return 0; /* yes */ -		/* no, free the reserved block */ -		snd_dma_free_pages(dmab); -		dmab->bytes = 0; -	} -  	do {  		if ((err = snd_dma_alloc_pages(dmab->dev.type, dmab->dev.dev,  					       size, dmab)) < 0) { @@ -72,6 +64,10 @@ static int preallocate_pcm_pages(struct snd_pcm_substream *substream, size_t siz  		size >>= 1;  	} while (size >= snd_minimum_buffer);  	dmab->bytes = 0; /* tell error */ +	pr_warn("ALSA pcmC%dD%d%c,%d:%s: cannot preallocate for size %zu\n", +		substream->pcm->card->number, substream->pcm->device, +		substream->stream ? 'c' : 'p', substream->number, +		substream->pcm->name, orig_size);  	return 0;  } @@ -82,10 +78,7 @@ static void snd_pcm_lib_preallocate_dma_free(struct snd_pcm_substream *substream  {  	if (substream->dma_buffer.area == NULL)  		return; -	if (substream->dma_buf_id) -		snd_dma_reserve_buf(&substream->dma_buffer, substream->dma_buf_id); -	else -		snd_dma_free_pages(&substream->dma_buffer); +	snd_dma_free_pages(&substream->dma_buffer);  	substream->dma_buffer.area = NULL;  } @@ -260,11 +253,6 @@ static int snd_pcm_lib_preallocate_pages1(struct snd_pcm_substream *substream,   *   * Do pre-allocation for the given DMA buffer type.   * - * When substream->dma_buf_id is set, the function tries to look for - * the reserved buffer, and the buffer is not freed but reserved at - * destruction time.  The dma_buf_id must be unique for all systems - * (in the same DMA buffer type) e.g. using snd_dma_pci_buf_id(). - *   * Return: Zero if successful, or a negative error code on failure.   */  int snd_pcm_lib_preallocate_pages(struct snd_pcm_substream *substream,  | 
