Configure a PCI Alias in NovaΒΆ

PCI passthrough devices are exposed to VMs using system-wide PCI alias.

About this task

Each alias specifies PCI matching optional attributes: vendor_id, product_id, and device_type.

where

name

is a string identifying the PCI alias

device_id

is the device_id value obtained from the device list

vendor_id

is the vendor_id value obtained from the device list

device_type

is a string indicating the type of PCI device to add (valid values are: type-PCI, type-PF, or type-VF)

The following command displays the current configured PCI aliases:

$ kubectl exec -it -n openstack \
$(kubectl get pod --selector=application=nova,component=os-api -o name -n openstack) -- grep -e '\[pci\]' -e alias /etc/nova/nova.conf

By default it contains a list of general PCI aliases, such as:

[pci]
alias = {"vendor_id": "8086", "product_id": "0435", "name": "qat-dh895xcc-pf"}
alias = {"vendor_id": "8086", "product_id": "0443", "name": "qat-dh895xcc-vf"}
alias = {"vendor_id": "8086", "product_id": "37c8", "name": "qat-c62x-pf"}
alias = {"vendor_id": "8086", "product_id": "37c9", "name": "qat-c62x-vf"}
alias = {"name": "gpu"}

Additional PCI aliases may configured using a helm override for nova.

The following example replaces the previous list of PCI aliases with a custom list.

Procedure

  1. Create a yaml configuration file containing the configuration update.

    ~(keystone_admin)]$ cat << EOF > ./gpu_override.yaml
    conf:
      nova:
        pci:
          alias:
            type: multistring
            values:
            - '{"vendor_id": "8086", "product_id": "0435", "name":
              "qat-dh895xcc-pf"}'
            - '{"vendor_id": "8086", "product_id": "0443", "name":
              "qat-dh895xcc-vf"}'
            - '{"vendor_id": "8086", "product_id": "37c8", "name":
              "qat-c62x-pf"}'
            - '{"vendor_id": "8086", "product_id": "37c9", "name":
              "qat-c62x-vf"}'
            - '{"name": "gpu"}'
            - '{"vendor_id": "102b", "product_id": "0522", "name":
              "matrox-g200e"}'
            - '{"vendor_id": "10de", "product_id": "13f2", "name":
              "nvidia-tesla-m60"}'
            - '{"vendor_id": "10de", "product_id": "1b38", "name":
              "nvidia-tesla-p40"}'
            - '{"vendor_id": "10de", "product_id": "1eb8",
              "device_type":
              "type-PF", "name": "nvidia-tesla-t4-pf"}'
    EOF
    
  2. Update the Helm overrides using the new configuration file.

    ~(keystone_admin)]$ system helm-override-update --values ./gpu_override.yaml stx-openstack nova openstack --reuse-values
  3. Apply the changes.

    ~(keystone_admin)]$ system application-apply stx-openstack