<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/dma/pl330.c, branch linux-4.0.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.0.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.0.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2015-06-23T00:03:27Z</updated>
<entry>
<title>dmaengine: pl330: Fix hang on dmaengine_terminate_all on certain boards</title>
<updated>2015-06-23T00:03:27Z</updated>
<author>
<name>Krzysztof Kozlowski</name>
</author>
<published>2015-05-21T00:34:09Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=158769a5f805f326184b432aad7e4753d5f1eee4'/>
<id>urn:sha1:158769a5f805f326184b432aad7e4753d5f1eee4</id>
<content type='text'>
commit 81cc6edc08705ac0146fe6ac14a0982a31ce6f3d upstream.

The pl330 device could hang infinitely on certain boards when DMA
channels are terminated.

It was caused by lack of runtime resume when executing
pl330_terminate_all() which calls the _stop() function. _stop() accesses
device register and can loop infinitely while checking for device state.

The hang was confirmed by Dinh Nguyen on Altera SOCFPGA Cyclone V
board during boot. It can be also triggered with:

$ echo 1 &gt; /sys/module/dmatest/parameters/iterations
$ echo dma1chan0 &gt; /sys/module/dmatest/parameters/channel
$ echo 1 &gt; /sys/module/dmatest/parameters/run
$ sleep 1
$ cat /sys/module/dmatest/parameters/run

Reported-by: Dinh Nguyen &lt;dinguyen@opensource.altera.com&gt;
Signed-off-by: Krzysztof Kozlowski &lt;k.kozlowski@samsung.com&gt;
Fixes: ae43b3289186 ("ARM: 8202/1: dmaengine: pl330: Add runtime Power Management support v12")
Tested-by: Dinh Nguyen &lt;dinguyen@opensource.altera.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>dmaengine: pl330: add DMA_PAUSE feature</title>
<updated>2015-02-16T04:03:36Z</updated>
<author>
<name>Robert Baldyga</name>
</author>
<published>2015-02-11T12:23:18Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=88987d2c7534a0269f567fb101e6d71a08f0f01d'/>
<id>urn:sha1:88987d2c7534a0269f567fb101e6d71a08f0f01d</id>
<content type='text'>
DMA_PAUSE command is used for halting DMA transfer on chosen channel.
It can be useful when we want to safely read residue before terminating
all requests on channel. Otherwise there can be situation when some data
is transferred before channel termination but after reading residue,
which obviously results with data loss. To avoid this situation we can
pause channel, read residue and then terminate all requests.
This scenario is common, for example, in serial port drivers.

Signed-off-by: Robert Baldyga &lt;r.baldyga@samsung.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: pl330: improve pl330_tx_status() function</title>
<updated>2015-02-16T04:03:35Z</updated>
<author>
<name>Robert Baldyga</name>
</author>
<published>2015-02-11T12:23:17Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=aee4d1fac887252faf6f7caf7bf1616131d5dbcd'/>
<id>urn:sha1:aee4d1fac887252faf6f7caf7bf1616131d5dbcd</id>
<content type='text'>
This patch adds possibility to read residue of DMA transfer. It's useful
when we want to know how many bytes have been transferred before we
terminate channel. It can take place, for example, on timeout interrupt.

Signed-off-by: Lukasz Czerwinski &lt;l.czerwinski@samsung.com&gt;
Signed-off-by: Robert Baldyga &lt;r.baldyga@samsung.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: pl330: fix bug that cause start the same descs in cyclic</title>
<updated>2015-02-11T00:20:19Z</updated>
<author>
<name>Addy Ke</name>
</author>
<published>2014-12-08T11:28:20Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0091b9d6c1ef2caab6cb3b6c0aa75f9948307856'/>
<id>urn:sha1:0091b9d6c1ef2caab6cb3b6c0aa75f9948307856</id>
<content type='text'>
This bug will cause NULL pointer after commit dfac17, and cause
wrong package in I2S DMA transfer before commit dfac17.

