| Previous | Next |
| kIOReturnUnsupported | kIOReturnInternalError |
kIOReturnVMError
Virtual-memory context matters
kIOReturnVMError is the common IOKit result for a miscellaneous virtual-memory failure. IOKit transfer paths can move data between a user process, the kernel, and physical memory; descriptors, mappings, and address translation therefore matter even when the application simply sees a device operation.
This value is broader than an ordinary allocation failure. kIOReturnNoMemory identifies inability to allocate memory, while kIOReturnCannotWire refers specifically to keeping physical memory resident for I/O. For kIOReturnVMError, the caller must establish which virtual-memory operation and buffer representation were active.
Evidence to preserve
- Record buffer ownership, address range, size, direction, memory-descriptor stage, and request lifetime.
- Check that mappings, descriptors, and completion operations are paired correctly on success, failure, and cancellation.
- Reduce the request to a small, well-aligned buffer to separate an address-space issue from cumulative resource pressure.
- Avoid assuming that an application heap pointer is directly usable by the driver-side I/O path.
References
- Apple XNU source: IOReturn.h
- Apple: Managing data in IOKit
- Apple: Introduction to IOKit Fundamentals
Looking for a different code? Search another status or error code.