From: jassisinghbrar@gmail.com (jassi brar)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 0/7] DMAENGINE: fixes and PrimeCells
Date: Sat, 8 May 2010 11:37:02 +0900 [thread overview]
Message-ID: <m2u1b68c6791005071937s5b2bbb60p6de395a6c06a963e@mail.gmail.com> (raw)
In-Reply-To: <k2k63386a3d1005070910kcdb516dcga60c24043b1b44de@mail.gmail.com>
On Sat, May 8, 2010 at 1:10 AM, Linus Walleij
<linus.ml.walleij@gmail.com> wrote:
> Surely circular linked buffers and other goodies can be retrofitted into the
> DMAengine without a complete redesign? I only see a new slave call
> to support that really, in addition to the existing sglist interface.
well, before taking up the PL330 dma api driver, 'async' character of it
was the only concern I had in mind. That still is, but I came across a
a few more peculiarities while implementing the driver.
a) Async:- For lazy transfers of mem to mem this may be ok.
But there might be devices the employ DMA to do extensive M2M transfers
(say dedicated multimedia oriented devices) the 'async' nature might be
a bottleneck. So too for M<=>D with a fast device with shallow FIFO.
There may be clients that don't wanna do much upon DMA done, but they
do need notifications ASAP. By definition, this API forbids such
expectations.
IMHO, a DMA api should be as quick as possible - callbacks done in IRQ context.
But since there maybe clients that need to do sleepable stuff in
callbacks, the API
may do two callbacks - 'quick' in irq context and 'lazy' from
tasklets scheduled from
the IRQ. Most clients will provide either, while some may provide
both callback functions.
b) There seems to be no clear way of reporting failed transfers. The
device_tx_status
can get FAIL/SUCSESS but the call is open ended and can be performed
without any time bound after tx_submit. It is not very optimal for
DMAC drivers
to save descriptors of all failed transactions until the channel
is released.
IMHO, provision of status checking by two mechanisms: cookie and dma-done
callbacks is complication more than a feature. Perhaps the dma
engine could provide
a default callback, should the client doesn't do so, and track
done/pending xfers
for such requests?
c) Conceptually, the channels are tightly coupled with the DMACs,
there seems to be
no way to be able to schedule a channel among more than one DMACs
in the runtime,
that is if more then one DMAC support the same channel/peripheral.
For example, Samsung's S5Pxxxx have many channels available on more
than 1 DMAC
but for this dma api we have to statically assign channels to
DMACs, which may result in
a channel acquire request rejected just because the DMAC we chose
for it is already
fully busy while another DMAC, which also supports the channel, is idling.
Unless we treat the same peripheral as, say, I2STX_viaDMAC1 and
I2STX_viaDMAC2
and allocate double resources for these "mutually exclusive" channels.
d) Something like circular-linked-request is highly desirable for one
of the important DMA
clients i.e, audio.
e) There seems to be no ScatterGather support for Mem to Mem transfers.
Or these are just due to my cursory understanding of the DMA Engine core?...
Of course, there are many good features of this API which any API
should provide.
regards.
next prev parent reply other threads:[~2010-05-08 2:37 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-03 0:54 [PATCH 0/7] DMAENGINE: fixes and PrimeCells Linus Walleij
2010-05-07 9:13 ` Linus Walleij
2010-05-07 9:32 ` Russell King - ARM Linux
2010-05-07 11:43 ` Linus Walleij
2010-05-07 12:31 ` jassi brar
2010-05-07 16:10 ` Linus Walleij
2010-05-08 2:37 ` jassi brar [this message]
2010-05-08 22:24 ` Dan Williams
2010-05-09 3:48 ` jassi brar
2010-05-09 7:47 ` Dan Williams
2010-05-09 10:06 ` jassi brar
2010-05-09 17:26 ` Dan Williams
2010-05-09 22:51 ` jassi brar
2010-05-07 23:54 ` Dan Williams
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=m2u1b68c6791005071937s5b2bbb60p6de395a6c06a963e@mail.gmail.com \
--to=jassisinghbrar@gmail.com \
--cc=linux-arm-kernel@lists.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).