Tested on RK3288-pinky2 board.

Detail:
I2S DMA transfer(sound/core/pcm_dmaengine.c):
dmaengine_pcm_prepare_and_submit --&gt;
dmaengine_prep_dma_cyclic --&gt;
pl330_prep_dma_cyclic --&gt;
the case:
1. pl330_submit_req(desc0): thrd-&gt;req[0].desc = desc0, thrd-&gt;lstenq = 0
2. pl330_submit_req(desc1): thrd-&gt;req[1].desc = desc1, thrd-&gt;lstenq = 1
3. _start(desc0) by submit_req: thrd-&gt;req_running = 0
   because: idx = 1 - thrd-&gt;lstenq = 0
4. pl330_update(desc0 OK): thrd-&gt;req[0].desc = NULL, desc0 to req_done list
   because: idx = active = thrd-&gt;req_running = 0
5. _start(desc1) by pl330_update: thrd-&gt;req_running = 1
   because:
   idx = 1 - thrd-&gt;lstenq = 0, but thrd-&gt;req[0].desc == NULL,
   so:
   idx = thrd-&gt;lstenq = 1
6. pl330_submit_req(desc2): thrd-&gt;req[0].desc = desc2, thrd-&gt;lstenq = 0
7. _start(desc1) by submit_req: thrd-&gt;req_running = 1
   because: idx = 1 - thrd-&gt;lstenq = 1
   Note: _start started the same descs
         _start should start desc2 here, NOT desc1

8. pl330_update(desc1 OK): thrd-&gt;req[1].desc = NULL, desc1 to req_done list
   because: idx = active = thrd-&gt;req_running = 1
9. _start(desc2) by pl330_update : thrd-&gt;req_running = 0
   because: idx = 1 - thrd-&gt;lstenq = 0
10.pl330_update(desc1 OK, NOT desc2): thrd-&gt;req[0].desc = NULL,
   desc2 to req_done list
   because: idx = active = thrd-&gt;req_running = 0

11.pl330_submit_req(desc3): thrd-&gt;req[0].desc = desc3, thrd-&gt;lstenq = 0
12.pl330_submit_req(desc4): thrd-&gt;req[1].desc = desc4, thrd-&gt;lstenq = 1
13._start(desc3) by submit_req: thrd-&gt;req_running = 0
   because: idx = 1 - thrd-&gt;lstenq = 0
14.pl330_update(desc2 OK NOT desc3): thrd-&gt;req[0].desc = NULL
   desc3 to req_done list
   because: idx = active = thrd-&gt;req_running = 0
15._start(desc4) by pl330_update: thrd-&gt;req_running = 1
   because:
   idx = 1 - thrd-&gt;lstenq = 0, but thrd-&gt;req[0].desc == NULL,
   so:
   idx = thrd-&gt;lstenq = 1
16.pl330_submit_req(desc5): thrd-&gt;req[0].desc = desc5, thrd-&gt;lstenq = 0
17._start(desc4) by submit_req: thrd-&gt;req_running = 1
   because: idx = 1 - thrd-&gt;lstenq = 1
18.pl330_update(desc3 OK NOT desc4): thrd-&gt;req[1].desc = NULL
   desc4 to req_done list
   because: idx = active = thrd-&gt;req_running = 1
19._start(desc4) by pl330_update: thrd-&gt;req_running = 0
   because:
   idx = 1 - thrd-&gt;lstenq = 1, but thrd-&gt;req[1].desc == NULL,
   so:
   idx = thrd-&gt;lstenq = 0
20.pl330_update(desc4 OK): thrd-&gt;req[0].desc = NULL, desc5 to req_done list
   because: idx = active = thrd-&gt;req_running = 0
