Troubleshooting and Debugging
This section provides guidance for diagnosing and resolving common issues with the MDB5 DMA driver and client applications.
Note
When troubleshooting driver issues, always check kernel messages first using dmesg to identify the root cause.
Controller Driver Issues
no read/write channel found
The controller driver dw_edma is built into the kernel (not a loadable module). This error indicates that the required kernel configuration options are not enabled in the current kernel build.
Check if the required kernel options are enabled:
cat /boot/config-`uname -r` | grep -E "^(CONFIG_DW_EDMA|CONFIG_DW_EDMA_PCIE)="
Both options should show =y. If they are missing or disabled, the user must recompile the kernel with these options enabled. For detailed instructions, see the Controller Driver Setup section.
Client Driver Issues
modprobe: ERROR: could not insert ‘amd_client_drv’: Operation not permitted
This error occurs when the BDF (Bus:Device:Function) or DMA device ID parameters provided to modprobe are incorrect or don’t match the actual PCIe device.
Verify and correct the device_dbdf and dma_dev_id parameters:
modprobe ./bin/`uname -p`/mdb5-dmaclient-drv.ko device_dbdf="0000:01:00.0" dma_dev_id=1
Ensure device_dbdf matches the actual PCIe device (use lspci to find it) and dma_dev_id is the correct unique index.
modprobe: FATAL: Module ./bin/x86_64/mdb5-dmaclient-drv.ko not found
The client driver module file doesn’t exist at the specified path, either because it hasn’t been compiled yet or the path is incorrect.
Compile the client driver:
cd <path-to-mdb5-ep-drivers>/client-driver
make
Verify the module exists:
ls -la ./bin/x86_64/mdb5-dmaclient-drv.ko
modprobe: ERROR: could not insert module: Invalid module format
The module was compiled for a different kernel version than the one currently running. Kernel modules must match the exact kernel version.
Recompile the client driver for the current kernel:
cd <path-to-mdb5-ep-drivers>/client-driver
make clean
make
Note
This driver is verified to work with Linux kernel v6.8.0. The kernel version can be checked with uname -r. If the system is running a significantly different version, consider updating to a supported kernel version.
Application Issues
Root privileges required
Client applications need root privileges to access DMA device files in /dev/.
Run applications with root privileges:
sudo ./<dma-application>
libaio dependency missing
The libaio library is required for asynchronous I/O operations but is not installed on the system.
Install the libaio development package:
# Ubuntu/Debian
sudo apt-get install libaio-dev
Verify installation:
ldconfig -p | grep libaio
Failed to stat file ‘/dev/mdb5_ctrl’: No such file or directory
The client driver module is not loaded, or it failed to create the device nodes properly.
Load the client driver module:
modprobe ./bin/`uname -p`/mdb5-dmaclient-drv.ko device_dbdf="0000:01:00.0" dma_dev_id=1
Verify device nodes are created:
ls -la /dev/mdb*