Passthrough of SR-IOV physical functions (partial)

Registered by Nikola Đipanov

Nova has supported passthrough of PCI devices with it's libvirt driver for a
few releases already, during which time the code has seen some stabilization
and a few minor feature additions.

In the case of SR-IOV enabled cards, it is possible to treat the card either as
a number of virtual devices (called VFs - virtual functions) or as a full
device (PF - physical function).

Nova's current handling exposes only virtual functions as resources that can
be requested by instances - and this is the most common use case by far.
However with the rise of the requirements to virtualize network applications,
it can be necessary to give instances full control over hardware and not just a
single virtual function.

OpenStack is seen as one of the central bits of technology for the NFV
use-cases, and a lot of the work has already gone into making OpenStack and
Nova NFV enabled, so we want to make sure that we close these small remaining

Blueprint information

John Garbutt
Nikola Đipanov
Nikola Đipanov
Series goal:
Accepted for mitaka
Milestone target:
milestone icon mitaka-3
Started by
John Garbutt
Completed by
John Garbutt

Related branches



Gerrit topic:,topic:sriov-physical-function-passthrough,n,z

Addressed by:
    spec document for sriov-physical-function-passthrough blueprint

Addressed by:
    tests: Allow for code block lines to be longer

Gerrit topic:,topic:bp/sriov-physical-function-passthrough,n,z

Addressed by:
    db: adding columns to PciDevice table

Addressed by:
    db: querry to retrieve all pci device by parent address

Addressed by:
    objects: adding a parent_addr field to the PciDevice object

Addressed by:
    pci: filter out any unavailable SRIOV Physical Functions

Addressed by:
    pci: adding support to specify a dev_type in pci requests

Addressed by:
    pci: changing the claiming and allocation logic for PF/VF assignment

Addressed by:
    Make pci_alias parsing logic not assume device_type is set

Addressed by:
    pci: adding support to specify a device_type in pci requests

Gerrit topic:,topic:pf-neutron-port,n,z

Addressed by:
    Add caching of service_min_versions in the conductor

Addressed by:
    objects: update the old location parent_addr only if it has value

Addressed by:
    pci: use context when performing oprations of pci devices


Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.