From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D807EC43603 for ; Tue, 17 Dec 2019 10:25:14 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 603B920716 for ; Tue, 17 Dec 2019 10:25:14 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=alsa-project.org header.i=@alsa-project.org header.b="K9wG3HEd" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 603B920716 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=alsa-devel-bounces@alsa-project.org Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id 5CAC3165E; Tue, 17 Dec 2019 11:24:22 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz 5CAC3165E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1576578312; bh=wvNxDzrxU/+Wr4FYesixOewIq9oS0Ubdq8/vMtK5lpw=; h=Date:From:To:In-Reply-To:References:Cc:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=K9wG3HEdFHtggPZXP4ZVxUblyhmNxnYQ88PFcyfe1Bt/gYl/NsWiDS928r7Xyo5Ok EU4xKumlNRVTdlfoLiKpRAbbd9E4zeCCDp1xFy1fhFYTVK+jOozQINcgNNTZ0vGVzo uSUYhfPIaENH284WMYCdvk0sf3sQQVUlwDb849AU= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id 7B0C8F80088; Tue, 17 Dec 2019 11:24:05 +0100 (CET) Received: by alsa1.perex.cz (Postfix, from userid 50401) id 581D7F8025F; Tue, 17 Dec 2019 11:24:04 +0100 (CET) Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id 8A088F80088 for ; Tue, 17 Dec 2019 11:24:01 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz 8A088F80088 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 35B09AAF1; Tue, 17 Dec 2019 10:24:01 +0000 (UTC) Date: Tue, 17 Dec 2019 11:24:01 +0100 Message-ID: From: Takashi Iwai To: Cezary Rojewski In-Reply-To: <20191217095851.19629-6-cezary.rojewski@intel.com> References: <20191217095851.19629-1-cezary.rojewski@intel.com> <20191217095851.19629-6-cezary.rojewski@intel.com> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI/1.14.6 (Maruoka) FLIM/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL/10.8 Emacs/25.3 (x86_64-suse-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Cc: pierre-louis.bossart@linux.intel.com, alsa-devel@alsa-project.org, Divya Prakash , lgirdwood@gmail.com, tiwai@suse.com, broonie@kernel.org Subject: Re: [alsa-devel] [PATCH 5/7] ALSA: core: Implement compress page allocation and free routines X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: alsa-devel-bounces@alsa-project.org Sender: "Alsa-devel" On Tue, 17 Dec 2019 10:58:49 +0100, Cezary Rojewski wrote: > > Add simple malloc and free methods for memory management for compress > streams. Based on snd_pcm_lib_malloc_pages and snd_pcm_lib_free_pages > implementation. I see no user of these functions in the series. How these are supposed to be used? Takashi > > Signed-off-by: Cezary Rojewski > Signed-off-by: Divya Prakash > --- > include/sound/compress_driver.h | 5 ++++ > sound/core/compress_offload.c | 42 +++++++++++++++++++++++++++++++++ > 2 files changed, 47 insertions(+) > > diff --git a/include/sound/compress_driver.h b/include/sound/compress_driver.h > index 00f633c0c3ba..6ce8effa0b12 100644 > --- a/include/sound/compress_driver.h > +++ b/include/sound/compress_driver.h > @@ -67,6 +67,7 @@ struct snd_compr_runtime { > * @metadata_set: metadata set flag, true when set > * @next_track: has userspace signal next track transition, true when set > * @private_data: pointer to DSP private data > + * @dma_buffer: allocated buffer if any > */ > struct snd_compr_stream { > const char *name; > @@ -78,6 +79,7 @@ struct snd_compr_stream { > bool metadata_set; > bool next_track; > void *private_data; > + struct snd_dma_buffer dma_buffer; > }; > > /** > @@ -212,6 +214,9 @@ snd_compr_set_runtime_buffer(struct snd_compr_stream *stream, > } > } > > +int snd_compr_malloc_pages(struct snd_compr_stream *stream, size_t size); > +int snd_compr_free_pages(struct snd_compr_stream *stream); > + > int snd_compr_stop_error(struct snd_compr_stream *stream, > snd_pcm_state_t state); > > diff --git a/sound/core/compress_offload.c b/sound/core/compress_offload.c > index f34ce564d92c..dfb20ceb2d30 100644 > --- a/sound/core/compress_offload.c > +++ b/sound/core/compress_offload.c > @@ -488,6 +488,48 @@ snd_compr_get_codec_caps(struct snd_compr_stream *stream, unsigned long arg) > } > #endif /* !COMPR_CODEC_CAPS_OVERFLOW */ > > +int snd_compr_malloc_pages(struct snd_compr_stream *stream, size_t size) > +{ > + struct snd_dma_buffer *dmab; > + int ret; > + > + if (snd_BUG_ON(!(stream) || !(stream)->runtime)) > + return -EINVAL; > + dmab = kzalloc(sizeof(*dmab), GFP_KERNEL); > + if (!dmab) > + return -ENOMEM; > + dmab->dev = stream->dma_buffer.dev; > + ret = snd_dma_alloc_pages(dmab->dev.type, dmab->dev.dev, size, dmab); > + if (ret < 0) { > + kfree(dmab); > + return ret; > + } > + > + snd_compr_set_runtime_buffer(stream, dmab); > + stream->runtime->dma_bytes = size; > + return 1; > +} > +EXPORT_SYMBOL(snd_compr_malloc_pages); > + > +int snd_compr_free_pages(struct snd_compr_stream *stream) > +{ > + struct snd_compr_runtime *runtime = stream->runtime; > + > + if (snd_BUG_ON(!(stream) || !(stream)->runtime)) > + return -EINVAL; > + if (!runtime->dma_area) > + return 0; > + if (runtime->dma_buffer_p != &stream->dma_buffer) { > + /* It's a newly allocated buffer. Release it now. */ > + snd_dma_free_pages(runtime->dma_buffer_p); > + kfree(runtime->dma_buffer_p); > + } > + > + snd_compr_set_runtime_buffer(stream, NULL); > + return 0; > +} > +EXPORT_SYMBOL(snd_compr_free_pages); > + > /* revisit this with snd_pcm_preallocate_xxx */ > static int snd_compr_allocate_buffer(struct snd_compr_stream *stream, > struct snd_compr_params *params) > -- > 2.17.1 > _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org https://mailman.alsa-project.org/mailman/listinfo/alsa-devel