Re: [PATCH 1/8] [I/OAT] DMA memcpy subsystem

2006-03-30 Thread Kumar Gala
On Mar 29, 2006, at 5:05 PM, Andrew Grover wrote: On 3/28/06, Kumar Gala [EMAIL PROTECTED] wrote: Do you only get callback when a channel is available? Yes How do you decide to do to provide PIO to the client? The client is responsible for using any channels it gets, or falling back to

Re: [PATCH 1/8] [I/OAT] DMA memcpy subsystem

2006-03-30 Thread Andrew Grover
On 3/30/06, Kumar Gala [EMAIL PROTECTED] wrote: I was under the impression that the DMA engine would provide a sync cpu based memcpy (PIO) if a real HW channel wasn't avail, if this is left to the client that's fine. So how does the client know he should use normal memcpy()? It has to keep

Re: [PATCH 1/8] [I/OAT] DMA memcpy subsystem

2006-03-29 Thread Andrew Grover
On 3/28/06, Kumar Gala [EMAIL PROTECTED] wrote: Do you only get callback when a channel is available? Yes How do you decide to do to provide PIO to the client? The client is responsible for using any channels it gets, or falling back to memcpy() if it doesn't get any. (I don't understand how

Re: [PATCH 1/8] [I/OAT] DMA memcpy subsystem

2006-03-28 Thread Andrew Grover
On 3/16/06, Kumar Gala [EMAIL PROTECTED] wrote: It would seem that when a client registers (or shortly there after when they call dma_async_client_chan_request()) they would expect to get the number of channels they need by some given time period. For example, lets say a client registers but

Re: [PATCH 1/8] [I/OAT] DMA memcpy subsystem

2006-03-28 Thread Kumar Gala
On Mar 28, 2006, at 12:44 PM, Andrew Grover wrote: On 3/16/06, Kumar Gala [EMAIL PROTECTED] wrote: It would seem that when a client registers (or shortly there after when they call dma_async_client_chan_request()) they would expect to get the number of channels they need by some given time

Re: [PATCH 1/8] [I/OAT] DMA memcpy subsystem

2006-03-28 Thread Andrew Grover
On 3/28/06, Kumar Gala [EMAIL PROTECTED] wrote: Also, what do you think about adding an operation type (MEMCPY, XOR, CRYPTO_AES, etc). We can than validate if the operation type expected is supported by the devices that exist. No objections, but this speculative support doesn't need to

Re: [PATCH 1/8] [I/OAT] DMA memcpy subsystem

2006-03-28 Thread Kumar Gala
On Mar 28, 2006, at 4:01 PM, Andrew Grover wrote: On 3/28/06, Kumar Gala [EMAIL PROTECTED] wrote: Also, what do you think about adding an operation type (MEMCPY, XOR, CRYPTO_AES, etc). We can than validate if the operation type expected is supported by the devices that exist. No

Re: [PATCH 1/8] [I/OAT] DMA memcpy subsystem

2006-03-14 Thread Pavel Machek
Hi! --- /dev/null +++ b/drivers/dma/dmaengine.c @@ -0,0 +1,360 @@ +/* +Copyright(c) 2004 - 2006 Intel Corporation. All rights reserved. + +This program is free software; you can redistribute it and/or modify it

Re: [PATCH 1/8] [I/OAT] DMA memcpy subsystem

2006-03-11 Thread Andrew Morton
Chris Leech [EMAIL PROTECTED] wrote: +void dma_async_device_cleanup(struct kref *kref); Declarations go in header files, please. Or give it static scope. - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at

[PATCH 1/8] [I/OAT] DMA memcpy subsystem

2006-03-10 Thread Chris Leech
Provides an API for offloading memory copies to DMA devices Signed-off-by: Chris Leech [EMAIL PROTECTED] --- drivers/Kconfig |2 drivers/Makefile |1 drivers/dma/Kconfig | 13 ++ drivers/dma/Makefile |1 drivers/dma/dmaengine.c | 360

Re: [PATCH 1/8] [I/OAT] DMA memcpy subsystem

2006-03-04 Thread Benjamin LaHaise
On Fri, Mar 03, 2006 at 01:42:20PM -0800, Chris Leech wrote: +void dma_async_device_unregister(struct dma_device* device) +{ ... + kref_put(device-refcount, dma_async_device_cleanup); + wait_for_completion(device-done); +} This looks like a bug: device is dereferenced after it is

Re: [PATCH 1/8] [I/OAT] DMA memcpy subsystem

2006-03-03 Thread David S. Miller
From: Chris Leech [EMAIL PROTECTED] Date: Fri, 03 Mar 2006 13:42:20 -0800 +static spinlock_t dma_list_lock; Please use DEFINE_SPINLOCK(). +static void dma_chan_free_rcu(struct rcu_head *rcu) { Newline before the brace please. +static void dma_async_device_cleanup(struct kref *kref) {