Re: WDF DMA use
- From: "Eliyas Yakub [MSFT]" <eliyasy@xxxxxxxxxxxxxxxxxxxx>
- Date: Tue, 5 Jun 2007 06:54:24 -0700
No you shouldn't use MmAllocateContiguousMemory. If you are planning to use common buffer and do the memory copy yourself then you should use AllocateCommonBuffer to allocate memory. Industry is moving towards IOMMU (ask DMA remapping). By using DMA interfaces, you make your driver future proof.
-Eliyas
"Avi Lousky" <AviLousky@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message news:65221CB2-EA84-4A96-B2D9-53383EF78284@xxxxxxxxxxxxxxxx
So map registers are my bottle neck. Here is a thought: I will use
MmAllocateContiguousMemory with HighestAcceptableAddress of 32 bit address
and configure the dma enabler (WDF_DMA_ENABLER_CONFIG) with 32 bit and
scatter gather. Will then the abstraction ignore the use map registers? Will
I be able to use several hundreds of transactions?
Is there another way to cause the system not to use map registers?
Thanks!
"Eliyas Yakub [MSFT]" wrote:
Yes it will coalesce it using map registers.
For scatter-gather DMA, map registers will be used only if the buffer lies
outside the range of memory your hardware can access.
Yes, map registers are very precious resource. You can think of them as
backup buffers allocated by the system to workaround hardware addressing
limitations. The system can only allocate so many of those. The number of
concurrent DMA transactions is constrained by the number of map registers
system can provide. You can ask for large amount of map registers by
specifying a big value in MaximumLength field, but the system may not
provide everything you ask for. Based on what the system provides, you have
to scale down your concurrency level. Take a look at the PCIDRV sample and
the logic around WdfDmaEnablerCreate call.
Since you are using Packet based DMA, one think you should note is that you
cannot initiate more than one DMA transactions concurrently. This is a
limitation imposed by the DMA sub-system because of the way it waits for the
map-registers to be made available. Framework has logic to enforce this
limitation.
-Eliyas
.
- Follow-Ups:
- Re: WDF DMA use
- From: Avi Lousky
- Re: WDF DMA use
- References:
- Re: WDF DMA use
- From: Eliyas Yakub [MSFT]
- Re: WDF DMA use
- Prev by Date: For PDO: How to forward request to next lower driver stack automatically in KMDF?
- Next by Date: Serial Device Enumeration Problem (VCP)
- Previous by thread: Re: WDF DMA use
- Next by thread: Re: WDF DMA use
- Index(es):
Relevant Pages
|