From: Hongbo Zhang <hongbo.zhang@freescale.com>
To: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: leo.li@freescale.com, vkoul@infradead.org,
linux-kernel@vger.kernel.org, scottwood@freescale.com,
dmaengine@vger.kernel.org, dan.j.williams@intel.com,
linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH v3 4/8] DMA: Freescale: add fsl_dma_free_descriptor() to reduce code duplication
Date: Fri, 11 Apr 2014 16:14:35 +0800 [thread overview]
Message-ID: <5347A46B.30206@freescale.com> (raw)
In-Reply-To: <1397129361.11914.96.camel@smile.fi.intel.com>
On 04/10/2014 07:29 PM, Andy Shevchenko wrote:
> On Thu, 2014-04-10 at 15:10 +0800, hongbo.zhang@freescale.com wrote:
>> From: Hongbo Zhang <hongbo.zhang@freescale.com>
>>
>> There are several places where descriptors are freed using identical code.
>> This patch puts this code into a function to reduce code duplication.
>>
>> Signed-off-by: Hongbo Zhang <hongbo.zhang@freescale.com>
>> Signed-off-by: Qiang Liu <qiang.liu@freescale.com>
>> ---
>> drivers/dma/fsldma.c | 30 ++++++++++++++++++------------
>> 1 file changed, 18 insertions(+), 12 deletions(-)
>>
>> diff --git a/drivers/dma/fsldma.c b/drivers/dma/fsldma.c
>> index b71cc04..b5a0ffa 100644
>> --- a/drivers/dma/fsldma.c
>> +++ b/drivers/dma/fsldma.c
>> @@ -418,6 +418,19 @@ static dma_cookie_t fsl_dma_tx_submit(struct dma_async_tx_descriptor *tx)
>> }
>>
>> /**
>> + * fsl_dma_free_descriptor - Free descriptor from channel's DMA pool.
>> + * @chan : Freescale DMA channel
>> + * @desc: descriptor to be freed
>> + */
>> +static void fsl_dma_free_descriptor(struct fsldma_chan *chan,
>> + struct fsl_desc_sw *desc)
>> +{
>> + list_del(&desc->node);
>> + chan_dbg(chan, "LD %p free\n", desc);
>> + dma_pool_free(chan->desc_pool, desc, desc->async_tx.phys);
>> +}
>> +
>> +/**
>> * fsl_dma_alloc_descriptor - Allocate descriptor from channel's DMA pool.
>> * @chan : Freescale DMA channel
>> *
>> @@ -489,11 +502,8 @@ static void fsldma_free_desc_list(struct fsldma_chan *chan,
>> {
>> struct fsl_desc_sw *desc, *_desc;
>>
>> - list_for_each_entry_safe(desc, _desc, list, node) {
>> - list_del(&desc->node);
>> - chan_dbg(chan, "LD %p free\n", desc);
>> - dma_pool_free(chan->desc_pool, desc, desc->async_tx.phys);
>> - }
>> + list_for_each_entry_safe(desc, _desc, list, node)
>> + fsl_dma_free_descriptor(chan, desc);
>> }
>>
>> static void fsldma_free_desc_list_reverse(struct fsldma_chan *chan,
>> @@ -501,11 +511,8 @@ static void fsldma_free_desc_list_reverse(struct fsldma_chan *chan,
>> {
>> struct fsl_desc_sw *desc, *_desc;
>>
>> - list_for_each_entry_safe_reverse(desc, _desc, list, node) {
>> - list_del(&desc->node);
>> - chan_dbg(chan, "LD %p free\n", desc);
>> - dma_pool_free(chan->desc_pool, desc, desc->async_tx.phys);
>> - }
>> + list_for_each_entry_safe_reverse(desc, _desc, list, node)
>> + fsl_dma_free_descriptor(chan, desc);
>> }
>>
>> /**
>> @@ -819,8 +826,7 @@ static void fsldma_cleanup_descriptor(struct fsldma_chan *chan,
>> dma_run_dependencies(txd);
>>
>> dma_descriptor_unmap(txd);
>> - chan_dbg(chan, "LD %p free\n", desc);
>> - dma_pool_free(chan->desc_pool, desc, txd->phys);
>> + fsl_dma_free_descriptor(chan, desc);
> Here is no list_del() call since it's been called in dma_do_tasklet().
> What will be the result of double list_del() against the same node?
Not clear with your point.
This patch is only introducing a common fsl_dma_free_descriptor() to
reduce code duplication. And later in the patch 6/8 the
fsldma_cleanup_descriptor() is replaced by fsldma_cleanup_descriptorS().
>> }
>>
>> /**
>
WARNING: multiple messages have this Message-ID (diff)
From: Hongbo Zhang <hongbo.zhang@freescale.com>
To: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: <vkoul@infradead.org>, <dan.j.williams@intel.com>,
<dmaengine@vger.kernel.org>, <scottwood@freescale.com>,
<leo.li@freescale.com>, <linuxppc-dev@lists.ozlabs.org>,
<linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v3 4/8] DMA: Freescale: add fsl_dma_free_descriptor() to reduce code duplication
Date: Fri, 11 Apr 2014 16:14:35 +0800 [thread overview]
Message-ID: <5347A46B.30206@freescale.com> (raw)
In-Reply-To: <1397129361.11914.96.camel@smile.fi.intel.com>
On 04/10/2014 07:29 PM, Andy Shevchenko wrote:
> On Thu, 2014-04-10 at 15:10 +0800, hongbo.zhang@freescale.com wrote:
>> From: Hongbo Zhang <hongbo.zhang@freescale.com>
>>
>> There are several places where descriptors are freed using identical code.
>> This patch puts this code into a function to reduce code duplication.
>>
>> Signed-off-by: Hongbo Zhang <hongbo.zhang@freescale.com>
>> Signed-off-by: Qiang Liu <qiang.liu@freescale.com>
>> ---
>> drivers/dma/fsldma.c | 30 ++++++++++++++++++------------
>> 1 file changed, 18 insertions(+), 12 deletions(-)
>>
>> diff --git a/drivers/dma/fsldma.c b/drivers/dma/fsldma.c
>> index b71cc04..b5a0ffa 100644
>> --- a/drivers/dma/fsldma.c
>> +++ b/drivers/dma/fsldma.c
>> @@ -418,6 +418,19 @@ static dma_cookie_t fsl_dma_tx_submit(struct dma_async_tx_descriptor *tx)
>> }
>>
>> /**
>> + * fsl_dma_free_descriptor - Free descriptor from channel's DMA pool.
>> + * @chan : Freescale DMA channel
>> + * @desc: descriptor to be freed
>> + */
>> +static void fsl_dma_free_descriptor(struct fsldma_chan *chan,
>> + struct fsl_desc_sw *desc)
>> +{
>> + list_del(&desc->node);
>> + chan_dbg(chan, "LD %p free\n", desc);
>> + dma_pool_free(chan->desc_pool, desc, desc->async_tx.phys);
>> +}
>> +
>> +/**
>> * fsl_dma_alloc_descriptor - Allocate descriptor from channel's DMA pool.
>> * @chan : Freescale DMA channel
>> *
>> @@ -489,11 +502,8 @@ static void fsldma_free_desc_list(struct fsldma_chan *chan,
>> {
>> struct fsl_desc_sw *desc, *_desc;
>>
>> - list_for_each_entry_safe(desc, _desc, list, node) {
>> - list_del(&desc->node);
>> - chan_dbg(chan, "LD %p free\n", desc);
>> - dma_pool_free(chan->desc_pool, desc, desc->async_tx.phys);
>> - }
>> + list_for_each_entry_safe(desc, _desc, list, node)
>> + fsl_dma_free_descriptor(chan, desc);
>> }
>>
>> static void fsldma_free_desc_list_reverse(struct fsldma_chan *chan,
>> @@ -501,11 +511,8 @@ static void fsldma_free_desc_list_reverse(struct fsldma_chan *chan,
>> {
>> struct fsl_desc_sw *desc, *_desc;
>>
>> - list_for_each_entry_safe_reverse(desc, _desc, list, node) {
>> - list_del(&desc->node);
>> - chan_dbg(chan, "LD %p free\n", desc);
>> - dma_pool_free(chan->desc_pool, desc, desc->async_tx.phys);
>> - }
>> + list_for_each_entry_safe_reverse(desc, _desc, list, node)
>> + fsl_dma_free_descriptor(chan, desc);
>> }
>>
>> /**
>> @@ -819,8 +826,7 @@ static void fsldma_cleanup_descriptor(struct fsldma_chan *chan,
>> dma_run_dependencies(txd);
>>
>> dma_descriptor_unmap(txd);
>> - chan_dbg(chan, "LD %p free\n", desc);
>> - dma_pool_free(chan->desc_pool, desc, txd->phys);
>> + fsl_dma_free_descriptor(chan, desc);
> Here is no list_del() call since it's been called in dma_do_tasklet().
> What will be the result of double list_del() against the same node?
Not clear with your point.
This patch is only introducing a common fsl_dma_free_descriptor() to
reduce code duplication. And later in the patch 6/8 the
fsldma_cleanup_descriptor() is replaced by fsldma_cleanup_descriptorS().
>> }
>>
>> /**
>
next prev parent reply other threads:[~2014-04-11 8:14 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-10 7:09 [PATCH v3 0/8] DMA: Freescale: driver cleanups and enhancements hongbo.zhang
2014-04-10 7:09 ` hongbo.zhang
2014-04-10 7:09 ` [PATCH v3 1/8] DMA: Freescale: remove the unnecessary FSL_DMA_LD_DEBUG hongbo.zhang
2014-04-10 7:09 ` hongbo.zhang
2014-04-10 7:20 ` [PATCH v3 0/8] DMA: Freescale: driver cleanups and enhancements Hongbo Zhang
2014-04-10 7:20 ` Hongbo Zhang
2014-04-10 7:09 ` [PATCH v3 2/8] DMA: Freescale: unify register access methods hongbo.zhang
2014-04-10 7:09 ` hongbo.zhang
2014-04-10 8:46 ` David Laight
2014-04-10 8:46 ` David Laight
2014-04-10 9:33 ` Hongbo Zhang
2014-04-10 7:10 ` [PATCH v3 3/8] DMA: Freescale: remove attribute DMA_INTERRUPT of dmaengine hongbo.zhang
2014-04-10 7:10 ` hongbo.zhang
2014-04-10 7:10 ` [PATCH v3 4/8] DMA: Freescale: add fsl_dma_free_descriptor() to reduce code duplication hongbo.zhang
2014-04-10 7:10 ` hongbo.zhang
2014-04-10 11:29 ` Andy Shevchenko
2014-04-10 11:29 ` Andy Shevchenko
2014-04-11 8:14 ` Hongbo Zhang [this message]
2014-04-11 8:14 ` Hongbo Zhang
2014-04-14 13:40 ` Andy Shevchenko
2014-04-14 13:40 ` Andy Shevchenko
2014-04-18 4:09 ` Hongbo Zhang
2014-04-18 4:09 ` Hongbo Zhang
2014-04-10 7:10 ` [PATCH v3 5/8] DMA: Freescale: move functions to avoid forward declarations hongbo.zhang
2014-04-10 7:10 ` hongbo.zhang
2014-04-10 7:10 ` [PATCH v3 6/8] DMA: Freescale: change descriptor release process for supporting async_tx hongbo.zhang
2014-04-10 7:10 ` hongbo.zhang
2014-04-10 11:56 ` Andy Shevchenko
2014-04-10 11:56 ` Andy Shevchenko
2014-04-11 8:00 ` Hongbo Zhang
2014-04-11 8:00 ` Hongbo Zhang
2014-04-11 8:33 ` Hongbo Zhang
2014-04-11 8:33 ` Hongbo Zhang
2014-04-14 13:41 ` Andy Shevchenko
2014-04-14 13:41 ` Andy Shevchenko
2014-04-10 7:10 ` [PATCH v3 7/8] DMA: Freescale: use spin_lock_bh instead of spin_lock_irqsave hongbo.zhang
2014-04-10 7:10 ` hongbo.zhang
2014-04-10 7:10 ` [PATCH v3 8/8] DMA: Freescale: add suspend resume functions for DMA driver hongbo.zhang
2014-04-10 7:10 ` hongbo.zhang
2014-04-10 12:05 ` Andy Shevchenko
2014-04-10 12:05 ` Andy Shevchenko
2014-04-11 7:42 ` Hongbo Zhang
2014-04-11 7:42 ` Hongbo Zhang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5347A46B.30206@freescale.com \
--to=hongbo.zhang@freescale.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=dan.j.williams@intel.com \
--cc=dmaengine@vger.kernel.org \
--cc=leo.li@freescale.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=scottwood@freescale.com \
--cc=vkoul@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.