<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-dev/Documentation/dmaengine/provider.txt, branch linus/master</title>
<subtitle>Linux kernel development work - see feature branches</subtitle>
<id>https://git.zx2c4.com/linux-dev/atom/Documentation/dmaengine/provider.txt?h=linus%2Fmaster</id>
<link rel='self' href='https://git.zx2c4.com/linux-dev/atom/Documentation/dmaengine/provider.txt?h=linus%2Fmaster'/>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/'/>
<updated>2017-11-05T17:03:23Z</updated>
<entry>
<title>dmaengine: doc: ReSTize provider doc</title>
<updated>2017-11-05T17:03:23Z</updated>
<author>
<name>Vinod Koul</name>
<email>vinod.koul@intel.com</email>
</author>
<published>2017-11-03T04:49:38Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=77fe661214d784878d666a226116057191de097b'/>
<id>urn:sha1:77fe661214d784878d666a226116057191de097b</id>
<content type='text'>
This moves and converts provider file with some format changes
for RST style

Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
Signed-off-by: Jonathan Corbet &lt;corbet@lwn.net&gt;
</content>
</entry>
<entry>
<title>Merge branch 'topic/dmatest' into for-linus</title>
<updated>2017-09-06T16:25:10Z</updated>
<author>
<name>Vinod Koul</name>
<email>vinod.koul@intel.com</email>
</author>
<published>2017-09-06T16:25:10Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=41bd0314fa3a458bee7ad768d079e681316332e7'/>
<id>urn:sha1:41bd0314fa3a458bee7ad768d079e681316332e7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>dmaengine: add DMA_PREP_CMD for non-Data descriptors.</title>
<updated>2017-08-28T11:10:18Z</updated>
<author>
<name>Abhishek Sahu</name>
<email>absahu@codeaurora.org</email>
</author>
<published>2017-08-01T14:11:42Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=3e00ab4ac51c2ed47c28fd5000c47399f1a11cf5'/>
<id>urn:sha1:3e00ab4ac51c2ed47c28fd5000c47399f1a11cf5</id>
<content type='text'>
Some of the DMA controllers are capable of issuing the commands
to peripheral by the DMA. These commands can be list of register
reads/writes and its different from normal data reads/writes.
This patch adds new flag DMA_PREP_CMD in DMA API which tells
the driver that the data passed to DMA API is command data
and DMA controller driver will form descriptor in the required
format.

This flag can be used by any DMA controller driver which requires
the descriptor in different format for non-Data descriptors.

Signed-off-by: Abhishek Sahu &lt;absahu@codeaurora.org&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: remove DMA_SG as it is dead code in kernel</title>
<updated>2017-08-22T03:52:11Z</updated>
<author>
<name>Dave Jiang</name>
<email>dave.jiang@intel.com</email>
</author>
<published>2017-08-21T17:23:13Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=c678fa66341c7b82a57cfed0ba3656162e970f99'/>
<id>urn:sha1:c678fa66341c7b82a57cfed0ba3656162e970f99</id>
<content type='text'>
There are no in kernel consumers for DMA_SG op. Removing operation,
dead code, and test code in dmatest.

Signed-off-by: Dave Jiang &lt;dave.jiang@intel.com&gt;
Reviewed-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Cc: Gary Hook &lt;gary.hook@amd.com&gt;
Cc: Ludovic Desroches &lt;ludovic.desroches@microchip.com&gt;
Cc: Kedareswara rao Appana &lt;appana.durga.rao@xilinx.com&gt;
Cc: Li Yang &lt;leoyang.li@nxp.com&gt;
Cc: Michal Simek &lt;michal.simek@xilinx.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: Documentation: Fix typo in provider.txt</title>
<updated>2016-11-14T02:44:19Z</updated>
<author>
<name>Vinod Koul</name>
<email>vinod.koul@intel.com</email>
</author>
<published>2016-11-03T13:04:41Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=19a61be848fb5669e4c19bf7a2bb584b8c30d846'/>
<id>urn:sha1:19a61be848fb5669e4c19bf7a2bb584b8c30d846</id>
<content type='text'>
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: documentation to the new callback mechanism</title>
<updated>2016-08-08T02:41:42Z</updated>
<author>
<name>Dave Jiang</name>
<email>dave.jiang@intel.com</email>
</author>
<published>2016-07-20T20:14:19Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=9686218982709122373b755c9d7457bed0872999'/>
<id>urn:sha1:9686218982709122373b755c9d7457bed0872999</id>
<content type='text'>
Adding documentation in dmaengine/provider.txt on the usage of callback
with result, callback_result, function pointer to retrieve transanction
result from a DMA submission.

