Usage of the UIO framework with DMA and x86 ports

From: Fabian Maurer
Date: Sun Jan 02 2022 - 23:59:07 EST


Hello,

I want to port the pcnet32 driver to userland for learning purposes. Maybe for
something like ndiswrapper but in userspace.

I wanted to ask if it's possible to use UIO for PCI devices that need DMA and
x86 ports access. Preferably without writing my own kernel module.
The documentation I found i a bit... lacking.

Interrupts and memory-mapped-io are possible with uio_pci_generic, but not
sure about DMA and ports. Ports are doable with a custom kernel module, but I
didn't find anything for using DMA with UIO. Except for creating your own
solution.

Is there something in UIO that allows me to avoid messing with kernel modules?

Second, low priority question:
For the ndsiwrapper-in-userland idea I'd need to do the same with USB. Do I
need to create my own solution here or can this also be done with UIO?

Please CC me in replies.

Regards,
Fabian Maurer