The dynamic SR-IOV feature removes the following static SR-IOV requirements:
Root domain. Initiate a delayed reconfiguration on the root domain, create or destroy a virtual function, and reboot the root domain
I/O domain. Stop the I/O domain, add or remove a virtual function, and start the I/O domain
With dynamic SR-IOV you can dynamically create or destroy a virtual function without having to initiate a delayed reconfiguration on the root domain. A virtual function can also be dynamically added to or removed from an I/O domain without having to stop the domain. The Logical Domains Manager communicates with the Logical Domains agent and the Oracle Solaris I/O virtualization framework to effect these changes dynamically.
For information about the required PCIe SR-IOV software and firmware versions, see SR-IOV Hardware and Software Requirements.
To dynamically create or destroy a virtual function, ensure that the following conditions are met:
I/O virtualization has been enabled for a PCIe bus before you begin to configure virtual functions.
The OS that runs on the root domain and on I/O domains must be at least the Oracle Solaris 11.1 SRU 10 OS.
The physical function device is not configured in the OS or is in a multipathing configuration. For example, you can unplumb an Ethernet SR-IOV device or have it in an IPMP or an aggregation to successfully create or destroy a virtual function.
An operation to create or destroy a virtual function requires that the physical function device driver toggle between the offline and online states. A multipathing configuration permits the device driver to toggle between these states.
The virtual function is either not in use or in a multipathing configuration before you remove a virtual function from an I/O domain. For example, you can either unplumb an Ethernet SR-IOV virtual function or not use it in an IPMP configuration.
The resources on the root complex are not restored after you destroy all the virtual functions and return the slots to the root domain.
Recovery: Return all the virtual I/O resources that are associated with the root complex to their root domain.
First, put the control domain in delayed reconfiguration.
primary# ldm start-reconf primary
Return all child PCIe slots to the root domain that owns the pci_0 bus. Then, remove all of the child virtual functions on the pci_0 bus and destroy them.
Finally, set iov=off for the pci_0 bus and reboot the root domain.
primary# ldm set-io iov=off pci_0 primary# shutdown -y -g 10
Workaround: Set the iov option to off for the specific PCIe bus.
primary# ldm start-reconf primary primary# ldm set-io iov=off pci_0