mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Dan Williams" <dan.j.williams@intel.com>
To: "Guennadi Liakhovetski" <g.liakhovetski@gmx.de>
Cc: linux-kernel@vger.kernel.org,
	linux-fbdev-devel@lists.sourceforge.net, adaplas@gmail.com,
	"Sascha Hauer" <s.hauer@pengutronix.de>,
	linux-arm-kernel@lists.arm.linux.org.uk
Subject: Re: [PATCH 1/4 v2] dmaengine: add a tx_free method to struct dma_async_tx_descriptor
Date: Wed, 10 Dec 2008 19:01:49 -0700	[thread overview]
Message-ID: <e9c3a7c20812101801r19c8fb40s6b8ce9bd6c565fed@mail.gmail.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0812110011440.8273@axis700.grange>

On Wed, Dec 10, 2008 at 5:30 PM, Guennadi Liakhovetski
<g.liakhovetski@gmx.de> wrote:
> Hi Dan,
>
> On Wed, 10 Dec 2008, Dan Williams wrote:
>
>> On Wed, Dec 10, 2008 at 3:36 AM, Guennadi Liakhovetski
>> <g.liakhovetski@gmx.de> wrote:
>> > From: Guennadi Liakhovetski <lg@denx.de>
>> >
>> > Some users reuse DMA transaction descriptors multiple times and need an
>> > explicit call to release them. An example of such a user is Video4Linux, which
>> > has to be able to release descriptors on ioctl(VIDIOC_DQBUF).
>> >
>> > Signed-off-by: Guennadi Liakhovetski <lg@denx.de>
>>
>>
>> Hi Guennadi,
>>
>> Other dmaengine drivers have tasklets that scan the list of completed
>> descriptors and free the "acked" ones.  This happens in the cleanup
>> tasklet...
>> /me looks
>> ...hmm this driver does not have a cleanup routine?  Ideally support
>> for ioctl(VIDIOC_DQBUF) could be achieved through this mechanism
>> without needing to increase the size of dma_async_tx_descriptor (which
>> has cache utilization impacts on other drivers).
>
> You mean there are drivers, that have struct dma_async_tx_descriptor on
> stack?

huh?

> And you mean, that increasing the size
> of the struct by one pointer and letting users explicitly free those
> descriptors when they want is worse than introducing a tasklet that will
> have to periodically scan the list of descriptors while other hot paths
> will move elements to and from this list, look for acked elements, lock
> the list and free those elements? Periodically, because although we have
> an event when to free them - on ioctl - there is no API to trigger that
> tasklet.

There are a few events that trigger this: completion interrupt,
someone polls is_tx_complete, we run out of descriptors.

> Or am I missing something? I can do this, it just sounds strange
> to me.

You are missing that existing drivers need to do this anyway to to
handle operation completion actions.  So, while they are at it they
also free the descriptor which relieves client code from needing to
track what it has in-flight versus completed, especially since clients
may not get a handle to each descriptor a driver creates on its
behalf.

What I am suggesting is that other dmaengine drivers would handle this
implicitly after one of the above events...  can this happen in the
ipu_idmac case as well?

Thanks,
Dan

  reply	other threads:[~2008-12-11  2:01 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-12-10 10:35 [PATCH 0/4 v2] i.MX31: dmaengine and framebuffer drivers Guennadi Liakhovetski
2008-12-10 10:36 ` [PATCH 1/4 v2] dmaengine: add a tx_free method to struct dma_async_tx_descriptor Guennadi Liakhovetski
2008-12-10 19:58   ` Dan Williams
2008-12-11  0:30     ` Guennadi Liakhovetski
2008-12-11  2:01       ` Dan Williams [this message]
2008-12-11 15:55         ` Guennadi Liakhovetski
2008-12-11 16:43           ` Dan Williams
2008-12-11 16:56             ` Guennadi Liakhovetski
2008-12-10 10:36 ` [PATCH 2/4 v2] i.MX31: Image Processing Unit DMA and IRQ drivers Guennadi Liakhovetski
2008-12-10 13:26   ` Dmitry Krivoschekov
2008-12-10 13:49     ` Guennadi Liakhovetski
2008-12-10 10:36 ` [PATCH 3/4 v2] i.MX31: framebuffer driver Guennadi Liakhovetski
2008-12-10 16:23   ` Herring Robert
2008-12-10 16:47     ` Guennadi Liakhovetski
2008-12-11  1:32       ` Herring Robert
2008-12-10 10:36 ` [PATCH 4/4 v2] i.MX31: platform bindings and initialisation for IPU and framebuffer drivers Guennadi Liakhovetski

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=e9c3a7c20812101801r19c8fb40s6b8ce9bd6c565fed@mail.gmail.com \
    --to=dan.j.williams@intel.com \
    --cc=adaplas@gmail.com \
    --cc=g.liakhovetski@gmx.de \
    --cc=linux-arm-kernel@lists.arm.linux.org.uk \
    --cc=linux-fbdev-devel@lists.sourceforge.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=s.hauer@pengutronix.de \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®