How to force large page size for DMA transfer

During DMA transfer framework calls the callback method EvtProgramDma which receives scatter gather list SCATTER_GATHER_LIST as the last parameter. In this list elements Length is either 4096 ( most of the time) or 8192. Is there a way to force the 8192 page size?

No.

Mark Roddy

On Thu, Nov 15, 2012 at 10:44 AM, wrote:

> During DMA transfer framework calls the callback method EvtProgramDma
> which receives scatter gather list SCATTER_GATHER_LIST as the last
> parameter. In this list elements Length is either 4096 ( most of the time)
> or 8192. Is there a way to force the 8192 page size?
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
>

Length can be any multiple of PAGE_SIZE, except the first and the last SGE can have pretty much any length.

xxxxx@intel.com wrote:

During DMA transfer framework calls the callback method EvtProgramDma which receives scatter gather list SCATTER_GATHER_LIST as the last parameter. In this list elements Length is either 4096 ( most of the time) or 8192. Is there a way to force the 8192 page size?

You don’t get a choice. The buffer’s physical page assignments are what
they are. If you’re sending this to hardware, you can run through the
scatter/gather list yourself to coalesce consecutive pages, but you
can’t change the page assignments.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.

>you can run through the scatter/gather list yourself to coalesce consecutive pages

HAL is coalescing the consecutive pages for you into a single SGE.

No. There is no 8192-byte pages on x86 and x64 systems. The Alpha used
8192-byte pages, but that was because the hardware was built that way.

When the S/G list is created, it may be the case that two logically
consecutive pages just happen to be adjacent physically as well, and so
the S/G entry gives the address of the first page and a length of
n*pagesize, where n is the number of adjacent pages. Page adjacency is an
accidental property and you are seeing a low-level optimization here, over
which you have exactly zero control.
joe

During DMA transfer framework calls the callback method EvtProgramDma
which receives scatter gather list SCATTER_GATHER_LIST as the last
parameter. In this list elements Length is either 4096 ( most of the time)
or 8192. Is there a way to force the 8192 page size?


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer