All of lore.kernel.org
 help / color / mirror / Atom feed
* Dmaengine query
@ 2010-04-14  6:26 rd bairva
  2010-04-15  0:30 ` Dan Williams
  0 siblings, 1 reply; 9+ messages in thread
From: rd bairva @ 2010-04-14  6:26 UTC (permalink / raw)
  To: dan.j.williams; +Cc: linux-arm-kernel, linux-kernel

Hi Dan,

	I am currently writing dmaengine compatible DMA driver for our ARM
based architecture, But I am facing some performance issues doing
that.

1. dmaengine says callback should run in tasklet, and next transfer
cannot be scheduled from the callback.

Due to these restrictions I am getting some performance issue while
playing sound in our architecture.


Can callback call in DMA driver be placed out of spin_lock to submit
new operations from callback? (only in asynchronous case)

is this Ok? please comment.


Thanks and regards,
Ramdayal

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Dmaengine query
  2010-04-14  6:26 Dmaengine query rd bairva
@ 2010-04-15  0:30 ` Dan Williams
  2010-04-19 10:26   ` rd bairva
  0 siblings, 1 reply; 9+ messages in thread
From: Dan Williams @ 2010-04-15  0:30 UTC (permalink / raw)
  To: rd bairva; +Cc: linux-arm-kernel, linux-kernel

On Tue, Apr 13, 2010 at 11:26 PM, rd bairva <rbairva@gmail.com> wrote:
> Hi Dan,
>
>        I am currently writing dmaengine compatible DMA driver for our ARM
> based architecture, But I am facing some performance issues doing
> that.
>
> 1. dmaengine says callback should run in tasklet, and next transfer
> cannot be scheduled from the callback.
>
> Due to these restrictions I am getting some performance issue while
> playing sound in our architecture.
>
>
> Can callback call in DMA driver be placed out of spin_lock to submit
> new operations from callback? (only in asynchronous case)
>
> is this Ok? please comment.

Other dma driver authors are dropping the lock across the call to the
callback in the mem-to-io case.  The compliance points in the
documentation are primarily targeted at the expectations of the
async_tx api.  In the mem-to-io (slave dma) model you are not using
the async_tx api.

--
Dan

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Dmaengine query
  2010-04-15  0:30 ` Dan Williams
@ 2010-04-19 10:26   ` rd bairva
  2010-04-19 10:28     ` Fwd: " rd bairva
                       ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: rd bairva @ 2010-04-19 10:26 UTC (permalink / raw)
  To: Dan Williams; +Cc: linux-arm-kernel, linux-kernel

Hi Dan,

On Thu, Apr 15, 2010 at 6:00 AM, Dan Williams <dan.j.williams@intel.com> wrote:
> On Tue, Apr 13, 2010 at 11:26 PM, rd bairva <rbairva@gmail.com> wrote:
>> Hi Dan,
>>
>>        I am currently writing dmaengine compatible DMA driver for our ARM
>> based architecture, But I am facing some performance issues doing
>> that.
>>
>> 1. dmaengine says callback should run in tasklet, and next transfer
>> cannot be scheduled from the callback.
>>
>> Due to these restrictions I am getting some performance issue while
>> playing sound in our architecture.
>>
>>
>> Can callback call in DMA driver be placed out of spin_lock to submit
>> new operations from callback? (only in asynchronous case)
>>
>> is this Ok? please comment.
>
> Other dma driver authors are dropping the lock across the call to the
> callback in the mem-to-io case.  The compliance points in the
> documentation are primarily targeted at the expectations of the
> async_tx api.  In the mem-to-io (slave dma) model you are not using
> the async_tx api.
>
> --
> Dan
>

    My DMA controller supports device to device DMA transfers and we
need it in some of our drivers. Existing DMA engine framework doesn't
have support for device to device transfers.

Do you have any plans for device to device support in DMA engine?

Can you suggest me some other suggestion for doing this?


Regards
Ramdayal

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Fwd: Dmaengine query
  2010-04-19 10:26   ` rd bairva
@ 2010-04-19 10:28     ` rd bairva
  2010-04-22  4:05       ` rd bairva
                       ` (2 subsequent siblings)
  3 siblings, 0 replies; 9+ messages in thread
From: rd bairva @ 2010-04-19 10:28 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Dan,

On Thu, Apr 15, 2010 at 6:00 AM, Dan Williams <dan.j.williams@intel.com> wrote:
> On Tue, Apr 13, 2010 at 11:26 PM, rd bairva <rbairva@gmail.com> wrote:
>> Hi Dan,
>>
>> ? ? ? ?I am currently writing dmaengine compatible DMA driver for our ARM
>> based architecture, But I am facing some performance issues doing
>> that.
>>
>> 1. dmaengine says callback should run in tasklet, and next transfer
>> cannot be scheduled from the callback.
>>
>> Due to these restrictions I am getting some performance issue while
>> playing sound in our architecture.
>>
>>
>> Can callback call in DMA driver be placed out of spin_lock to submit
>> new operations from callback? (only in asynchronous case)
>>
>> is this Ok? please comment.
>
> Other dma driver authors are dropping the lock across the call to the
> callback in the mem-to-io case. ?The compliance points in the
> documentation are primarily targeted at the expectations of the
> async_tx api. ?In the mem-to-io (slave dma) model you are not using
> the async_tx api.
>
> --
> Dan
>

