[lkml]   [2009]   [Jul]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: [PATCH 1/2 v2] dmaengine: at_hdmac: new driver for the Atmel AHB DMA Controller
On Wed, 01 Jul 2009 17:30:54 +0200, Nicolas Ferre <> wrote:
> > Some of issues reported at that time could be applied on your driver
> > too. With a quick look, the queue list management issue is a
> > candidate. Here is an excerpt from the thread:
> I try to replay the life of a descriptor chain in "queue" list:
> - it is queued by atc_tx_submit()
> - tasklet or atc_issue_pendig() will "advance_work" and so run
> atc_complete_all() at some point.
> - atc_complete_all() will issue an atc_dostart() on the first chain in
> queue list and move all to active_list
> - then all chains will be managed as active_list members:
> - tasklet or atc_issue_pendig() will "advance_work"
> - first member will be managed by chain_complete()
> - next member will be started by dostart()
> - and so on...
> - last chain in active_list will run complete_all() and may move again
> queued descriptors to active_list.
> => non-first descriptor moved from queue to active_list will be
> proceeded by act_dostart() in atc_advance_work() function.

Oh yes. I was wrong. I missed act_dostart() in atc_advance_work().
Sorry for false warning.

> In this way of addressing descriptors, I try to keep descriptor chains
> as they are built by the prep_dma_memcpy function. I am not trying to
> rewrite the internal arrangement of a descriptor chain (not touching
> lli.dscr).
> It may be not optimal for the descriptor management speed but it tries
> to split problems in a kind of layered way (we build chains and then
> manage their flow in dma engine and associated lists).
> I hope that there is no hole in this management as I am sure it is
> difficult to debug...
> I hope that my response is solid enough. Please do not hesitate to break
> my demonstration ;-).

Thank you for elaboration, I cannot find any hole now. Indeed these
kind of problem is hard to debug. Running dmatest with
threads_per_chan=N will catch such issues, hopefully :-)

Atsushi Nemoto

 \ /
  Last update: 2009-07-03 17:15    [W:0.068 / U:5.276 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site