
On Tue, Apr 23, 2013 at 10:52:09AM -0400, Laine Stump wrote:
Yesterday for the first time I consciously noticed the virNodeDeviceDettach and virNodeDeviceReAttach APIs, and found that they are hardcoded to bind to/unbind from the pci-stub driver for qemu, and the "pciback" driver for Xen. If we want these APIs to be useful for VFIO, they will need to bind to the vfio driver instead, but there is currently no method in those APIs to specify which driver to bind to.
I guess we could do this with new virNodeDeviceDetachFlags() and virNodeDeviceReAttachFlags() APIs which have a flag to indicate vfio, but before going to that trouble I'd like to know if these APIs are actually used or if they are deprecated (they don't seem to be of any use if the hostdev devices you're assigning have "managed='yes'" - as far as I can see, setting managed='yes' just makes the bind/unbind from the stub driver an automatic part of assigning/un-assigning the device to a guest).
The rationale for managed="no", is that in more security paranoid/locked down environments, admins will not want libvirtd screwing around with kernel module drivers. The admin would manually setup "pciback" binding ahead of time when configuring the host. I think we need to continue to support this scenario in the VFIO world. If we go down the route of extending <hostdev> to have support for <driver name="vfio|qemu"/> Then, this says that the virNodeDevice{Detach,ReAttach} methods need to have new variants which take a 'const char *drivername' parameter. NB, the values of 'drivername' would match those used in the domain XML <driver> element - they would *not* be kernel module names. So we'd call virNodeDeviceDetachDriver(dev, "qemu"); virNodeDeviceDetachDriver(dev, "vfio"); Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|