JSI Tip 1170. DMA ATAPI device driver.

Jerold Schulman

March 22, 1999

1 Min Read
ITPro Today logo in a gray background | ITPro Today

Starting with Service Pack 2, Windows NT provides a new device driver for DMA (Direct Memory Access) capable ATAPI devices.

The new driver improves CPU utilization over standard PIO (Programmed Input/Output), making IDE drives almost usable .

When using PCI bus mastering DMA, only a single interupt is serviced when an IDE command completes, compared to PIO which requires an interrupt for each block of data. This reduces CPU load to 9% - 30% for servicing the I/O versus 90% - 100% with PIO.

To enable DMA, your system must have:

- PCI command register bit two (Master Enable) set.

- PCI device Class code set to one.

- PCI device Subclass code set to one.

- Programmer's interface bit seven set.

- Busmaster status register bits five and six set (Older BIOSs don't support this).

You can determine DMA status by using regedt32 to navigate to:

HKEY_LOCAL_MACHINEHARDWAREDEVICEMAPScsiScsiPort N

where N is 0 for the primary channel and 1 for the secondary channel.

If the Value name DMAEnabled, a type REG_DWORD entry, is 1, DMA is enabled.

The ATAPI driver can enable DMA on a per channel basis. All devices on an enabled channel must be DMA capable.

To enable DMA on a channel, create the following key:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesatapiParametersDeviceN

Add Value name DriverParameter as a type REG_SZ entry, and set the string to DMADetectionLevel = 0x1.

To disable DMA on a channel, set DriverParameter to DMADetectionLevel = 0x0.

You must shutdown and restart for these changes to take effect.

NOTE: You can check the status of DMA by using the DMACheck utility.

Sign up for the ITPro Today newsletter
Stay on top of the IT universe with commentary, news analysis, how-to's, and tips delivered to your inbox daily.

You May Also Like