2006-03-29 22:54:39

by Chris Leech

[permalink] [raw]
Subject: [PATCH 2/9] I/OAT

[I/OAT] Driver for the Intel(R) I/OAT DMA engine

From: Chris Leech <[email protected]>

Adds a new ioatdma driver

Signed-off-by: Chris Leech <[email protected]>
---

drivers/dma/Kconfig | 9
drivers/dma/Makefile | 1
drivers/dma/ioatdma.c | 805
+++++++++++++++++++++++++++++++++++++++
drivers/dma/ioatdma.h | 126 ++++++
drivers/dma/ioatdma_hw.h | 52 +++
drivers/dma/ioatdma_io.h | 118 ++++++
drivers/dma/ioatdma_registers.h | 128 ++++++
7 files changed, 1239 insertions(+), 0 deletions(-)


Attachments:
ioatdma_driver.gz (9.01 kB)

2006-03-30 07:21:41

by Evgeniy Polyakov

[permalink] [raw]
Subject: Re: [PATCH 2/9] I/OAT

On Wed, Mar 29, 2006 at 02:54:04PM -0800, Chris Leech ([email protected]) wrote:
> [I/OAT] Driver for the Intel(R) I/OAT DMA engine
>
> From: Chris Leech <[email protected]>
>
> Adds a new ioatdma driver
>
> Signed-off-by: Chris Leech <[email protected]>

Let's do it again.
Could you please describe how struct ioat_dma_chan channels are freed?
For example when device is removed just after it has been added.

ioat_probe() -> enumerate_dma_channels() (failures are ok now) ->
kmalloc a lot of channels.

ioat_remove() -> dma_async_device_unregister() which does not cleanup
ioat_dma_chan channels, but only clients.
It ends up in dma_async_device_cleanup() only.

--
Evgeniy Polyakov

2006-03-31 19:04:18

by Chris Leech

[permalink] [raw]
Subject: Re: [PATCH 2/9] I/OAT

> Could you please describe how struct ioat_dma_chan channels are freed?

Sorry, I got distracted by other issues and never ended up following
up on this. You're right, and it's just sloppiness on my part for
missing it, those structs are being leaked on module unload. I'll fix
it. Thanks.

-Chris