1. 05 8月, 2015 1 次提交
  2. 07 5月, 2015 1 次提交
  3. 01 4月, 2015 1 次提交
  4. 31 3月, 2015 1 次提交
    • P
      dmaengine: edma: fix memory leak when terminating running transfers · 5ca9e7ce
      Petr Kulhavy 提交于
      If edma_terminate_all() was called while a transfer was running (i.e. after
      edma_execute() but before edma_callback()) the echan->edesc was not freed.
      
      This was due to the fact that a running transfer is on none of the
      vchan lists: desc_submitted, desc_issued, desc_completed (edma_execute()
      removes it from the desc_issued list), so the vchan_dma_desc_free_list()
      called at the end of edma_terminate_all() didn't find it and didn't free it.
      
      This bug was found on an AM1808 based hardware (very similar to da850evm,
      however using the second MMC/SD controller), where intense operations on the SD
      card wasted the device 128MB RAM within a couple of days.
      
      Peter Ujfalusi:
      The issue is even more severe since it affects cyclic (audio) transfers as
      well. In this case starting/stopping audio will results memory leak.
      Signed-off-by: NPetr Kulhavy <petr@barix.com>
      Signed-off-by: NPeter Ujfalusi <peter.ujfalusi@ti.com>
      CC: <stable@vger.kernel.org>
      CC: <linux-omap@vger.kernel.org>
      Signed-off-by: NVinod Koul <vinod.koul@intel.com>
      5ca9e7ce
  5. 16 2月, 2015 1 次提交
  6. 22 12月, 2014 3 次提交
  7. 06 11月, 2014 1 次提交
  8. 20 10月, 2014 1 次提交
  9. 15 10月, 2014 1 次提交
    • S
      dmaengine: edma: check for echan->edesc => NULL in edma_dma_pause() · 639559ad
      Sebastian Andrzej Siewior 提交于
      I added book keeping of whether or not the 8250-dma driver has an RX
      transfer pending or not so we don't BUG here if it calls
      dmaengine_pause() on a channel which has not a pending transfer. Guess
      what, this is not enough.
      The following can be triggered with a busy RX channel and hackbench in
      background:
      - DMA transfer completes. The callback is delayed via
        vchan_cookie_complete() into a tasklet so it das not happen asap.
      - hackbench keeps the system busy so the tasklet does not run "soon".
      - the UART collected enough data and generates an "timeout"-interrupt.
        Since 8250-dma *thinks* the DMA-transfer is still pending it tries to
        cancel it via invoking dmaengine_pause() first. This causes the segfault
        because echan->edesc is NULL now that the transfer completed (however
        the callback did not run yet).
      
      With this patch we don't BUG in the scenario described.
      Signed-off-by: NSebastian Andrzej Siewior <bigeasy@linutronix.de>
      Acked-by: NPeter Ujfalusi <peter.ujfalusi@ti.com>
      Signed-off-by: NVinod Koul <vinod.koul@intel.com>
      639559ad
  10. 04 8月, 2014 1 次提交
  11. 31 7月, 2014 2 次提交
  12. 28 7月, 2014 3 次提交
  13. 05 7月, 2014 1 次提交
  14. 30 4月, 2014 7 次提交
  15. 29 4月, 2014 1 次提交
  16. 23 4月, 2014 9 次提交
  17. 14 4月, 2014 1 次提交
    • S
      dma: edma: fix incorrect SG list handling · 5fc68a6c
      Sekhar Nori 提交于
      The code to handle any length SG lists calls edma_resume()
      even before edma_start() is called. This is incorrect
      because edma_resume() enables edma events on the channel
      after which CPU (in edma_start) cannot clear posted
      events by writing to ECR (per the EDMA user's guide).
      
      Because of this EDMA transfers fail to start if due
      to some reason there is a pending EDMA event registered
      even before EDMA transfers are started. This can happen if
      an EDMA event is a byproduct of device initialization.
      
      Fix this by calling edma_resume() only if it is not the
      first batch of MAX_NR_SG elements.
      
      Without this patch, MMC/SD fails to function on DA850 EVM
      with DMA. The behaviour is triggered by specific IP and
      this can explain why the issue was not reported before
      (example with MMC/SD on AM335x).
      
      Tested on DA850 EVM and AM335x EVM-SK using MMC/SD card.
      
      Cc: stable@vger.kernel.org # v3.12.x+
      Cc: Joel Fernandes <joelf@ti.com>
      Acked-by: NJoel Fernandes <joelf@ti.com>
      Tested-by: NJon Ringle <jringle@gridpoint.com>
      Tested-by: NAlexander Holler <holler@ahsoftware.de>
      Reported-by: NJon Ringle <jringle@gridpoint.com>
      Signed-off-by: NSekhar Nori <nsekhar@ti.com>
      Signed-off-by: NVinod Koul <vinod.koul@intel.com>
      5fc68a6c
  18. 06 3月, 2014 1 次提交
  19. 19 12月, 2013 1 次提交
  20. 13 11月, 2013 1 次提交
  21. 12 11月, 2013 1 次提交
    • J
      dma: edma: Add support for Cyclic DMA · 50a9c707
      Joel Fernandes 提交于
      Using the PaRAM configuration function that we split for reuse by the
      different DMA types, we implement Cyclic DMA support.
      For the cyclic case, we pass different configuration parameters to this
      function, and handle all the Cyclic-specific functionality separately.
      
      Callbacks to the DMA users are handled using vchan_cyclic_callback in
      the virt-dma layer. Linking is handled the same way as the slave SG case
      except for the last slot where we link it back to the first one in a
      cyclic fashion.
      
      For continuity, we check for cases where no.of periods is great than the
      MAX number of slots the driver can allocate for a particular descriptor
      and error out on such cases.
      Signed-off-by: NJoel Fernandes <joelf@ti.com>
      Signed-off-by: NVinod Koul <vinod.koul@intel.com>
      50a9c707