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*