? ?My DMA controller supports device to device DMA transfers and we
need it in some of our drivers. Existing DMA engine framework doesn't
have support for device to device transfers.

Do you have any plans for device to device support in DMA engine?

Can you suggest me some other suggestion for doing this?


Regards
Ramdayal

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Dmaengine query
  2010-04-19 10:26   ` rd bairva
@ 2010-04-22  4:05       ` rd bairva
  2010-04-22  4:05       ` rd bairva
                         ` (2 subsequent siblings)
  3 siblings, 0 replies; 9+ messages in thread
From: rd bairva @ 2010-04-22  4:05 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel; +Cc: Dan Williams

My DMA controller supports device to device DMA transfers and we
need it in some of our drivers. Existing DMA engine framework doesn't
have support for device to device transfers.

Do you have any plans for device to device support in DMA engine?

Can you suggest me some other suggestion for doing this?


Regards
Ramdayal

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Dmaengine query
@ 2010-04-22  4:05       ` rd bairva
  0 siblings, 0 replies; 9+ messages in thread
From: rd bairva @ 2010-04-22  4:05 UTC (permalink / raw)
  To: linux-arm-kernel

My DMA controller supports device to device DMA transfers and we
need it in some of our drivers. Existing DMA engine framework doesn't
have support for device to device transfers.

Do you have any plans for device to device support in DMA engine?

Can you suggest me some other suggestion for doing this?


Regards
Ramdayal

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Dmaengine query
  2010-04-19 10:26   ` rd bairva
@ 2010-05-21  8:44       ` rd bairva
  2010-04-22  4:05       ` rd bairva
                         ` (2 subsequent siblings)
  3 siblings, 0 replies; 9+ messages in thread
From: rd bairva @ 2010-05-21  8:44 UTC (permalink / raw)
  To: Dan Williams; +Cc: linux-arm-kernel, linux-kernel

Hi Dan,

   My DMA controller supports device to device DMA transfers and we
need it in some of our drivers. Existing DMA engine framework doesn't
have support for device to device transfers.

Do you have any plans for device to device support in DMA engine?

Can you suggest me some other suggestion for doing this?


Regards
Ramdayal

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Dmaengine query
@ 2010-05-21  8:44       ` rd bairva
  0 siblings, 0 replies; 9+ messages in thread
From: rd bairva @ 2010-05-21  8:44 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Dan,

? ?My DMA controller supports device to device DMA transfers and we
need it in some of our drivers. Existing DMA engine framework doesn't
have support for device to device transfers.

Do you have any plans for device to device support in DMA engine?

Can you suggest me some other suggestion for doing this?


Regards
Ramdayal

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Dmaengine query
  2010-04-19 10:26   ` rd bairva
                       ` (2 preceding siblings ...)
  2010-05-21  8:44       ` rd bairva
@ 2010-05-24  0:01     ` Linus Walleij
  3 siblings, 0 replies; 9+ messages in thread
From: Linus Walleij @ 2010-05-24  0:01 UTC (permalink / raw)
  To: rd bairva; +Cc: Dan Williams, linux-arm-kernel, linux-kernel

2010/4/19 rd bairva <rbairva@gmail.com>:

>    My DMA controller supports device to device DMA transfers and we
> need it in some of our drivers. Existing DMA engine framework doesn't
> have support for device to device transfers.
>
> Do you have any plans for device to device support in DMA engine?
>
> Can you suggest me some other suggestion for doing this?

Extend the DMA engine with the stuff you need and propose nice
patches, provide them along with a driver that make use of this
feature.

What about a signature like this:

struct dma_async_tx_descriptor *(*device_prep_slave2slave)(
                struct dma_chan *chan1, struct dma_chan *chan2,
                enum dma_data_direction direction,
                unsigned long flags);

You'd have to add some semantics comment saying that
DMA_TO_DEVICE means chan1->chan2 and
DMA_FROM_DEVICE means chan1<-chan2.

Could be a bit of hacking but how hard can it be?

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2010-05-24  0:01 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-04-14  6:26 Dmaengine query rd bairva
2010-04-15  0:30 ` Dan Williams
2010-04-19 10:26   ` rd bairva
2010-04-19 10:28     ` Fwd: " rd bairva
2010-04-22  4:05     ` rd bairva
2010-04-22  4:05       ` rd bairva
2010-05-21  8:44     ` rd bairva
2010-05-21  8:44       ` rd bairva
2010-05-24  0:01     ` Linus Walleij

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.