以下示例说明如何为 PCIe 总线启用 I/O 虚拟化、在非 primary 根域上管理直接 I/O 设备以及在非 primary 根域上管理 SR-IOV 虚拟功能。
以下示例说明如何使用 ldm add-io 和 ldm set-io 命令启用 I/O 虚拟化。
以下 SPARC T4-2 I/O 配置显示总线 pci_1 已从 primary 域中删除。
primary# ldm list-io NAME TYPE BUS DOMAIN STATUS ---- ---- --- ------ ------ pci_0 BUS pci_0 primary IOV pci_1 BUS pci_1 niu_0 NIU niu_0 primary niu_1 NIU niu_1 primary /SYS/MB/PCIE0 PCIE pci_0 primary OCC /SYS/MB/PCIE2 PCIE pci_0 primary OCC /SYS/MB/PCIE4 PCIE pci_0 primary OCC /SYS/MB/PCIE6 PCIE pci_0 primary EMP /SYS/MB/PCIE8 PCIE pci_0 primary EMP /SYS/MB/SASHBA PCIE pci_0 primary OCC /SYS/MB/NET0 PCIE pci_0 primary OCC /SYS/MB/PCIE1 PCIE pci_1 UNK /SYS/MB/PCIE3 PCIE pci_1 UNK /SYS/MB/PCIE5 PCIE pci_1 UNK /SYS/MB/PCIE7 PCIE pci_1 UNK /SYS/MB/PCIE9 PCIE pci_1 UNK /SYS/MB/NET2 PCIE pci_1 UNK /SYS/MB/NET0/IOVNET.PF0 PF pci_0 primary /SYS/MB/NET0/IOVNET.PF1 PF pci_0 primary
以下列表显示来宾域处于绑定状态:
primary# ldm list NAME STATE FLAGS CONS VCPU MEMORY UTIL NORM UPTIME primary active -n-cv- UART 8 8G 0.6% 0.6% 8m rootdom1 bound ------ 5000 8 4G ldg2 bound ------ 5001 8 4G ldg3 bound ------ 5002 8 4G
以下 ldm add-io 命令将 pci_1 总线添加到 rootdom1 域,并为该总线启用 I/O 虚拟化。ldm start 命令启动 rootdom1 域。
primary# ldm add-io iov=on pci_1 rootdom1 primary# ldm start rootdom1 LDom rootdom1 started
如果已将指定的 PCIe 总线分配给某个根域,请使用 ldm set-io 命令启用 I/O 虚拟化。
primary# ldm start-reconf rootdom1 primary# ldm set-io iov=on pci_1 primary# ldm stop-domain -r rootdom1
此根域必须正在运行其 OS,您才能配置 I/O 设备。如果未将来宾域设置为自动引导,请连接到 rootdom1 来宾域的控制台,然后引导 rootdom1 根域的 OS。
primary# telnet localhost 5000 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Connecting to console "rootdom1" in group "rootdom1" .... Press ~? for control options .. ok> boot ... primary#
以下命令表明 pci_1 PCIe 总线及其子项现在属于 rootdom1 根域。
primary# ldm list-io NAME TYPE BUS DOMAIN STATUS ---- ---- --- ------ ------ pci_0 BUS pci_0 primary IOV pci_1 BUS pci_1 rootdom1 IOV niu_0 NIU niu_0 primary niu_1 NIU niu_1 primary /SYS/MB/PCIE0 PCIE pci_0 primary OCC /SYS/MB/PCIE2 PCIE pci_0 primary OCC /SYS/MB/PCIE4 PCIE pci_0 primary OCC /SYS/MB/PCIE6 PCIE pci_0 primary EMP /SYS/MB/PCIE8 PCIE pci_0 primary EMP /SYS/MB/SASHBA PCIE pci_0 primary OCC /SYS/MB/NET0 PCIE pci_0 primary OCC /SYS/MB/PCIE1 PCIE pci_1 rootdom1 OCC /SYS/MB/PCIE3 PCIE pci_1 rootdom1 OCC /SYS/MB/PCIE5 PCIE pci_1 rootdom1 OCC /SYS/MB/PCIE7 PCIE pci_1 rootdom1 OCC /SYS/MB/PCIE9 PCIE pci_1 rootdom1 EMP /SYS/MB/NET2 PCIE pci_1 rootdom1 OCC /SYS/MB/NET0/IOVNET.PF0 PF pci_0 primary /SYS/MB/NET0/IOVNET.PF1 PF pci_0 primary /SYS/MB/PCIE5/IOVNET.PF0 PF pci_1 rootdom1 /SYS/MB/PCIE5/IOVNET.PF1 PF pci_1 rootdom1 /SYS/MB/NET2/IOVNET.PF0 PF pci_1 rootdom1 /SYS/MB/NET2/IOVNET.PF1 PF pci_1 rootdom1
以下示例说明如何在非 primary 根域上管理直接 I/O 设备。
以下命令将生成一个错误,因为它试图从根域中删除仍处于活动状态的插槽:
primary# ldm remove-io /SYS/MB/PCIE7 ldg1 Dynamic I/O operations on PCIe slots are not supported. Use start-reconf command to trigger delayed reconfiguration and make I/O changes statically.
以下命令显示删除插槽的正确方法,即,首先在根域上启动延迟重新配置。
primary# ldm start-reconf ldg1 Initiating a delayed reconfiguration operation on the ldg1 domain. All configuration changes for other domains are disabled until the ldg1 domain reboots, at which time the new configuration for the ldg1 domain will also take effect. primary# ldm remove-io /SYS/MB/PCIE7 ldg1 ------------------------------------------------------------------------------ Notice: The ldg1 domain is in the process of a delayed reconfiguration. Any changes made to the ldg1 domain will only take effect after it reboots. ------------------------------------------------------------------------------ primary# ldm stop-domain -r ldg1
以下 ldm list-io 命令可验证 /SYS/MB/PCIE7 插槽是否不再位于根域中。
primary# ldm list-io NAME TYPE BUS DOMAIN STATUS ---- ---- --- ------ ------ pci_0 BUS pci_0 primary IOV pci_1 BUS pci_1 ldg1 IOV niu_0 NIU niu_0 primary niu_1 NIU niu_1 primary /SYS/MB/PCIE0 PCIE pci_0 primary OCC /SYS/MB/PCIE2 PCIE pci_0 primary OCC /SYS/MB/PCIE4 PCIE pci_0 primary OCC /SYS/MB/PCIE6 PCIE pci_0 primary EMP /SYS/MB/PCIE8 PCIE pci_0 primary EMP /SYS/MB/SASHBA PCIE pci_0 primary OCC /SYS/MB/NET0 PCIE pci_0 primary OCC /SYS/MB/PCIE1 PCIE pci_1 ldg1 OCC /SYS/MB/PCIE3 PCIE pci_1 ldg1 OCC /SYS/MB/PCIE5 PCIE pci_1 ldg1 OCC /SYS/MB/PCIE7 PCIE pci_1 OCC /SYS/MB/PCIE9 PCIE pci_1 ldg1 EMP /SYS/MB/NET2 PCIE pci_1 ldg1 OCC /SYS/MB/NET0/IOVNET.PF0 PF pci_0 primary /SYS/MB/NET0/IOVNET.PF1 PF pci_0 primary /SYS/MB/PCIE5/IOVNET.PF0 PF pci_1 ldg1 /SYS/MB/PCIE5/IOVNET.PF1 PF pci_1 ldg1 /SYS/MB/NET2/IOVNET.PF0 PF pci_1 ldg1 /SYS/MB/NET2/IOVNET.PF1 PF pci_1 ldg1
以下命令可将 /SYS/MB/PCIE7 插槽分配给 ldg2 域。ldm start 命令可启动 ldg2 域。
primary# ldm add-io /SYS/MB/PCIE7 ldg2 primary# ldm start ldg2 LDom ldg2 started
以下命令可利用属于非 primary 根域的两个物理功能创建两个虚拟功能。
primary# ldm create-vf /SYS/MB/PCIE5/IOVNET.PF0 Created new vf: /SYS/MB/PCIE5/IOVNET.PF0.VF0 primary# ldm create-vf /SYS/MB/PCIE5/IOVNET.PF0 Created new vf: /SYS/MB/PCIE5/IOVNET.PF0.VF1 primary# ldm create-vf /SYS/MB/NET2/IOVNET.PF1 Created new vf: /SYS/MB/NET2/IOVNET.PF1.VF0 primary# ldm create-vf /SYS/MB/NET2/IOVNET.PF1 Created new vf: /SYS/MB/NET2/IOVNET.PF1.VF1
您还可以在以下两个命令中使用 –n 选项来创建两个虚拟功能:
primary# ldm create-vf -n 2 /SYS/MB/PCIE5/IOVNET.PF0 Created new vf: /SYS/MB/PCIE5/IOVNET.PF0.VF0 Created new vf: /SYS/MB/PCIE5/IOVNET.PF0.VF1 primary# ldm create-vf -n 2 /SYS/MB/NET2/IOVNET.PF1 Created new vf: /SYS/MB/NET2/IOVNET.PF1.VF0 Created new vf: /SYS/MB/NET2/IOVNET.PF1.VF1
如果无法在给定物理功能上动态创建虚拟功能,请启动延迟重新配置以静态创建虚拟功能。
primary# ldm start-reconf ldg1 primary# ldm create-vf /SYS/MB/PCIE5/IOVNET.PF0 Created new vf: /SYS/MB/PCIE5/IOVNET.PF0.VF0 primary# ldm create-vf /SYS/MB/PCIE5/IOVNET.PF0 Created new vf: /SYS/MB/PCIE5/IOVNET.PF0.VF1 primary# ldm create-vf /SYS/MB/NET2/IOVNET.PF1 Created new vf: /SYS/MB/NET2/IOVNET.PF1.VF0 primary# ldm create-vf /SYS/MB/NET2/IOVNET.PF1 Created new vf: /SYS/MB/NET2/IOVNET.PF1.VF1
然后重新引导根域 ldg1,以使更改生效。
primary# ldm stop-domain -r ldg1
以下命令可显示新的虚拟功能。
primary# ldm list-io NAME TYPE BUS DOMAIN STATUS ---- ---- --- ------ ------ pci_0 BUS pci_0 primary IOV pci_1 BUS pci_1 ldg1 IOV niu_0 NIU niu_0 primary niu_1 NIU niu_1 primary /SYS/MB/PCIE0 PCIE pci_0 primary OCC /SYS/MB/PCIE2 PCIE pci_0 primary OCC /SYS/MB/PCIE4 PCIE pci_0 primary OCC /SYS/MB/PCIE6 PCIE pci_0 primary EMP /SYS/MB/PCIE8 PCIE pci_0 primary EMP /SYS/MB/SASHBA PCIE pci_0 primary OCC /SYS/MB/NET0 PCIE pci_0 primary OCC /SYS/MB/PCIE1 PCIE pci_1 ldg1 OCC /SYS/MB/PCIE3 PCIE pci_1 ldg1 OCC /SYS/MB/PCIE5 PCIE pci_1 ldg1 OCC /SYS/MB/PCIE7 PCIE pci_1 ldg2 OCC /SYS/MB/PCIE9 PCIE pci_1 ldg1 EMP /SYS/MB/NET2 PCIE pci_1 ldg1 OCC /SYS/MB/NET0/IOVNET.PF0 PF pci_0 primary /SYS/MB/NET0/IOVNET.PF1 PF pci_0 primary /SYS/MB/PCIE5/IOVNET.PF0 PF pci_1 ldg1 /SYS/MB/PCIE5/IOVNET.PF1 PF pci_1 ldg1 /SYS/MB/NET2/IOVNET.PF0 PF pci_1 ldg1 /SYS/MB/NET2/IOVNET.PF1 PF pci_1 ldg1 /SYS/MB/PCIE5/IOVNET.PF0.VF0 VF pci_1 /SYS/MB/PCIE5/IOVNET.PF0.VF1 VF pci_1 /SYS/MB/NET2/IOVNET.PF1.VF0 VF pci_1 /SYS/MB/NET2/IOVNET.PF1.VF1 VF pci_1
以下命令可将 /SYS/MB/PCIE5/IOVNET.PF0.VF1 虚拟功能动态添加到非 primary 根域 ldg1 中:
primary# ldm add-io /SYS/MB/PCIE5/IOVNET.PF0.VF1 ldg1
以下命令会将 /SYS/MB/NET2/IOVNET.PF1.VF0 虚拟功能动态添加到 ldg2 域:
primary# ldm add-io /SYS/MB/NET2/IOVNET.PF1.VF0 ldg2
以下命令会将 /SYS/MB/NET2/IOVNET.PF1.VF1 虚拟功能添加到已绑定的 ldg3 域:
primary# ldm add-io /SYS/MB/NET2/IOVNET.PF1.VF1 ldg3 primary# ldm start ldg3 LDom ldg3 started
连接到 ldg3 域的控制台,然后引导其 OS。
以下输出显示所有分配都是按预期进行的。其中有一个虚拟功能未分配,因此,可以将其动态分配到 ldg1、ldg2 或 ldg3 域。
# ldm list-io NAME TYPE BUS DOMAIN STATUS ---- ---- --- ------ ------ pci_0 BUS pci_0 primary IOV pci_1 BUS pci_1 ldg1 IOV niu_0 NIU niu_0 primary niu_1 NIU niu_1 primary /SYS/MB/PCIE0 PCIE pci_0 primary OCC /SYS/MB/PCIE2 PCIE pci_0 primary OCC /SYS/MB/PCIE4 PCIE pci_0 primary OCC /SYS/MB/PCIE6 PCIE pci_0 primary EMP /SYS/MB/PCIE8 PCIE pci_0 primary EMP /SYS/MB/SASHBA PCIE pci_0 primary OCC /SYS/MB/NET0 PCIE pci_0 primary OCC /SYS/MB/PCIE1 PCIE pci_1 ldg1 OCC /SYS/MB/PCIE3 PCIE pci_1 ldg1 OCC /SYS/MB/PCIE5 PCIE pci_1 ldg1 OCC /SYS/MB/PCIE7 PCIE pci_1 ldg2 OCC /SYS/MB/PCIE9 PCIE pci_1 ldg1 EMP /SYS/MB/NET2 PCIE pci_1 ldg1 OCC /SYS/MB/NET0/IOVNET.PF0 PF pci_0 primary /SYS/MB/NET0/IOVNET.PF1 PF pci_0 primary /SYS/MB/PCIE5/IOVNET.PF0 PF pci_1 ldg1 /SYS/MB/PCIE5/IOVNET.PF1 PF pci_1 ldg1 /SYS/MB/NET2/IOVNET.PF0 PF pci_1 ldg1 /SYS/MB/NET2/IOVNET.PF1 PF pci_1 ldg1 /SYS/MB/PCIE5/IOVNET.PF0.VF0 VF pci_1 /SYS/MB/PCIE5/IOVNET.PF0.VF1 VF pci_1 ldg1 /SYS/MB/NET2/IOVNET.PF1.VF0 VF pci_1 ldg2 /SYS/MB/NET2/IOVNET.PF1.VF1 VF pci_1 ldg3