Before to post you this request, I have read J BOTTOMLEY documentation
(inside kernel doc and linux journal).
May be I have not understood but I currently have the following

On a PC (x86_64 SMP using linux kernel 2.6.17) there is a device
dedicated to data acquisition linked via a PCIe bus (using 4 PCIe x4
slots), this device has 2GB of memory.

We need to perform huge DMA transfer (from the device to the PC) using
16 PCIe lanes, on the PC side the resulting buffer can be 480 MB long
(each lane transferring 30 MB).
Because of ping-pong (2 buffers available for the same acquisition)
and multi-modality (several kind of data acquired), the total aperture
accessible by DMA can reach 1.6 GB.
The datarate has to be greater than 180MB/s per lane ( 2,8 GB/s for
the whole device).

To reach that datarate we plan to make the device initiate the
transfer and use local Scatter Gather List.

At this point we have the following questions
Q1: It is possible to get the private usage of these 1.6GB of memory
for the DMA (by getting it out of the memory managed by linux)?
Q1.1 : If yes what are the ways ?
Q1.2 : Is kernel function "init_memory_mapping" a way to get that
(according to arch/x86_64/kernel/setup.c:643) ?
Q2: Otherwise do we only have to reserve pages in DMA32 zone during
the early bootup stage?
Q3 : Other solutions?

Any help is welcome

Eric Guiffard

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