The SR-IOV feature has the following limitations:
An I/O domain cannot start if any associated root domain is not running.
Migration is disabled for any domain that has one or more SR-IOV physical functions or SR-IOV virtual functions assigned to it.
You can destroy only the last virtual function that was created for a physical function. So, if you create three virtual functions, the first virtual function that you can destroy must be the third one.
If an SR-IOV card is assigned to a domain by using the Direct I/O (DIO) feature, the SR-IOV feature is not enabled for that card.
The PCIe endpoint devices and SR-IOV virtual functions from a particular PCIe bus can be assigned up to a maximum of 15 domains on supported SPARC T-series, SPARC M-series, and SPARC S-series servers. On servers starting with the SPARC T7, SPARC M7, and SPARC S7 series server, you can assign PCIe endpoint devices and SR-IOV virtual functions from a particular PCIe bus to a maximum of 31 domains. On a Fujitsu SPARC M12 server or Fujitsu M10 server you can assign PCIe endpoint devices and SR-IOV virtual functions from a particular PCIe bus to a maximum of 24 domains. The PCIe resources, such as interrupt vectors for each PCIe bus, are divided among the root domain and I/O domains. As a result, the number of devices that you can assign to a particular I/O domain is also limited. Make sure that you do not assign a large number virtual functions to the same I/O domain. There is no interrupt limitation for servers starting with the SPARC T7, SPARC M7, and SPARC S7 series server. For a description of the problems related to SR-IOV, see Oracle VM Server for SPARC 3.6 Release Notes.
The root domain is the owner of the PCIe bus and is responsible for initializing and managing the bus. The root domain must be active and running a version of the Oracle Solaris OS that supports the SR-IOV feature. Shutting down, halting, or rebooting the root domain interrupts access to the PCIe bus. When the PCIe bus is unavailable, the PCIe devices on that bus are affected and might become unavailable.
If the root domain providing PCIe SR-IOV virtual functions to an I/O domain is rebooted while that I/O domain is running then unpredictable behavior can result in that I/O domain. For instance, I/O domains with PCIe endpoint devices assigned might panic during or after the reboot of the root domain if that I/O domain is not configured with I/O domain resiliency (IOR). To recover an I/O domain after such a panic, it must be manually stopped and started once the root domain has completed booting.
However if the I/O domain is made resilient, it can continue to operate unhindered even if the root domain that is the owner of the PCIe bus for one set of SR-IOV virtual functions becomes unavailable. IOR allows the domain to be resilient to root domain downtime. See the I/O Domain Resiliency section for details.
Also see I/O Domain Resiliency Limitations for best practices when using SR-IOV in an IOR configuration.
SPARC systems, up to and including the SPARC T5 and SPARC M6 platforms, provide a finite number of interrupts, so Oracle Solaris limits the number of interrupts that each device can use. The default limit should match the needs of a typical system configuration but you might need to adjust this value for certain system configurations. For more information, see Adjusting the Interrupt Limit.