Part I Oracle VM Server for SPARC 3.1 Software
Chapter 1 Overview of the Oracle VM Server for SPARC Software
About Oracle VM Server for SPARC and Oracle Solaris OS Versions
Hypervisor and Logical Domains
Oracle VM Server for SPARC Physical-to-Virtual Conversion Tool
Oracle VM Server for SPARC Configuration Assistant
Oracle VM Server for SPARC Management Information Base
Chapter 2 Installing and Enabling Software
Required Oracle VM Server for SPARC Software Components
Installing Oracle VM Server for SPARC Software on a New System
Updating the Oracle Solaris OS
Downloading the Logical Domains Manager
How to Download the Logical Domains Manager Software (Oracle Solaris 10)
Installing the Logical Domains Manager
Automatically Installing the Logical Domains Manager Software (Oracle Solaris 10)
Manually Installing the Logical Domains Manager Software
How to Manually Install the Oracle VM Server for SPARC 3.1 Software (Oracle Solaris 10)
Enabling the Logical Domains Manager Daemon
How to Enable the Logical Domains Manager Daemon
Upgrading a System That Is Already Using Oracle VM Server for SPARC
Upgrading the Oracle Solaris OS
Saving and Restoring Autosave Configuration Directories
How to Save and Restore Autosave Directories
Saving and Restoring the Logical Domains Constraints Database File
Upgrading the Logical Domains Manager and the System Firmware
How to Stop All Domains Running on the Platform, Except the Control Domain
Upgrading to Oracle VM Server for SPARC 3.1 Software
How to Upgrade to the Oracle VM Server for SPARC 3.1 Software (Oracle Solaris 10)
How to Upgrade to the Oracle VM Server for SPARC 3.1 Software (Oracle Solaris 11)
Factory Default Configuration and Disabling Domains
How to Remove All Guest Domains
How to Remove All Domain Configurations
How to Restore the Factory Default Configuration
How to Disable the Logical Domains Manager
How to Remove the Logical Domains Manager
How to Restore the Factory Default Configuration From the Service Processor
Chapter 3 Oracle VM Server for SPARC Security
Delegating the Management of Logical Domains by Using Rights
Using Rights Profiles and Roles
How to Assign a Rights Profile to a User
How to Create a Role and Assign the Role to a User
Logical Domains Manager Rights Profile Contents
Controlling Access to a Domain Console by Using Rights
How to Control Access to All Domain Consoles by Using Roles
How to Control Access to All Domain Consoles by Using Rights Profiles
How to Control Access to a Single Console by Using Roles
How to Control Access to a Single Console by Using Rights Profiles
How to Enable or Disable Console Logging
Service Domain Requirements for Domain Console Logging
Chapter 4 Setting Up Services and the Control Domain
How to Create Default Services
Initial Configuration of the Control Domain
How to Configure the Control Domain
Enabling Networking Between the Control/Service Domain and Other Domains
How to Configure the Virtual Switch as the Primary Interface
Enabling the Virtual Network Terminal Server Daemon
How to Enable the Virtual Network Terminal Server Daemon
Chapter 5 Setting Up Guest Domains
Creating and Starting a Guest Domain
How to Create and Start a Guest Domain
Installing Oracle Solaris OS on a Guest Domain
How to Install the Oracle Solaris OS on a Guest Domain From a DVD
How to Install the Oracle Solaris OS on a Guest Domain From an Oracle Solaris ISO File
How to Use the Oracle Solaris JumpStart Feature on an Oracle Solaris 10 Guest Domain
Chapter 6 Setting Up I/O Domains
General Guidelines for Creating an I/O Domain
Creating a Root Domain by Assigning PCIe Buses
How to Create an I/O Domain by Assigning a PCIe Bus
Creating an I/O Domain by Assigning PCIe Endpoint Devices
Direct I/O Hardware and Software Requirements
Current Direct I/O Feature Limitations
Planning PCIe Endpoint Device Configuration
How to Create an I/O Domain by Assigning a PCIe Endpoint Device
Creating an I/O Domain by Assigning PCIe SR-IOV Virtual Functions
SR-IOV Hardware and Software Requirements
Current SR-IOV Feature Limitations
Static SR-IOV Software Requirements
Dynamic SR-IOV Software Requirements
Dynamic SR-IOV Configuration Requirements
How to Enable I/O Virtualization for a PCIe Bus
Planning for the Use of PCIe SR-IOV Virtual Functions
Using Ethernet SR-IOV Virtual Functions
Ethernet SR-IOV Hardware Requirements
Planning for the Use of Ethernet SR-IOV Virtual Functions
Ethernet Device-Specific and Network-Specific Properties
Creating Ethernet Virtual Functions
How to Create an Ethernet SR-IOV Virtual Function
Destroying Ethernet Virtual Functions
How to Destroy an Ethernet SR-IOV Virtual Function
Modifying Ethernet SR-IOV Virtual Functions
How to Modify an Ethernet SR-IOV Virtual Function
Adding and Removing Ethernet SR-IOV Virtual Functions on I/O Domains
How to Add an Ethernet SR-IOV Virtual Function to an I/O Domain
How to Remove an Ethernet Virtual SR-IOV Function From an I/O Domain
Advanced SR-IOV Topics: Ethernet SR-IOV
Advanced Network Configuration for Virtual Functions
Booting an I/O Domain by Using an SR-IOV Virtual Function
SR-IOV Device-Specific Properties
Creating VNICs on SR-IOV Virtual Functions
Using an SR-IOV Virtual Function to Create an I/O Domain
How to Create an I/O Domain by Assigning an SR-IOV Virtual Function to It
Using InfiniBand SR-IOV Virtual Functions
InfiniBand SR-IOV Hardware Requirements
Creating and Destroying InfiniBand Virtual Functions
How to Create an InfiniBand Virtual Function
How to Destroy an InfiniBand Virtual Function
Adding and Removing InfiniBand Virtual Functions on I/O Domains
How to Add an InfiniBand Virtual Function to an I/O Domain
How to Remove an InfiniBand Virtual Function From an I/O Domain
Adding and Removing InfiniBand Virtual Functions to Root Domains
How to Add an InfiniBand Virtual Function to a Root Domain
How to Remove an InfiniBand Virtual Function From a Root Domain
Advanced SR-IOV Topics: InfiniBand SR-IOV
Using Fibre Channel SR-IOV Virtual Functions
Fibre Channel SR-IOV Hardware Requirements
Fibre Channel SR-IOV Requirements and Limitations
Fibre Channel Device Class-Specific Properties
World-Wide Name Allocation for Fibre Channel Virtual Functions
Creating Fibre Channel SR-IOV Virtual Functions
How to Create a Fibre Channel SR-IOV Virtual Function
Destroying Fibre Channel SR-IOV Virtual Functions
How to Destroy a Fibre Channel SR-IOV Virtual Function
Modifying Fibre Channel SR-IOV Virtual Functions
How to Modify a Fibre Channel SR-IOV Virtual Function
Adding and Removing Fibre Channel SR-IOV Virtual Functions on I/O Domains
How to Add a Fibre Channel SR-IOV Virtual Function to an I/O Domain
How to Remove a Fibre Channel SR-IOV Virtual Function From an I/O Domain
Advanced SR-IOV Topics: Fibre Channel SR-IOV
Accessing a Fibre Channel Virtual Function in a Guest Domain
SR-IOV: Rebooting the Root Domain
Using Non-primary Root Domains
Non-primary Root Domain Requirements
Non-primary Root Domain Limitations
Enabling I/O Virtualization for a PCIe Bus
Managing Direct I/O Devices on Non-primary Root Domains
Managing SR-IOV Virtual Functions on Non-primary Root Domains
Virtual Disk Identifier and Device Name
How to Export a Virtual Disk Back End Multiple Times
How to Change Virtual Disk Options
How to Change the Timeout Option
How to Export a Physical Disk as a Virtual Disk
How to Export a Physical Disk Slice as a Virtual Disk
File or Volume Exported as a Full Disk
How to Export a File as a Full Disk
How to Export a ZFS Volume as a Full Disk
File or Volume Exported as a Single-Slice Disk
How to Export a ZFS Volume as a Single-Slice Disk
Exporting Volumes and Backward Compatibility
Summary of How Different Types of Back Ends Are Exported
Guidelines for Exporting Files and Disk Slices as Virtual Disks
Using the Loopback File (lofi) Driver
Directly or Indirectly Exporting a Disk Slice
Configuring Virtual Disk Multipathing
Virtual Disk Multipathing and Virtual Disk Timeout
How to Configure Virtual Disk Multipathing
How to Export a CD or DVD From the Service Domain to the Guest Domain
How to Export an ISO Image From the Control Domain to Install a Guest Domain
Virtual Disk and the format Command
Configuring a ZFS Pool in a Service Domain
Examples of Storing Disk Images With ZFS
Creating a Snapshot of a Disk Image
Using Clone to Provision a New Domain
How to Create a Snapshot of a Disk Image of an Unconfigured System
Using Volume Managers in an Oracle VM Server for SPARC Environment
Using Virtual Disks With Volume Managers
Using Virtual Disks With Solaris Volume Manager
Using Virtual Disks When VxVM Is Installed
Using Volume Managers With Virtual Disks
Using Solaris Volume Manager With Virtual Disks
Chapter 8 Using Virtual Networks
Introduction to a Virtual Network
Oracle Solaris 10 Networking Overview
Oracle Solaris 11 Networking Overview
Maximizing Virtual Network Performance
Hardware and Software Requirements
Configuring Your Domains to Maximize the Performance of Your Virtual Network
Controlling the Amount of Physical Network Bandwidth That Is Consumed by a Virtual Network Device
Setting the Network Bandwidth Limit
Virtual Device Identifier and Network Interface Name
How to Find Oracle Solaris OS Network Interface Name
Assigning MAC Addresses Automatically or Manually
Range of MAC Addresses Assigned to Domains
Automatic Assignment Algorithm
Duplicate MAC Address Detection
Using Network Adapters With Domains
How to Determine Whether a Network Adapter Is GLDv3-Compliant (Oracle Solaris 10)
Configuring a Virtual Switch and the Service Domain for NAT and Routing
Configuring NAT on an Oracle Solaris 10 System
How to Set Up a Virtual Switch to Provide External Connectivity to Domains (Oracle Solaris 10)
Configuring NAT on an Oracle Solaris 11 System
How to Set Up a Virtual Switch to Provide External Connectivity to Domains (Oracle Solaris 11)
Configuring IPMP in an Oracle VM Server for SPARC Environment
Configuring Virtual Network Devices Into an IPMP Group in a Domain
Configuring and Using IPMP in the Service Domain
Using Link-Based IPMP in Oracle VM Server for SPARC Virtual Networking
How to Configure Physical Link Status Updates
Configuring and Using IPMP in Releases Prior to Logical Domains 1.3
Configuring IPMP in the Guest Domain
Configuring IPMP in the Service Domain
How to Configure a Host Route for Probe-Based IPMP
How to Assign VLANs to a Virtual Switch and Virtual Network Device
How to Install a Guest Domain When the Install Server Is in a VLAN
PVLAN Configuration Information
How to Configure a Virtual Switch With an NIU Network Device
How to Enable or Disable Hybrid Mode
Using Link Aggregation With a Virtual Switch
How to Configure Virtual Network and Virtual Switch Devices to Use Jumbo Frames
Compatibility With Older (Jumbo-Unaware) Versions of the vnet and vsw Drivers (Oracle Solaris 10)
Oracle Solaris 11 Networking-Specific Feature Differences
Introduction to Domain Migration
Overview of a Migration Operation
Security for Migration Operations
Performing Non-Interactive Migrations
Domain Migration Requirements for CPUs
Migration Requirements for Memory
Migration Requirements for Physical I/O Devices
Migration Requirements for Virtual I/O Devices
Migration Requirements for PCIe Endpoint Devices
Migration Requirements for PCIe SR-IOV Virtual Functions
Migration Requirements for NIU Hybrid I/O
Migration Requirements for Cryptographic Units
Delayed Reconfiguration in an Active Domain
Migrating While an Active Domain Has the Power Management Elastic Policy in Effect
Migrating a Domain From the OpenBoot PROM or a Domain That Is Running in the Kernel Debugger
Migrating Bound or Inactive Domains
Migration Requirements for Virtual I/O Devices
Migration Requirements for PCIe Endpoint Devices
Migration Requirements for PCIe SR-IOV Virtual Functions
Monitoring a Migration in Progress
Canceling a Migration in Progress
Recovering From a Failed Migration
How to Apply the Whole-Core Constraint
How to Apply the Max-Cores Constraint
Interactions Between the Whole-Core Constraint and Other Domain Features
Configuring the System With Hard Partitions
Checking the Configuration of a Domain
Configuring a Domain With CPU Whole Cores
How to Create a New Domain With CPU Whole Cores
How to Configure an Existing Domain With CPU Whole Cores
How to Configure the Primary Domain With CPU Whole Cores
Interaction of Hard Partitioned Systems With Other Oracle VM Server for SPARC Features
CPU Dynamic Resource Management
Assigning Physical Resources to Domains
How to Remove the physical-bindings Constraint
How to Remove All Non-Physically Bound Resources
Managing Physical Resources on the Control Domain
Restrictions for Managing Physical Resources on Domains
Using Memory Dynamic Reconfiguration
Memory Reconfiguration of the Control Domain
Decrease the Control Domain's Memory
Dynamic and Delayed Reconfiguration
Memory Alignment for Active Domains
Memory Alignment for Bound Domains
Memory Alignment for Inactive Domains
Using Dynamic Resource Management
Utilization Statistic Definition
Chapter 11 Managing Domain Configurations
Managing Domain Configurations
Available Configuration Recovery Methods
Restoring Configurations By Using Autosave
How to Modify the Autorecovery Policy
Restoring Domain Configurations
How to Restore a Domain Configuration From an XML File (ldm add-domain)
How to Restore a Domain Configuration From an XML File (ldm init-system)
Chapter 12 Handling Hardware Errors
Hardware Error-Handling Overview
Using FMA to Blacklist or Unconfigure Faulty Resources
Recovering Domains After Detecting Faulty or Missing Resources
Marking I/O Resources as Evacuated
Chapter 13 Performing Other Administration Tasks
Connecting to a Guest Console Over the Network
How to Combine Multiple Consoles Into One Group
Stopping a Heavily Loaded Domain Can Time Out
Operating the Oracle Solaris OS With Oracle VM Server for SPARC
OpenBoot Firmware Not Available After the Oracle Solaris OS Has Started
Performing a Power Cycle of a Server
Result of Oracle Solaris OS Breaks
Results From Halting or Rebooting the Control Domain
Using Oracle VM Server for SPARC With the Service Processor
Configuring Domain Dependencies
Determining Where Errors Occur by Mapping CPU and Memory Addresses
Example of CPU and Memory Mapping
Using Universally Unique Identifiers
Virtual Domain Information Command and API
Only the static SR-IOV feature is supported for InfiniBand SR-IOV devices.
To minimize downtime, run all of the SR-IOV commands as a group while the root domain is in delayed reconfiguration or a guest domain is stopped. The SR-IOV commands that are limited in this way are the ldm create-vf, ldm destroy-vf, ldm add-io, and ldm remove-io commands.
Typically, virtual functions are assigned to more than one guest domain. A reboot of the root domain affects all of the guest domains that have been assigned the root domain's virtual functions.
Because an unused InfiniBand virtual function has very little overhead, you can avoid downtime by creating the necessary virtual functions ahead of time, even if they are not used immediately.
For information about the required PCIe InfiniBand SR-IOV hardware, see PCIe SR-IOV Hardware and Software Requirements in Oracle VM Server for SPARC 3.1.1.1, 3.1.1, and 3.1 Release Notes .
For InfiniBand SR-IOV support, the root domain must be running at least the Oracle Solaris 11.1.10.5.0 OS. The I/O domains can run the Oracle Solaris 10 1/13 OS plus patch 148888-04 or at least the Oracle Solaris 11.1.10.5.0 OS.
This procedure describes how to create an InfiniBand SR-IOV virtual function.
primary# ldm start-reconf root-domain-name
Perform this step only if I/O virtualization is not enabled already for the bus that has the physical function.
primary# ldm set-io iov=on bus
primary# ldm create-vf pf-name
You can run this command for each virtual function that you want to create. You can also use the –n option to create more than one virtual function from the same physical function in a single command. See Example 6–7 and the ldm(1M) man page.
Run one of the following commands:
primary# ldm stop-domain -r root-domain
primary# shutdown -i6 -g0 -y
The following example shows information about the /SYS/MB/RISER1/PCIE4/IOVIB.PF0 physical function:
This physical function is in PCIE slot 4.
The IOVIB string indicates that the physical function is an InfiniBand SR-IOV device.
primary# ldm list-io NAME TYPE BUS DOMAIN STATUS ---- ---- --- ------ ------ pci_0 BUS pci_0 primary niu_0 NIU niu_0 primary /SYS/MB/RISER0/PCIE0 PCIE pci_0 primary EMP /SYS/MB/RISER1/PCIE1 PCIE pci_0 primary EMP /SYS/MB/RISER2/PCIE2 PCIE pci_0 primary EMP /SYS/MB/RISER0/PCIE3 PCIE pci_0 primary OCC /SYS/MB/RISER1/PCIE4 PCIE pci_0 primary OCC /SYS/MB/RISER2/PCIE5 PCIE pci_0 primary EMP /SYS/MB/SASHBA0 PCIE pci_0 primary OCC /SYS/MB/SASHBA1 PCIE pci_0 primary OCC /SYS/MB/NET0 PCIE pci_0 primary OCC /SYS/MB/NET2 PCIE pci_0 primary OCC /SYS/MB/RISER0/PCIE3/IOVIB.PF0 PF pci_0 primary /SYS/MB/RISER1/PCIE4/IOVIB.PF0 PF pci_0 primary /SYS/MB/NET0/IOVNET.PF0 PF pci_0 primary /SYS/MB/NET0/IOVNET.PF1 PF pci_0 primary /SYS/MB/NET2/IOVNET.PF0 PF pci_0 primary /SYS/MB/NET2/IOVNET.PF1 PF pci_0 primary
The following command shows more details about the specified physical function. The maxvfs value indicates the maximum number of virtual functions that are supported by the device.
primary# ldm list-io -l /SYS/MB/RISER1/PCIE4/IOVIB.PF0 NAME TYPE BUS DOMAIN STATUS ---- ---- --- ------ ------ /SYS/MB/RISER1/PCIE4/IOVIB.PF0 PF pci_0 primary [pci@400/pci@1/pci@0/pci@0/pciex15b3,673c@0] maxvfs = 64
The following example shows how to create a static virtual function. First, initiate a delayed reconfiguration on the primary domain and enable I/O virtualization on the pci_0 PCIe bus. Because the pci_0 bus has been assigned already to the primary root domain, use the ldm set-io command to enable I/O virtualization.
primary# ldm start-reconf primary Initiating a delayed reconfiguration operation on the primary domain. All configuration changes for other domains are disabled until the primary domain reboots, at which time the new configuration for the primary domain will also take effect. primary# ldm set-io iov=on pci_0 ----------------------------------------------------------------------- Notice: The primary domain is in the process of a delayed reconfiguration. Any changes made to the primary domain will only take effect after it reboots. -----------------------------------------------------------------------
Now, use the ldm create-vf command to create a virtual function from the /SYS/MB/RISER1/PCIE4/IOVIB.PF0 physical function.
primary# ldm create-vf /SYS/MB/RISER1/PCIE4/IOVIB.PF0 ----------------------------------------------------------------------- Notice: The primary domain is in the process of a delayed reconfiguration. Any changes made to the primary domain will only take effect after it reboots. ---------------------------------------------------------------------- Created new vf: /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF0
Note that you can create more than one virtual function during the same delayed reconfiguration. The following command creates a second virtual function:
primary# ldm create-vf /SYS/MB/RISER1/PCIE4/IOVIB.PF0 ----------------------------------------------------------------------- Notice: The primary domain is in the process of a delayed reconfiguration. Any changes made to the primary domain will only take effect after it reboots. ----------------------------------------------------------------------- Created new vf: /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF1
Finally, reboot the primary root domain to make the changes take effect.
primary# shutdown -i6 -g0 -y Shutdown started. Changing to init state 6 - please wait ...
This procedure describes how to destroy an InfiniBand SR-IOV virtual function.
A virtual function can be destroyed if it is not currently assigned to a domain. A virtual function can be destroyed only in the reverse sequential order of creation, so only the last virtual function that was created can be destroyed. The resulting configuration is validated by the physical function driver.
primary# ldm start-reconf root-domain-name
primary# ldm destroy-vf vf-name
You can run this command for each virtual function that you want to destroy. You can also use the –n option to destroy more than one virtual function from the same physical function in a single command. See Example 6–9 and the ldm(1M) man page.
Run one of the following commands:
primary# ldm stop-domain -r root-domain
primary# shutdown -i6 -g0 -y
The following example shows how to destroy a static InfiniBand virtual function, /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF1.
The ldm list-io command shows information about the buses, physical functions, and virtual functions.
primary# ldm list-io NAME TYPE BUS DOMAIN STATUS ---- ---- --- ------ ------ pci_0 BUS pci_0 primary IOV ... /SYS/MB/RISER1/PCIE4/IOVIB.PF0 PF pci_0 primary ... /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF0 VF pci_0 /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF1 VF pci_0
You can obtain more details about the physical function and related virtual functions by using the ldm list-io -l command.
primary# ldm list-io -l /SYS/MB/RISER1/PCIE4/IOVIB.PF0 NAME TYPE BUS DOMAIN STATUS ---- ---- --- ------ ------ /SYS/MB/RISER1/PCIE4/IOVIB.PF0 PF pci_0 primary [pci@400/pci@1/pci@0/pci@0/pciex15b3,673c@0] maxvfs = 64 /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF0 VF pci_0 [pci@400/pci@1/pci@0/pci@0/pciex15b3,673c@0,1] /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF1 VF pci_0 [pci@400/pci@1/pci@0/pci@0/pciex15b3,673c@0,2]
A virtual function can be destroyed only if it is unassigned to a domain. The DOMAIN column of the ldm list-io -l output shows the name of any domain to which a virtual function is assigned. Also, virtual functions must be destroyed in the reverse order of their creation. Therefore, in this example, you must destroy the /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF1 virtual function before you can destroy the /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF0 virtual function.
After you identify the proper virtual function, you can destroy it. First, initiate a delayed reconfiguration.
primary# ldm start-reconf primary Initiating a delayed reconfiguration operation on the primary domain. All configuration changes for other domains are disabled until the primary domain reboots, at which time the new configuration for the primary domain will also take effect. primary# ldm destroy-vf /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF1 ----------------------------------------------------------------------- Notice: The primary domain is in the process of a delayed reconfiguration. Any changes made to the primary domain will only take effect after it reboots. -----------------------------------------------------------------------
You can issue more than one ldm destroy-vf command while in delayed reconfiguration. Thus, you could also destroy the /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF0.
Finally, reboot the primary root domain to make the changes take effect.
primary# shutdown -i6 -g0 -y Shutdown started. Changing to init state 6 - please wait ...
This procedure describes how to add an InfiniBand SR-IOV virtual function to an I/O domain.
primary# ldm stop-domain domain-name
vf-name is the pseudonym name or the path name of the virtual function. The recommended practice is to use the pseudonym name. domain-name specifies the name of the domain to which you add the virtual function. The specified I/O domain must be in the inactive or bound state.
primary# ldm add-io vf-name domain-name
primary# ldm start-domain domain-name
The following example shows how to add the /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF2 virtual function to the iodom1 I/O domain.
First, identify the virtual function that you want to assign.
primary# ldm list-io NAME TYPE BUS DOMAIN STATUS ---- ---- --- ------ ------ pci_0 BUS pci_0 primary IOV ... /SYS/MB/RISER1/PCIE4/IOVIB.PF0 PF pci_0 primary ... /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF0 VF pci_0 /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF1 VF pci_0 /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF2 VF pci_0 /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF3 VF pci_0
To add a virtual function to an I/O domain, it must be unassigned. The DOMAIN column indicates the name of the domain to which the virtual function is assigned. In this case, the /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF2 is not assigned to a domain.
To add a virtual function to a domain, the domain must be in the inactive or bound state.
primary# ldm list-domain NAME STATE FLAGS CONS VCPU MEMORY UTIL NORM UPTIME primary active -n-cv- UART 32 64G 0.2% 0.2% 56m iodom1 active -n---- 5000 8 8G 33% 33% 25m
The ldm list-domain output shows that the iodom1 I/O domain is active, so it must be stopped.
primary# ldm stop iodom1 LDom iodom1 stopped primary# ldm list-domain NAME STATE FLAGS CONS VCPU MEMORY UTIL NORM UPTIME primary active -n-cv- UART 32 64G 0.0% 0.0% 57m iodom1 bound ------ 5000 8 8G
Now you can add the virtual function to the I/O domain.
primary# ldm add-io /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF2 iodom1 primary# ldm list-io ... /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF2 VF pci_0 iodom1
Note that you can add more than one virtual function while an I/O domain is stopped. For example, you might add other unassigned virtual functions such as /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF3 to iodom1. After you add the virtual functions, you can restart the I/O domain.
primary# ldm start iodom1 LDom iodom1 started primary# ldm list-domain NAME STATE FLAGS CONS VCPU MEMORY UTIL NORM UPTIME primary active -n-cv- UART 32 64G 1.0% 1.0% 1h 18m iodom1 active -n---- 5000 8 8G 36% 36% 1m
This procedure describes how to remove an InfiniBand SR-IOV virtual function from an I/O domain.
primary# ldm stop-domain domain-name
vf-name is the pseudonym name or the path name of the virtual function. The recommended practice is to use the device pseudonym. domain-name specifies the name of the domain from which you remove the virtual function. The specified I/O domain must be in the inactive or bound state.
primary# ldm rm-io vf-name domain-name
primary# ldm start-domain domain-name
The following example shows how to remove the /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF2 virtual function from the iodom1 I/O domain.
First, identify the virtual function that you want to remove.
primary# ldm list-io NAME TYPE BUS DOMAIN STATUS ---- ---- --- ------ ------ pci_0 BUS pci_0 primary IOV ... /SYS/MB/RISER1/PCIE4/IOVIB.PF0 PF pci_0 primary ... /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF0 VF pci_0 /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF1 VF pci_0 /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF2 VF pci_0 iodom1 /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF3 VF pci_0 iodom1
The DOMAIN column shows the name of the domain to which the virtual function is assigned. The /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF2 virtual function is assigned to iodom1.
To remove a virtual function from an I/O domain, the domain must be inactive or bound state. Use the ldm list-domain command to determine the state of the domain.
primary# ldm list-domain NAME STATE FLAGS CONS VCPU MEMORY UTIL NORM UPTIME primary active -n-cv- UART 32 64G 0.3% 0.3% 29m iodom1 active -n---- 5000 8 8G 17% 17% 11m
In this case, the iodom1 domain is active and so must be stopped.
primary# ldm stop iodom1 LDOM iodom1 stopped primary# ldm list-domain NAME STATE FLAGS CONS VCPU MEMORY UTIL NORM UPTIME primary active -n-cv- UART 32 64G 0.0% 0.0% 31m iodom1 bound ------ 5000 8 8G
Now you can remove the /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF2 virtual function from iodom1.
primary# ldm rm-io /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF2 iodom1 primary# ldm list-io NAME TYPE BUS DOMAIN STATUS ---- ---- --- ------ ------ ... /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF2 VF pci_0 ...
Note that the DOMAIN column for the virtual function is now empty.
You can remove more than one virtual function while an I/O domain is stopped. In this example, you could also remove the /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF3 virtual function. After you remove the virtual functions, you can restart the I/O domain.
primary# ldm start iodom1 LDom iodom1 started primary# ldm list-domain NAME STATE FLAGS CONS VCPU MEMORY UTIL NORM UPTIME primary active -n-cv- UART 32 64G 0.3% 0.3% 39m iodom1 active -n---- 5000 8 8G 9.4% 9.4% 5s
This procedure describes how to add an InfiniBand SR-IOV virtual function to a root domain.
primary# ldm start-reconf root-domain
vf-name is the pseudonym name or the path name of the virtual function. The recommended practice is to use the pseudonym name. root-domain-name specifies the name of the root domain to which you add the virtual function.
primary# ldm add-io vf-name root-domain-name
Run one of the following commands:
primary# ldm stop-domain -r root-domain-name
primary# shutdown -i6 -g0 -y
This procedure describes how to remove an InfiniBand SR-IOV virtual function from a root domain.
primary# ldm start-reconf root-domain
vf-name is the pseudonym name or the path name of the virtual function. The recommended practice is to use the pseudonym name. root-domain-name specifies the name of the root domain to which you add the virtual function.
primary# ldm remove-io vf-name root-domain-name
Run one of the following commands:
primary# ldm stop-domain -r root-domain-name
primary# shutdown -i6 -g0 -y
This section describes how to identify InfiniBand physical and virtual functions as well as to correlate the Logical Domains Manager and the Oracle Solaris view of InfiniBand physical and virtual functions.
The following example shows different ways to display information about the /SYS/MB/RISER1/PCIE4/IOVIB.PF0 physical function. A physical function name that includes the IOVIB string indicates that it is an InfiniBand SR-IOV device.
primary# ldm list-io NAME TYPE BUS DOMAIN STATUS ---- ---- --- ------ ------ pci_0 BUS pci_0 primary IOV niu_0 NIU niu_0 primary /SYS/MB/RISER0/PCIE0 PCIE pci_0 primary EMP /SYS/MB/RISER1/PCIE1 PCIE pci_0 primary EMP /SYS/MB/RISER2/PCIE2 PCIE pci_0 primary EMP /SYS/MB/RISER0/PCIE3 PCIE pci_0 primary OCC /SYS/MB/RISER1/PCIE4 PCIE pci_0 primary OCC /SYS/MB/RISER2/PCIE5 PCIE pci_0 primary EMP /SYS/MB/SASHBA0 PCIE pci_0 primary OCC /SYS/MB/SASHBA1 PCIE pci_0 primary OCC /SYS/MB/NET0 PCIE pci_0 primary OCC /SYS/MB/NET2 PCIE pci_0 primary OCC /SYS/MB/RISER0/PCIE3/IOVIB.PF0 PF pci_0 primary /SYS/MB/RISER1/PCIE4/IOVIB.PF0 PF pci_0 primary /SYS/MB/NET0/IOVNET.PF0 PF pci_0 primary /SYS/MB/NET0/IOVNET.PF1 PF pci_0 primary /SYS/MB/NET2/IOVNET.PF0 PF pci_0 primary /SYS/MB/NET2/IOVNET.PF1 PF pci_0 primary /SYS/MB/RISER0/PCIE3/IOVIB.PF0.VF0 VF pci_0 primary /SYS/MB/RISER0/PCIE3/IOVIB.PF0.VF1 VF pci_0 primary /SYS/MB/RISER0/PCIE3/IOVIB.PF0.VF2 VF pci_0 iodom1 /SYS/MB/RISER0/PCIE3/IOVIB.PF0.VF3 VF pci_0 iodom1 /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF0 VF pci_0 primary /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF1 VF pci_0 primary /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF2 VF pci_0 iodom1 /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF3 VF pci_0 iodom1
The ldm list-io -l command provides more detailed information about the specified physical function device, /SYS/MB/RISER1/PCIE4/IOVIB.PF0. The maxvfs value shows that the maximum number of virtual functions supported by the physical device is 64. For each virtual function that is associated with the physical function, the output shows the following:
Function name
Function type
Bus name
Domain name
Optional status of the function
Device path
This ldm list-io -l output shows that VF0 and VF1 are assigned to the primary domain and that VF2 and VF3 are assigned to the iodom1 I/O domain.
primary# ldm list-io -l /SYS/MB/RISER1/PCIE4/IOVIB.PF0 NAME TYPE BUS DOMAIN STATUS ---- ---- --- ------ ------ /SYS/MB/RISER1/PCIE4/IOVIB.PF0 PF pci_0 primary [pci@400/pci@1/pci@0/pci@0/pciex15b3,673c@0] maxvfs = 64 /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF0 VF pci_0 primary [pci@400/pci@1/pci@0/pci@0/pciex15b3,673c@0,1] /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF1 VF pci_0 primary [pci@400/pci@1/pci@0/pci@0/pciex15b3,673c@0,2] /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF2 VF pci_0 iodom1 [pci@400/pci@1/pci@0/pci@0/pciex15b3,673c@0,3] /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF3 VF pci_0 iodom1 [pci@400/pci@1/pci@0/pci@0/pciex15b3,673c@0,4]
This section describes how to identify the InfiniBand SR-IOV devices on an Oracle Solaris 11 and an Oracle Solaris 10 system.
Use the ldm list-io -l command to show the Oracle Solaris device path name that is associated with each physical function and virtual function.
primary# ldm list-io -l /SYS/MB/RISER1/PCIE4/IOVIB.PF0 NAME TYPE BUS DOMAIN STATUS ---- ---- --- ------ ------ /SYS/MB/RISER1/PCIE4/IOVIB.PF0 PF pci_0 primary [pci@400/pci@1/pci@0/pci@0/pciex15b3,673c@0] maxvfs = 64 /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF0 VF pci_0 primary [pci@400/pci@1/pci@0/pci@0/pciex15b3,673c@0,1] /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF1 VF pci_0 primary [pci@400/pci@1/pci@0/pci@0/pciex15b3,673c@0,2] /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF2 VF pci_0 iodom1 [pci@400/pci@1/pci@0/pci@0/pciex15b3,673c@0,3] /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF3 VF pci_0 iodom1 [pci@400/pci@1/pci@0/pci@0/pciex15b3,673c@0,4]
Oracle Solaris 11:
Use the Oracle Solaris 11 dladm show-phys -L command to match each IP over InfiniBand (IPoIB) instance to its physical card. For example, the following command shows which IPoIB instances use the card in slot PCIE4, which is the same card shown in the previous ldm list-io -l example.
primary# dladm show-phys -L | grep PCIE4 net5 ibp0 PCIE4/PORT1 net6 ibp1 PCIE4/PORT2 net19 ibp8 PCIE4/PORT1 net9 ibp9 PCIE4/PORT2 net18 ibp4 PCIE4/PORT1 net11 ibp5 PCIE4/PORT2
Each InfiniBand host channel adapter (HCA) device has a globally unique ID (GUID). There are also GUIDs for each port (typically there are two ports to an HCA). An InfiniBand HCA GUID uniquely identifies the adapter. The port GUID uniquely identifies each HCA port and plays a role similar to a network device's MAC address. These 16-hexadecimal digit GUIDs are used by InfiniBand management tools and diagnostic tools.
Use the Oracle Solaris 11 dladm show-ib command to obtain GUID information about the InfiniBand SR-IOV devices. Physical functions and virtual functions for the same device have related HCA GUID values. The 11th hexadecimal digit of the HCA GUID shows the relationship between a physical function and its virtual functions. Note that leading zeros are suppressed in the HCAGUID and PORTGUID columns.
For example, physical function PF0 has two virtual functions, VF0 and VF1, which are assigned to the primary domain. The 11th hexadecimal digit of each virtual function is incremented by one from the related physical function. So, if the GUID for the PF0 is 8, the GUIDs for VF0 and VF1 will be 9 and A, respectively.
The following dladm show-ib command output shows that the net5 and net6 links belong to the physical function PF0. The net19 and net9 links belong to VF0 of the same device while the net18 and net11 links belong to VF1.
primary# dladm show-ib LINK HCAGUID PORTGUID PORT STATE PKEYS net6 21280001A17F56 21280001A17F58 2 up FFFF net5 21280001A17F56 21280001A17F57 1 up FFFF net19 21290001A17F56 14050000000001 1 up FFFF net9 21290001A17F56 14050000000008 2 up FFFF net18 212A0001A17F56 14050000000002 1 up FFFF net11 212A0001A17F56 14050000000009 2 up FFFF
The device in the following Oracle Solaris 11 dladm show-phys output shows the relationship between the links and the underlying InfiniBand port devices (ibpX).
primary# dladm show-phys LINK MEDIA STATE SPEED DUPLEX DEVICE ... net6 Infiniband up 32000 unknown ibp1 net5 Infiniband up 32000 unknown ibp0 net19 Infiniband up 32000 unknown ibp8 net9 Infiniband up 32000 unknown ibp9 net18 Infiniband up 32000 unknown ibp4 net11 Infiniband up 32000 unknown ibp5
Use the ls -l command to show the actual InfiniBand port (IB port) device paths. An IB port device is a child of a device path that is shown in the ldm list-io -l output. A physical function has a one-part unit address such as pciex15b3,673c@0 while virtual functions have a two-part unit address, pciex15b3,1002@0,2. The second part of the unit address is one higher than the virtual function number. (In this case, the second component is 2, so this device is virtual function 1.) The following output shows that /dev/ibp0 is a physical function and /dev/ibp5 is a virtual function.
primary# ls -l /dev/ibp0 lrwxrwxrwx 1 root root 83 Apr 18 12:02 /dev/ibp0 -> ../devices/pci@400/pci@1/pci@0/pci@0/pciex15b3,673c@0/hermon@0/ibport@1,0,ipib:ibp0 primary# ls -l /dev/ibp5 lrwxrwxrwx 1 root root 85 Apr 22 23:29 /dev/ibp5 -> ../devices/pci@400/pci@1/pci@0/pci@0/pciex15b3,1002@0,2/hermon@3/ibport@2,0,ipib:ibp5
You can use the OpenFabrics ibv_devices command to view the OpenFabrics device name and the node (HCA) GUID. When virtual functions are present, the Type column indicates whether the function is physical or virtual.
primary# ibv_devices device node GUID type ------ ---------------- ---- mlx4_4 0002c90300a38910 PF mlx4_5 0021280001a17f56 PF mlx4_0 0002cb0300a38910 VF mlx4_1 0002ca0300a38910 VF mlx4_2 00212a0001a17f56 VF mlx4_3 0021290001a17f56 VF
Oracle Solaris 10:
In an Oracle Solaris 10 guest I/O domain, use the dladm show-dev command to show each IPoIB instance, which has a name in the form ibdxx.
# dladm show-dev vnet0 link: up speed: 0 Mbps duplex: unknown ibd0 link: up speed: 32000 Mbps duplex: unknown ibd1 link: up speed: 32000 Mbps duplex: unknown ibd2 link: up speed: 32000 Mbps duplex: unknown ibd3 link: up speed: 32000 Mbps duplex: unknown
You can use the ls -l command on the HCA path names in the /devices/ directory to extract an HCA and its HCA GUID.
# ls -l /devices/ib\:[0-9]* crw-r--r-- 1 root sys 67, 0 Jun 12 16:27 /devices/ib:212B0001A17F56 crw-r--r-- 1 root sys 67, 0 Jun 12 16:27 /devices/ib:212C0001A17F56
The GUIDs in the ibv_devices output (note the 11th hexadecimal digit, "B" and "C" in this case) indicate that these are virtual functions assigned to the Oracle Solaris 10 domain. You can obtain more information about the IPoIB instances by using the ls -l command on the /dev IPoIB path names.
# ls -l /dev/ibd* lrwxrwxrwx 1 root other 29 May 23 16:26 /dev/ibd -> ../devices/pseudo/clone@0:ibd lrwxrwxrwx 1 root root 89 May 31 10:52 /dev/ibd0 -> ../devices/pci@400/pci@1/pci@0/pci@0/pciex15b3,1002@0,3/hermon@0/ibport@1,ffff,ipib:ibd0 lrwxrwxrwx 1 root root 89 May 31 10:52 /dev/ibd1 -> ../devices/pci@400/pci@1/pci@0/pci@0/pciex15b3,1002@0,3/hermon@0/ibport@2,ffff,ipib:ibd1 lrwxrwxrwx 1 root root 89 Jun 12 18:36 /dev/ibd2 -> ../devices/pci@400/pci@1/pci@0/pci@0/pciex15b3,1002@0,4/hermon@1/ibport@1,ffff,ipib:ibd2 lrwxrwxrwx 1 root root 89 Jun 12 18:36 /dev/ibd3 -> ../devices/pci@400/pci@1/pci@0/pci@0/pciex15b3,1002@0,4/hermon@1/ibport@2,ffff,ipib:ibd3
Each path begins with the device path that is shows in the ldm list-io -l output. The virtual functions such as pciex15b3,1002@0,4 have a two-part unit address where the second part of the unit address is one higher than the virtual function number (in this case, VF3).
The ibport device has a three-part unit address followed by a colon and then the IPoIB device instance name. The first part of the unit address is the port number. The second is the partition key (P-key) hexadecimal value. Note that InfiniBand P-key values are similar to VLANs for Ethernet. The third part is a the string ipib.
The ls -l /dev/ibd3 command output shows that the ibd3 IPoIB instance uses port 2 and P-key value ffff.