diff --git a/sound/drivers/aloop.c b/sound/drivers/aloop.c index 9ccdad89c288..54f8b17476a1 100644 --- a/sound/drivers/aloop.c +++ b/sound/drivers/aloop.c @@ -576,8 +576,7 @@ static void loopback_runtime_free(struct snd_pcm_runtime *runtime) static int loopback_hw_params(struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params) { - return snd_pcm_lib_alloc_vmalloc_buffer(substream, - params_buffer_bytes(params)); + return snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(params)); } static int loopback_hw_free(struct snd_pcm_substream *substream) @@ -589,7 +588,7 @@ static int loopback_hw_free(struct snd_pcm_substream *substream) mutex_lock(&dpcm->loopback->cable_lock); cable->valid &= ~(1 << substream->stream); mutex_unlock(&dpcm->loopback->cable_lock); - return snd_pcm_lib_free_vmalloc_buffer(substream); + return snd_pcm_lib_free_pages(substream); } static unsigned int get_cable_index(struct snd_pcm_substream *substream) @@ -765,7 +764,6 @@ static const struct snd_pcm_ops loopback_pcm_ops = { .prepare = loopback_prepare, .trigger = loopback_trigger, .pointer = loopback_pointer, - .page = snd_pcm_lib_get_vmalloc_page, }; static int loopback_pcm_new(struct loopback *loopback, @@ -780,6 +778,8 @@ static int loopback_pcm_new(struct loopback *loopback, return err; snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &loopback_pcm_ops); snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &loopback_pcm_ops); + snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_VMALLOC, + NULL, 0, 0); pcm->private_data = loopback; pcm->info_flags = 0;