| Previous | Next |
| kIOReturnRLDError | kIOReturnBusy |
kIOReturnDMAError
This is a DMA-path result, not a generic memory shortage
kIOReturnDMAError is an IOKit return value for a failure in the DMA path. DMA transfers are prepared through a driver stack that describes memory for a device and may create hardware-specific segments or descriptors. The code does not, by itself, say whether the fault occurred while preparing the buffer, programming the device, or completing the transfer; that distinction belongs to the IOKit family and driver that returned it.
Do not treat this as interchangeable with kIOReturnNoMemory, kIOReturnNoResources, or kIOReturnNotAligned. Those statuses describe different conditions. A failed DMA operation can leave a transfer only partly completed, so retrying a write without knowing the device protocol can duplicate or corrupt data.
What to capture before retrying
- Identify the IOKit family, device registry entry, active interface or mode, operation direction, requested length, and offset.
- Preserve the driver and kernel log entries from the same time window; the symbolic IOReturn value is only the final status presented to the caller.
- Check whether the caller released, remapped, or modified the buffer before asynchronous completion.
- For a recoverable device protocol, cancel or drain outstanding work, reset the relevant queue as documented by that family, and reopen the device before submitting new work.
References
- Apple Developer: kIOReturnDMAError
- Apple XNU source: IOReturn.h
- Apple IOKit Fundamentals: Managing Data
Looking for a different code? Search another status or error code.