<feed xmlns='http://www.w3.org/2005/Atom'>
<title>user/sven/linux.git/drivers/dma, branch v4.12.6</title>
<subtitle>Linux Kernel
</subtitle>
<id>https://git.stealer.net/cgit.cgi/user/sven/linux.git/atom?h=v4.12.6</id>
<link rel='self' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/atom?h=v4.12.6'/>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/'/>
<updated>2017-06-02T06:19:44Z</updated>
<entry>
<title>dmaengine: pl330: fix warning in pl330_remove</title>
<updated>2017-06-02T06:19:44Z</updated>
<author>
<name>Jean-Philippe Brucker</name>
<email>jean-philippe.brucker@arm.com</email>
</author>
<published>2017-06-01T18:22:01Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=ebcdaee4cebb3a8d0d702ab5e9392373672ec1de'/>
<id>urn:sha1:ebcdaee4cebb3a8d0d702ab5e9392373672ec1de</id>
<content type='text'>
When removing a device with less than 9 IRQs (AMBA_NR_IRQS), we'll get a
big WARN_ON from devres.c because pl330_remove calls devm_free_irqs for
unallocated irqs. Similarly to pl330_probe, check that IRQ number is
present before calling devm_free_irq.

Signed-off-by: Jean-Philippe Brucker &lt;jean-philippe.brucker@arm.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>rcar-dmac: fixup descriptor pointer for descriptor mode</title>
<updated>2017-05-30T06:19:28Z</updated>
<author>
<name>Kuninori Morimoto</name>
<email>kuninori.morimoto.gx@renesas.com</email>
</author>
<published>2017-05-23T07:08:43Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=56b177055adb246cdeca174331dbf92fc49bfccd'/>
<id>urn:sha1:56b177055adb246cdeca174331dbf92fc49bfccd</id>
<content type='text'>
In descriptor mode, the descriptor running pointer is not maintained
by the interrupt handler, thus, driver finds the running descriptor
from the descriptor pointer field in the CHCRB register.
But, CHCRB::DPTR indicates *next* descriptor pointer, not current.
Thus, The residue calculation will be missed. This patch fixup it.

Signed-off-by: Kuninori Morimoto &lt;kuninori.morimoto.gx@renesas.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: ep93xx: Don't drain the transfers in terminate_all()</title>
<updated>2017-05-24T04:22:46Z</updated>
<author>
<name>Alexander Sverdlin</name>
<email>alexander.sverdlin@gmail.com</email>
</author>
<published>2017-05-22T14:05:23Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=98f9de366fccee7572c646af226b2d4b4841e3b5'/>
<id>urn:sha1:98f9de366fccee7572c646af226b2d4b4841e3b5</id>
<content type='text'>
Draining the transfers in terminate_all callback happens with IRQs disabled,
therefore induces huge latency:

 irqsoff latency trace v1.1.5 on 4.11.0
 --------------------------------------------------------------------
 latency: 39770 us, #57/57, CPU#0 | (M:preempt VP:0, KP:0, SP:0 HP:0)
    -----------------
    | task: process-129 (uid:0 nice:0 policy:2 rt_prio:50)
    -----------------
  =&gt; started at: _snd_pcm_stream_lock_irqsave
  =&gt; ended at:   snd_pcm_stream_unlock_irqrestore

                  _------=&gt; CPU#
                 / _-----=&gt; irqs-off
                | / _----=&gt; need-resched
                || / _---=&gt; hardirq/softirq
                ||| / _--=&gt; preempt-depth
                |||| /     delay
  cmd     pid   ||||| time  |   caller
     \   /      |||||  \    |   /
