Re: [PATCH] uio_pci_generic does not export memory resources

Alex Williamson
2012-06-08T14:16:59Z

On Fri, 2012-06-08 at 15:16 +0200, Jan Kiszka wrote:
> On 2012-06-08 15:03, Michael S. Tsirkin wrote:
> >> + /* set master */
> >> + pci_set_master(pdev);
> >> +
> >> + /* set DMA mask */
> >> + err = pci_set_dma_mask(pdev, DMA_BIT_MASK(64));
> >
> > uio currently only supports devices which do not
> > do DMA.
> >
> > DMA from uio controlled devices is a no no unless
> > it's behind an IOMMU which can protect us from
> > random memory corruptions this could cause.
> >
> > In the later case it's OK but we need some code
> > to check this and program the IOMMU appropriately.
>
> AKA: VFIO. :)
>
> Dominic, maybe you want to have a look at Alex's work:
> https://github.com/awilliam/linux-vfio

Yes, thanks Jan. This is exactly what VFIO does. VFIO provides secure
config space access, resource access, DMA mapping services, and full
interrupt support to userspace. I'm currently working to get this
upstream, probably targeting 3.6 at this point, and would love to have
more users to help make that happen. Please take a look at the vfio-3.4
branch in the tree above. See this tree for Qemu's usage of VFIO for
device assignment:
https://github.com/awilliam/qemu-vfio (vfio-ng)

Look forward to your feedback. Thanks,

Alex