[PATCH 0/1] uio_pci_generic: extensions to allow access for non-privileged processes

Tom Lyon
2010-04-01T00:11:17Z

uio_pci_generic has previously been discussed on the KVM list, but this patch
has nothing to do with KVM, so it is also going to LKML.

The point of this patch is to beef up the uio_pci_generic driver so that a
non-privileged user process can run a user level driver for most PCIe
devices. This can only be safe if there is an IOMMU in the system with
per-device domains. Privileged users (CAP_SYS_RAWIO) are allowed if there is
no IOMMU.

Specifically, I seek to allow low-latency user level network drivers (non
tcp/ip) which directly access SR-IOV style virtual network adapters, for use
with packages such as OpenMPI.

Key areas of change:
- ioctl extensions to allow registration and dma mapping of memory regions,
with lock accounting
- support for mmu notifier driven de-mapping
- support for MSI and MSI-X interrupts (the intel 82599 VFs support only
MSI-X)
- allowing interrupt enabling and device register mapping all
through /dev/uio* so that permissions may be granted just by chmod
on /dev/uio*