HEADS UP: PCI SR-IOV infrastructure has been committed to head

Ryan Stone rysto32 at gmail.com
Sun Mar 1 02:01:34 UTC 2015

I've just finished committing support for PCI Single Root I/O
Virtualization in the pci subsystem to head.  This should be a no-op
for everyone right now, but there were some minor refactorings in the
pci code that could have a lingering bug.  I did make sure to test
that it boots on a variety of systems (but only i386/amd64, as that's
all that I have access to).

What's been committed to head is only the pci subsystem side of
things, along with the userland tools to configure SR-IOV (along with,
I'm happy to say, a full set of man pages).  What's not in head yet
are any drivers making use of the infrastructure.  Full support for
ixl(4) is complete and I've sent the patch to jfv@; I hope to see the
driver support committed soon.  I don't have any word on timelines for
getting support in other drivers.  Unfortunately adding SR-IOV support
to a driver is not trivial as the standard leaves a lot of the details
up to particular implementations (in the same way the the PCIe
standard does not define how to send a packet from a NIC; instead
defining how the PCIe device will expose its registers and whatnot,
and its up to the PCIe device and driver to understand how to poke at
the registers to send a packet).  I have heard anecdotally that a
number of driver maintainers have been very interested in this work so
I hope that to see more drivers supported SR-IOV in the near future.
I encourage all driver maintainers to read over the new manpages and
contact me if they have any questions about the new infrastructure.

Anybody interested in using SR-IOV should try to attend BSDCan 2015,
as I will be giving a talk on the subject.  I intend to focus more on
the system administration side of configuring and using SR-IOV rather
than the details of implementing an SR-IOV driver.

If anybody did an "svn up" half-way through my muddled series of
commits, sorry about the temporary breakage.  My
buildworld/buildkernel on r279466 just completed successfully so
please make sure that you have at least that revision.  If you still
have problems, please let me know.

I do want to thank John Baldwin for advice about the PCI Subsystem and
newbus and Jack Vogel for his help with the Fortville NIC, including
getting me early access to the VF driver for testing purposes.  Thanks
to everybody who reviewed the changes.  Specially thanks to Mark
Johnston and Sean Mahood, who literally spent hours with me in a
meeting room reviewing the entire patch series last summer
(thankfully, those hours at least weren't consecutive).

Above all, thanks to Sandvine Inc. for sponsoring this work.  This is
definitely the biggest contribution we've ever made to FreeBSD and I
hope to see this kind of thing continue.

More information about the freebsd-current mailing list