Signed-off-by: Dave Jiang &lt;dave.jiang@intel.com&gt;
Reviewed-by: Lars-Peter Clausen &lt;lars@metafoo.de&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>Documentation: dmaengine: fix typo for device_resume</title>
<updated>2016-06-03T20:00:21Z</updated>
<author>
<name>Niklas Söderlund</name>
<email>niklas.soderlund+renesas@ragnatech.se</email>
</author>
<published>2016-06-03T10:03:10Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=f3e6a55c3653b071705e266473b87696786dfd99'/>
<id>urn:sha1:f3e6a55c3653b071705e266473b87696786dfd99</id>
<content type='text'>
Signed-off-by: Niklas Söderlund &lt;niklas.soderlund+renesas@ragnatech.se&gt;
Signed-off-by: Jonathan Corbet &lt;corbet@lwn.net&gt;
</content>
</entry>
<entry>
<title>dmaengine: Add transfer termination synchronization support</title>
<updated>2015-11-16T02:58:52Z</updated>
<author>
<name>Lars-Peter Clausen</name>
<email>lars@metafoo.de</email>
</author>
<published>2015-10-20T09:46:28Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=b36f09c3c441a6e59eab9315032e7d546571de3f'/>
<id>urn:sha1:b36f09c3c441a6e59eab9315032e7d546571de3f</id>
<content type='text'>
The DMAengine API has a long standing race condition that is inherent to
the API itself. Calling dmaengine_terminate_all() is supposed to stop and
abort any pending or active transfers that have previously been submitted.
Unfortunately it is possible that this operation races against a currently
running (or with some drivers also scheduled) completion callback.

Since the API allows dmaengine_terminate_all() to be called from atomic
context as well as from within a completion callback it is not possible to
synchronize to the execution of the completion callback from within
dmaengine_terminate_all() itself.

This means that a user of the DMAengine API does not know when it is safe
to free resources used in the completion callback, which can result in a
use-after-free race condition.

This patch addresses the issue by introducing an explicit synchronization
primitive to the DMAengine API called dmaengine_synchronize().

The existing dmaengine_terminate_all() is deprecated in favor of
dmaengine_terminate_sync() and dmaengine_terminate_async(). The former
aborts all pending and active transfers and synchronizes to the current
context, meaning it will wait until all running completion callbacks have
finished. This means it is only possible to call this function from
non-atomic context. The later function does not synchronize, but can still
be used in atomic context or from within a complete callback. It has to be
followed up by dmaengine_synchronize() before a client can free the
resources used in a completion callback.

In addition to this the semantics of the device_terminate_all() callback
are slightly relaxed by this patch. It is now OK for a driver to only
schedule the termination of the active transfer, but does not necessarily
have to wait until the DMA controller has completely stopped. The driver
must ensure though that the controller has stopped and no longer accesses
any memory when the device_synchronize() callback returns.

This was in part done since most drivers do not pay attention to this
anyway at the moment and to emphasize that this needs to be done when the
device_synchronize() callback is implemented. But it also helps with
implementing support for devices where stopping the controller can require
operations that may sleep.

Signed-off-by: Lars-Peter Clausen &lt;lars@metafoo.de&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>Documentation: dmaengine: Add DMA_CTRL_REUSE documentation</title>
<updated>2015-08-17T08:16:22Z</updated>
<author>
<name>Vinod Koul</name>
<email>vinod.koul@intel.com</email>
</author>
<published>2015-08-05T03:12:06Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=60884ddecdc2f45fd2862b7e95c9ad858584f82b'/>
<id>urn:sha1:60884ddecdc2f45fd2862b7e95c9ad858584f82b</id>
<content type='text'>
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
Acked-by:Robert Jarzmik &lt;robert.jarzmik@free.fr&gt;
</content>
</entry>
<entry>
<title>Documentation: dmaengine: fix the DMA_CTRL_ACK documentation</title>
<updated>2015-08-17T08:16:22Z</updated>
<author>
<name>Vinod Koul</name>
<email>vinod.koul@intel.com</email>
</author>
<published>2015-08-05T03:12:04Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=06f10e2f936424496d44e5541c220845c8c55345'/>
<id>urn:sha1:06f10e2f936424496d44e5541c220845c8c55345</id>
<content type='text'>
As discussed recently the meaning of DMA_CTRL_ACK is that a desc cannot be
reused by provider until the client acknowledges receipt, i.e. has has a
chance to establish any dependency chains. So update documentation

Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
Acked-by:Robert Jarzmik &lt;robert.jarzmik@free.fr&gt;
</content>
</entry>
</feed>
