Re: how to get a DMA channel near a process?

From: Robert Hancock
Date: Wed Aug 26 2009 - 01:19:05 EST

On 08/25/2009 07:05 AM, Brice Goglin wrote:

I am playing with DMA engine on a Nehalem box with two X58 chipsets
(Supermicro X8DAH). My understanding is that there are 8 DMA channels on
each chipset, so 8 channels near each processor. Unfortunately, my BIOS

Don't think that DMA channel is the term you are looking for, maybe PCI Express lanes? DMA channels are an ancient ISA thing.

and 2.6.31-rc still wrongly reports the physical location of my devices
(it claims all PCI devices are near the first processor) but I worked
around the problem manually.

Presumably incorrect information in the BIOS tables (SLIT or MADT, maybe?)

The offloaded copy performance changes a lot depending on whether the
process memory is allocated near the DMA device. So first I would like
to know if DMA channels are allocated near the requesting
processor/process. Then I guess it's possible to read the cpu mask near

Not sure quite what you are trying to say here. Normally when memory is allocated for DMA use for a specific device I believe the kernel tries to allocate it on the same node that the device is attached to.

a given chan by following chan->dev.device up to the pci device, right?
But is there any way to request a DMA channel near a specific socket or
NUMA node or cpu mask?


To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at