Bug 1033268

Summary: [RFE][nova]: PCI passthrough the next step: extra info and SRIOV
Product: Red Hat OpenStack Reporter: Stephen Gordon <sgordon>
Component: openstack-novaAssignee: Brent Eagles <beagles>
Status: CLOSED UPSTREAM QA Contact: Ami Jeain <ajeain>
Severity: unspecified Docs Contact:
Priority: high    
Version: unspecifiedCC: markmc, ndipanov, yeylon
Target Milestone: ---Keywords: FutureFeature, Triaged
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
URL: https://blueprints.launchpad.net/nova/+spec/pci-extra-info
Whiteboard: upstream_milestone_none upstream_status_unknown upstream_definition_review
Fixed In Version: Doc Type: Enhancement
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-06-04 06:24:42 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Stephen Gordon 2013-11-21 19:30:38 UTC
Cloned from launchpad blueprint https://blueprints.launchpad.net/nova/+spec/pci-extra-info.

Description:

PCI devices has not only PCI standard property like BDF, vendor_id etc, it also has some extra information which may be application specific. For example, attached network switch for NIC, or resolution for GPU etc.

These information can't be achieved through hypervisor, and may be provided externally through like configuration file.

Currently nova PCI support has basic support for such extra information in database and object layer. But we need more effort to it, including: get such information from configuration file, provide API to access them easily,  group devices with same extra information value etc.

and pci passthough need full testing in path gating.

== Detailed Design and discuss==
1.extra info uniform
   problem: pci extra info store failed cause new code does not accept unknow type value.
   reason:  1) pci unit code coverage is insufficent
                2) no gating test in  temptest or somewhere else.
                3) physical address in extra info is a list not string.
                4) new code then does not take the pci extra info as a sample.

   solution:
               change all extra info (k,v) as Dictfostring, insert code into object mode deal with difrent version. NO DB change and upgrade.
            
linked bug Bug #1240383: pci passthrough: unicode object support does not work with the unkown fileds

2.alias/whitelist extra info support for SRIOV
   SRIOV need group the device in some way, then nutron can use the group to meet requements of physical network reachability.
    https://wiki.openstack.org/wiki/PCI_passthrough_SRIOV_support

3.device allocation tracking for SRIOV
   nutron SRIOV support need know which device allocaed to a specific NIC, then do futher configration.
    https://wiki.openstack.org/wiki/PCI_passthrough_SRIOV_support

4. white list and it's API
    also in the same link: 
    https://wiki.openstack.org/wiki/PCI_passthrough_SRIOV_support


4.avoid update the database every minute:
   same pci device infomation updte should not push to DB, there need some enhancement about objects don't touch the what_changed fields when store same value as old to a key.

Specification URL (additional information):

None