none
Help! Can i use the system dma controller? RRS feed

  • Question

  • I have written a WDM driver for my lagacy PCIe device. I want to use the way of DMA to transfer data, but my device have not DMA controller. I see the DDK that introduce how to use the system DMA. I try to get the system DMA adapter by IoGetDmaAdapter function, but it always return NULL. so my problem is whether the system dma can be use? if the system dma can be used, how should I initialize the DEVICE_DESCRIPTION struct for this condition?
    Monday, November 25, 2019 1:09 PM

Answers

  • You cannot add DMA after the fact, there is no system DMA controller that will interact with your PCI device and magically enable DMA.

    d -- This posting is provided "AS IS" with no warranties, and confers no rights.

    Monday, November 25, 2019 7:08 PM

All replies

  • You cannot add DMA after the fact, there is no system DMA controller that will interact with your PCI device and magically enable DMA.

    d -- This posting is provided "AS IS" with no warranties, and confers no rights.

    Monday, November 25, 2019 7:08 PM
  • Thank you for reply! Your mean that Is all PCI device only can ues the bus-master DMA? If the device have not DMA controller, it will can't have DMA way transcation?
    Monday, November 25, 2019 10:22 PM
  • Right.  In order to do bus-master DMA, your device has to become the bus master.  That's the point.  If your device doesn't have a DMA controller, then you can't do DMA.

    The "system DMA controller" is a leftover from the original IBM PC's ISA bus.  It  is limited to the low 16 megabytes of memory, and it is way slower than copying data using the CPU.


    Tim Roberts | Driver MVP Emeritus | Providenza & Boekelheide, Inc.

    Tuesday, November 26, 2019 1:41 AM
  • Thank you!
    Tuesday, November 26, 2019 5:07 AM