Skip to content

Conversation

@mineiwik
Copy link

@mineiwik mineiwik commented Mar 9, 2025

This PR adds two iDMA drivers as either in-tree or out-of-tree loadable kernel modules and three example applications to issue iDMA transfers from user-space.

The drivers have been put into their own drivers directory in idma-engine and idma-proxy respectively. Both drivers can be built by invoking make clean all deploy in the respective directory. Additionally, the three applications located in drivers/idma-proxy are built as well and all binaries (drivers and apps) are copied over to the rootfs. Just make sure the ARCH and CROSS_COMPILE environment variables are unset or set correctly, depending on your environment.

mineiwik added 5 commits March 9, 2025 21:12
The purpose of the iDMA proxy driver is to serve as an IOCTL interface to issue a MEMCPY iDMA transfer from user-space. The proxy driver allows three different types of src/dst addressed:
- IDMA_KERNEL_BUFFER: the user can mmap a kernel buffer to user-space and read/write data to it. The iDMA transfer addresses are the physical addresses of the (physically contiguous) kernel buffers
- IDMA_COPY_BUFFER: Copy user-space buffers to temporarily allocated kernel-space buffers. The iDMA transfer addresses are the physical addresses of the (physically contiguous) kernel buffers
- IDMA_USER_DIRECT: Use user-space mapping to get physical addresses of the buffers. User has to guarantee that the buffers are physically contiguous
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant