Configuring PCI Pass Through over Cloud

Perform the following steps to configure PCI pass through over cloud:

  1. Configure nova-scheduler (controller).
    Add PciPassthroughFilter filter to nova.conf with the following command:
    [filter_scheduler]
    enabled_filters = <your filters>, PciPassthroughFilter
    available_filters = nova.scheduler.filters.all_filters
    
  2. Locate vendor_id and product_id of the Adax card (compute).

    Execute the following lspci commnd to show vendor_id and product_id:

    lspci -v |grep -i Adax -B 2 -A 8

    Sample Output:

    img/sample_output.jpg

    In the above output, 14:00.0 is the PCI address of the Adax card, Using this address, the vendor_id and product_id can be listed with the following command:

    lspci -nn -s 14:00.0

    Sample Output:

    img/ispci_example.jpg

    In the above output, 14:00.0 is the PCI address of the Adax card, Using this address, the vendor_id and product_id can be listed as follows:
    • vendor_id=1957
    • product_id=0091
  3. Configure nova-api (controller).

    Add Adax card to nova.conf file on the controller:

    The type of the card must be type-PCI. Name can be anything.

    Example:

    img/installation_fig3.jpg

    In this example the card name is Adax1:

    Note: If multiple Adax cards are connected to a host, multiple alias needs to be created. In this example, one Adax card is connected to a host.

  4. Update flavor with the card name (controller or cli box).

    Execute the following command:

    openstack flavor set Adax --property 
    "pci_passthrough:alias"="Adax1:1"

    Note: To connect multiple Adax cards to a VM, use Adax1:2 (connect 2 cards), Adax1:3 (connect 3 cards).

  5. Configure nova-compute (compute)
    Whitelist Adax1 card on the compute node in nova.conf with the following command:
    [pci]
    pci_passthrough_whitelist = "{"vendor_id":"1957","product_id":"0091"}"
    
  6. Restart the controller and compute services.
    1. Restart the controller services with the following command:
      systemctl restart openstack-nova-api.service
        openstack-nova-conductor.service
        openstack-nova-consoleauth.service
       openstack-nova-metadata-api.service
       openstack-nova-scheduler.service
    2. Restart the compute services with the following command:

      systemctl restart openstack-nova-compute.service