IGB UIO is based on Linux userspace io. The UIO mechanism make device memory in kernel can be mapped to a driver in userspace and programmer can program features in this driver.
Therefore there are 2 parts in UIO mechanism, one is a kernel module to register device to UIO(e.g. igb_uio.ko), the other one is the userspace driver(e.g. i40e_pmd) vfio is different to UIO, but it also provides userspace driver functions to make userspace can access PCI device