21.pl330_update(desc4 OK):
   1) before commit dfac17(set req_running -1 in pl330_update/mark_free()):
      because: active = -1, abort
      result: desc0-desc5's callback are all called,
	      but step 10 and step 18 go wrong.
   2) before commit dfac17:
      idx = active = thrd-&gt;req_runnig = 0 --&gt;
      descdone = thrd-&gt;req[0] = NULL --&gt;
      list_add_tail(&amp;descdone-&gt;rqd, &amp;pl330-&gt;req_done); --&gt;
      got NULL pointer!!!

Signed-off-by: Addy Ke &lt;addy.ke@rock-chips.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: pl330: Declare slave capabilities for the generic code</title>
<updated>2014-12-22T07:04:21Z</updated>
<author>
<name>Maxime Ripard</name>
</author>
<published>2014-11-17T13:42:50Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=dcabe456b4d4d04606268036d8ca5ce84aa84037'/>
<id>urn:sha1:dcabe456b4d4d04606268036d8ca5ce84aa84037</id>
<content type='text'>
Now that the generic slave caps code can make use of the device assigned
capabilities, instead of relying on a callback to be implemented.

Make use of this code.

Signed-off-by: Maxime Ripard &lt;maxime.ripard@free-electrons.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: pl330: Split device_control</title>
<updated>2014-12-22T07:02:15Z</updated>
<author>
<name>Maxime Ripard</name>
</author>
<published>2014-11-17T13:42:29Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=740aa95703c59d8b59adb78c65efa08714f66ebb'/>
<id>urn:sha1:740aa95703c59d8b59adb78c65efa08714f66ebb</id>
<content type='text'>
Split the device_control callback of the AMBA PL330 DMA driver to make use
of the newly introduced callbacks, that will eventually be used to retrieve
slave capabilities.

Signed-off-by: Maxime Ripard &lt;maxime.ripard@free-electrons.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: Make the destination abbreviation coherent</title>
<updated>2014-12-22T06:58:55Z</updated>
<author>
<name>Maxime Ripard</name>
</author>
<published>2014-11-17T13:41:57Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ceacbdbf65c4cf48a130db6152c6e03432c85ed1'/>
<id>urn:sha1:ceacbdbf65c4cf48a130db6152c6e03432c85ed1</id>
<content type='text'>
The dmaengine header abbreviates destination as at least two different strings.
Make a coherent use of a single one.

Signed-off-by: Maxime Ripard &lt;maxime.ripard@free-electrons.com&gt;
Acked-by: Mark Brown &lt;broonie@kernel.org&gt;
Acked-by: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
Acked-by: Stephen Warren &lt;swarren@wwwdotorg.org&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm</title>
<updated>2014-12-12T23:26:48Z</updated>
<author>
<name>Linus Torvalds</name>
</author>
<published>2014-12-12T23:26:48Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=26ceb127f7bcf473db926c6a026b18ddd6f274e8'/>
<id>urn:sha1:26ceb127f7bcf473db926c6a026b18ddd6f274e8</id>
<content type='text'>
Pull ARM updates from Russell King:
 "The major updates included in this update are:

   - Clang compatible stack pointer accesses by Behan Webster.
   - SA11x0 updates from Dmitry Eremin-Solenikov.
   - kgdb handling of breakpoints with read-only text/modules
   - Support for Privileged-no-execute feature on ARMv7 to prevent
     userspace code execution by the kernel.
   - AMBA primecell bus handling of irq-safe runtime PM
   - Unwinding support for memset/memzero/memmove/memcpy functions
   - VFP fixes for Krait CPUs and improvements in detecting the VFP
     architecture
   - A number of code cleanups (using pr_*, removing or reducing the
     severity of a couple of kernel messages, splitting ftrace asm code
     out to a separate file, etc.)
   - Add machine name to stack dump output"