process-129     0d.s.    3us : _snd_pcm_stream_lock_irqsave
process-129     0d.s1    9us : snd_pcm_stream_lock &lt;-_snd_pcm_stream_lock_irqsave
process-129     0d.s1   15us : preempt_count_add &lt;-snd_pcm_stream_lock
process-129     0d.s2   22us : preempt_count_add &lt;-snd_pcm_stream_lock
process-129     0d.s3   32us : snd_pcm_update_hw_ptr0 &lt;-snd_pcm_period_elapsed
process-129     0d.s3   41us : soc_pcm_pointer &lt;-snd_pcm_update_hw_ptr0
process-129     0d.s3   50us : dmaengine_pcm_pointer &lt;-soc_pcm_pointer
process-129     0d.s3   58us+: snd_dmaengine_pcm_pointer_no_residue &lt;-dmaengine_pcm_pointer
process-129     0d.s3   96us : update_audio_tstamp &lt;-snd_pcm_update_hw_ptr0
process-129     0d.s3  103us : snd_pcm_update_state &lt;-snd_pcm_update_hw_ptr0
process-129     0d.s3  112us : xrun &lt;-snd_pcm_update_state
process-129     0d.s3  119us : snd_pcm_stop &lt;-xrun
process-129     0d.s3  126us : snd_pcm_action &lt;-snd_pcm_stop
process-129     0d.s3  134us : snd_pcm_action_single &lt;-snd_pcm_action
process-129     0d.s3  141us : snd_pcm_pre_stop &lt;-snd_pcm_action_single
process-129     0d.s3  150us : snd_pcm_do_stop &lt;-snd_pcm_action_single
process-129     0d.s3  157us : soc_pcm_trigger &lt;-snd_pcm_do_stop
process-129     0d.s3  166us : snd_dmaengine_pcm_trigger &lt;-soc_pcm_trigger
process-129     0d.s3  175us : ep93xx_dma_terminate_all &lt;-snd_dmaengine_pcm_trigger
process-129     0d.s3  182us : preempt_count_add &lt;-ep93xx_dma_terminate_all
process-129     0d.s4  189us*: m2p_hw_shutdown &lt;-ep93xx_dma_terminate_all
process-129     0d.s4 39472us : m2p_hw_setup &lt;-ep93xx_dma_terminate_all

 ... rest skipped...

process-129     0d.s. 40080us : &lt;stack trace&gt;
 =&gt; ep93xx_dma_tasklet
 =&gt; tasklet_action
 =&gt; __do_softirq
 =&gt; irq_exit
 =&gt; __handle_domain_irq
 =&gt; vic_handle_irq
 =&gt; __irq_usr
 =&gt; 0xb66c6668

Just abort the transfers and warn if the HW state is not what we expect.
Move draining into device_synchronize callback.

Signed-off-by: Alexander Sverdlin &lt;alexander.sverdlin@gmail.com&gt;
Cc: stable@vger.kernel.org
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: ep93xx: Always start from BASE0</title>
<updated>2017-05-24T04:22:46Z</updated>
<author>
<name>Alexander Sverdlin</name>
<email>alexander.sverdlin@gmail.com</email>
</author>
<published>2017-05-22T14:05:22Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=0037ae47812b1f431cc602100d1d51f37d77b61e'/>
<id>urn:sha1:0037ae47812b1f431cc602100d1d51f37d77b61e</id>
<content type='text'>
The current buffer is being reset to zero on device_free_chan_resources()
but not on device_terminate_all(). It could happen that HW is restarted and
expects BASE0 to be used, but the driver is not synchronized and will start
from BASE1. One solution is to reset the buffer explicitly in
m2p_hw_setup().

Signed-off-by: Alexander Sverdlin &lt;alexander.sverdlin@gmail.com&gt;
Cc: stable@vger.kernel.org
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: usb-dmac: Fix DMAOR AE bit definition</title>
<updated>2017-05-16T04:28:51Z</updated>
<author>
<name>Hiroyuki Yokoyama</name>
<email>hiroyuki.yokoyama.vx@renesas.com</email>
</author>
<published>2017-05-15T08:49:52Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=9a445bbb1607d9f14556a532453dd86d1b7e381e'/>
<id>urn:sha1:9a445bbb1607d9f14556a532453dd86d1b7e381e</id>
<content type='text'>
This patch fixes the register definition of AE (Address Error flag) bit.

Fixes: 0c1c8ff32fa2 ("dmaengine: usb-dmac: Add Renesas USB DMA Controller (USB-DMAC) driver")
Cc: &lt;stable@vger.kernel.org&gt; # v4.1+
Signed-off-by: Hiroyuki Yokoyama &lt;hiroyuki.yokoyama.vx@renesas.com&gt;
[Shimoda: add Fixes and Cc tags in the commit log]
Signed-off-by: Yoshihiro Shimoda &lt;yoshihiro.shimoda.uh@renesas.com&gt;
Reviewed-by: Geert Uytterhoeven &lt;geert+renesas@glider.be&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: mv_xor_v2: set DMA mask to 40 bits</title>
<updated>2017-05-14T12:54:44Z</updated>
<author>
<name>Thomas Petazzoni</name>
<email>thomas.petazzoni@free-electrons.com</email>
</author>
<published>2017-05-05T09:57:50Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=b2d3c270f9f2fb82518ac500a9849c3aaf503852'/>
<id>urn:sha1:b2d3c270f9f2fb82518ac500a9849c3aaf503852</id>
<content type='text'>
The XORv2 engine on Armada 7K/8K can only access the first 40 bits of
the physical address space, so the DMA mask must be set accordingly.

