> -----Original Message-----
> From: Alex Williamson [mailto:alex.william...@redhat.com]
> Sent: Tuesday, April 23, 2013 11:56 AM
> To: Yoder Stuart-B08248
> Cc: Joerg Roedel; iommu@lists.linux-foundation.org
> Subject: Re: RFC: vfio / iommu driver for hardware with no iommu
> 
> On Tue, 2013-04-23 at 16:13 +0000, Yoder Stuart-B08248 wrote:
> > Joerg/Alex,
> >
> > We have embedded systems where we use QEMU/KVM and have
> > the requirement to do device assignment, but have no
> > iommu.  So we would like to get vfio-pci working on
> > systems like this.
> >
> > We're aware of the obvious limitations-- no protection,
> > DMA'able memory must be physically contiguous and will
> > have no iova->phy translation.  But there are use cases
> > where all OSes involved are trusted and customers can
> > live with those limitations.   Virtualization is used
> > here not to sandbox untrusted code, but to consolidate
> > multiple OSes.
> >
> > We would like to get your feedback on the rough idea.  There
> > are two parts-- iommu driver and vfio-pci.
> >
> > 1.  iommu driver
> >
> > First, we still need device groups created because vfio
> > is based on that, so we envision a 'dummy' iommu
> > driver that implements only  the add/remove device
> > ops.  Something like:
> >
> >     static struct iommu_ops fsl_none_ops = {
> >             .add_device     = fsl_none_add_device,
> >             .remove_device  = fsl_none_remove_device,
> >     };
> >
> >     int fsl_iommu_none_init()
> >     {
> >             int ret = 0;
> >
> >             ret = iommu_init_mempool();
> >             if (ret)
> >                     return ret;
> >
> >             bus_set_iommu(&platform_bus_type, &fsl_none_ops);
> >             bus_set_iommu(&pci_bus_type, &fsl_none_ops);
> >
> >             return ret;
> >     }
> >
> > 2.  vfio-pci
> >
> > For vfio-pci, we would ideally like to keep user space mostly
> > unchanged.  User space will have to follow the semantics
> > of mapping only physically contiguous chunks...and iova
> > will equal phys.
> >
> > So, we propose to implement a new vfio iommu type,
> > called VFIO_TYPE_NONE_IOMMU.  This implements
> > any needed vfio interfaces, but there are no calls
> > to the iommu layer...e.g. map_dma() is a noop.
> >
> > Would like your feedback.
> 
> My first thought is that this really detracts from vfio and iommu groups
> being a secure interface, so somehow this needs to be clearly an
> insecure mode that requires an opt-in and maybe taints the kernel.  Any
> notion of unprivileged use needs to be blocked and it should test
> CAP_COMPROMISE_KERNEL (or whatever it's called now) at critical access
> points.  We might even have interfaces exported that would allow this to
> be an out-of-tree driver (worth a check).
> 
> I would guess that you would probably want to do all the iommu group
> setup from the vfio fake-iommu driver.  In other words, that driver both
> creates the fake groups and provides the dummy iommu backend for vfio.
> That would be a nice way to compartmentalize this as a
> vfio-noiommu-special.

So you mean don't implement any of the iommu driver
ops at all and keep everything in the vfio layer?

Would you still have real iommu groups?...i.e. 
$ readlink /sys/bus/pci/devices/0000:06:0d.0/iommu_group
../../../../kernel/iommu_groups/26

...and that is created by vfio-noiommu-special?

Right now when the PCI and platform buses are probed,
the iommu driver add-device callback gets called and
that is where the per-device group gets created.  Are
you envisioning registering a callback for the PCI
bus to do this in vfio-noiommu-special?

> Would map/unmap really be no-ops?  Seems like you still want to do page
> pinning.

You're right, that was a bad example...most would be no ops though.

> Also, you're using fsl in the example above, but would such a
> driver have any platform dependency?

This wouldn't have to be fsl specific if we thought it was
potentially generally useful.

Stuart
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

Reply via email to