* 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm: (62 commits)
  ARM: 8247/2: pcmcia: sa1100: make use of device clock
  ARM: 8246/2: pcmcia: sa1111: provide device clock
  ARM: 8245/1: pcmcia: soc-common: enable/disable socket clocks
  ARM: 8244/1: fbdev: sa1100fb: make use of device clock
  ARM: 8243/1: sa1100: add a clock alias for sa1111 pcmcia device
  ARM: 8242/1: sa1100: add cpu clock
  ARM: 8221/1: PJ4: allow building in Thumb-2 mode
  ARM: 8234/1: sa1100: reorder IRQ handling code
  ARM: 8233/1: sa1100: switch to hwirq usage
  ARM: 8232/1: sa1100: merge GPIO multiplexer IRQ to "normal" irq domain
  ARM: 8231/1: sa1100: introduce irqdomains support
  ARM: 8230/1: sa1100: shift IRQs by one
  ARM: 8229/1: sa1100: replace irq numbers with names in irq driver
  ARM: 8228/1: sa1100: drop entry-macro.S
  ARM: 8227/1: sa1100: switch to MULTI_IRQ_HANDLER
  ARM: 8241/1: Update processor_modes for hyp and monitor mode
  ARM: 8240/1: MCPM: document mcpm_sync_init()
  ARM: 8239/1: Introduce {set,clear}_pte_bit
  ARM: 8238/1: mm: Refine set_memory_* functions
  ARM: 8237/1: fix flush_pfn_alias
  ...
</content>
</entry>
<entry>
<title>Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma</title>
<updated>2014-12-12T22:59:53Z</updated>
<author>
<name>Linus Torvalds</name>
</author>
<published>2014-12-12T22:59:53Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=87c779baabff157f09db6fce417a7544220f9f00'/>
<id>urn:sha1:87c779baabff157f09db6fce417a7544220f9f00</id>
<content type='text'>
Pull dmaengine updates from Vinod Koul:
 "Main features this time are:

   - BAM v1.3.0 support form qcom bam dma
   - support for Allwinner sun8i dma
   - atmels eXtended DMA Controller driver
   - chancnt cleanup by Maxime
   - fixes spread over drivers"

* 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma: (56 commits)
  dmaenegine: Delete a check before free_percpu()
  dmaengine: ioatdma: fix dma mapping errors
  dma: cppi41: add a delay while setting the TD bit
  dma: cppi41: wait longer for the HW to return the descriptor
  dmaengine: fsl-edma: fixup reg offset and hw S/G support in big-endian model
  dmaengine: fsl-edma: fix calculation of remaining bytes
  drivers/dma/pch_dma: declare pch_dma_id_table as static
  dmaengine: ste_dma40: fix error return code
  dma: imx-sdma: clarify about firmware not found error
  Documentation: devicetree: Fix Xilinx VDMA specification
  dmaengine: pl330: update author info
  dmaengine: clarify the issue_pending expectations
  dmaengine: at_xdmac: Add DMA_PRIVATE
  ARM: dts: at_xdmac: fix bad value of dma-cells in documentation
  dmaengine: at_xdmac: fix missing spin_unlock
  dmaengine: at_xdmac: fix a bug in transfer residue computation
  dmaengine: at_xdmac: fix software lockup at_xdmac_tx_status()
  dmaengine: at_xdmac: remove chancnt affectation
  dmaengine: at_xdmac: prefer usage of readl/writel_relaxed
  dmaengine: xdmac: fix print warning on dma_addr_t variable
  ...
</content>
</entry>
<entry>
<title>dmaengine: pl330: update author info</title>
<updated>2014-12-05T15:34:22Z</updated>
<author>
<name>Jassi Brar</name>
</author>
<published>2014-12-05T13:37:49Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=046209f61b5f35fa08a9e76ce678ad0f3ca8a417'/>
<id>urn:sha1:046209f61b5f35fa08a9e76ce678ad0f3ca8a417</id>
<content type='text'>
Update email-id to a personal one, as I have changed employment.

Signed-off-by: Jassi Brar &lt;jassisinghbrar@gmail.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
</feed>