Fixes: 19a340b1a820 ("dmaengine: mv_xor_v2: new driver")
Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Thomas Petazzoni &lt;thomas.petazzoni@free-electrons.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: mv_xor_v2: remove interrupt coalescing</title>
<updated>2017-05-14T12:54:44Z</updated>
<author>
<name>Thomas Petazzoni</name>
<email>thomas.petazzoni@free-electrons.com</email>
</author>
<published>2017-05-05T09:57:49Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=9dd4f319bac25334a869d9276b19eac9e478fd33'/>
<id>urn:sha1:9dd4f319bac25334a869d9276b19eac9e478fd33</id>
<content type='text'>
The current implementation of interrupt coalescing doesn't work, because
it doesn't configure the coalescing timer, which is needed to make sure
we get an interrupt at some point.

As a fix for stable, we simply remove the interrupt coalescing
functionality. It will be re-introduced properly in a future commit.

Fixes: 19a340b1a820 ("dmaengine: mv_xor_v2: new driver")
Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Thomas Petazzoni &lt;thomas.petazzoni@free-electrons.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: mv_xor_v2: fix tx_submit() implementation</title>
<updated>2017-05-14T12:54:43Z</updated>
<author>
<name>Thomas Petazzoni</name>
<email>thomas.petazzoni@free-electrons.com</email>
</author>
<published>2017-05-05T09:57:48Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=44d5887a8bf1e86915c8ff647337cb138149da82'/>
<id>urn:sha1:44d5887a8bf1e86915c8ff647337cb138149da82</id>
<content type='text'>
The mv_xor_v2_tx_submit() gets the next available HW descriptor by
calling mv_xor_v2_get_desq_write_ptr(), which reads a HW register
telling the next available HW descriptor. This was working fine when HW
descriptors were issued for processing directly in tx_submit().

However, as part of the review process of the driver, a change was
requested to move the actual kick-off of HW descriptors processing to
-&gt;issue_pending(). Due to this, reading the HW register to know the next
available HW descriptor no longer works.

So instead of using this HW register, we implemented a software index
pointing to the next available HW descriptor.

Fixes: 19a340b1a820 ("dmaengine: mv_xor_v2: new driver")
Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Thomas Petazzoni &lt;thomas.petazzoni@free-electrons.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: mv_xor_v2: enable XOR engine after its configuration</title>
<updated>2017-05-14T12:54:40Z</updated>
<author>
<name>Hanna Hawa</name>
<email>hannah@marvell.com</email>
</author>
<published>2017-05-05T09:57:47Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=ab2c5f0a77fe49bdb6e307b397496373cb47d2c2'/>
<id>urn:sha1:ab2c5f0a77fe49bdb6e307b397496373cb47d2c2</id>
<content type='text'>
The engine was enabled prior to its configuration, which isn't
correct. This patch relocates the activation of the XOR engine, to be
after the configuration of the XOR engine.

Fixes: 19a340b1a820 ("dmaengine: mv_xor_v2: new driver")
Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Hanna Hawa &lt;hannah@marvell.com&gt;
Signed-off-by: Thomas Petazzoni &lt;thomas.petazzoni@free-electrons.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: mv_xor_v2: do not use descriptors not acked by async_tx</title>
<updated>2017-05-14T12:53:19Z</updated>
<author>
<name>Thomas Petazzoni</name>
<email>thomas.petazzoni@free-electrons.com</email>
</author>
<published>2017-05-05T09:57:46Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=bc473da1ed726c975ad47f8d7d27631de11356d8'/>
<id>urn:sha1:bc473da1ed726c975ad47f8d7d27631de11356d8</id>
<content type='text'>
Descriptors that have not been acknowledged by the async_tx layer
should not be re-used, so this commit adjusts the implementation of
mv_xor_v2_prep_sw_desc() to skip descriptors for which
async_tx_test_ack() is false.

Fixes: 19a340b1a820 ("dmaengine: mv_xor_v2: new driver")
Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Thomas Petazzoni &lt;thomas.petazzoni@free-electrons.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
</feed>
