Generated passthrough_whitelist shall use all the user_configs fields

Earlier, the derived pci passthrough whitelist includes the address,
vendor and product details only. This is not sufficient for nova to
allocate the VFs to the guests. Now, all the fields of the user_config
shall be used in the derived passthrough_whitelist. Only either of 'address'
or 'devname' shall be provided in passthrough_whitelist, and since the
'address' fields are must have to specify the induvidual VF's, the
'devname' is removed if present.

Change-Id: I5a337a67893241e1443ca2c3721f4c9dd78b95c8
(cherry picked from commit d5820dba4a)
This commit is contained in:
Karthik S 2020-07-21 14:01:50 +00:00
parent 65189def79
commit 3d6de04e3a
1 changed files with 6 additions and 5 deletions

View File

@ -122,7 +122,7 @@ def get_pci_passthrough_whitelist(user_config, pf, pci_addresses,
pci_passthrough_list = [] pci_passthrough_list = []
for pci in pci_addresses: for pci in pci_addresses:
pci_passthrough = {} pci_passthrough = dict(user_config)
address = {} address = {}
pci_params = re.split('[:.]+', pci) pci_params = re.split('[:.]+', pci)
address['domain'] = '.*' address['domain'] = '.*'
@ -130,10 +130,11 @@ def get_pci_passthrough_whitelist(user_config, pf, pci_addresses,
address['slot'] = pci_params[2] address['slot'] = pci_params[2]
address['function'] = pci_params[3] address['function'] = pci_params[3]
pci_passthrough['address'] = address pci_passthrough['address'] = address
pci_passthrough['vendor_id'] = device_info[pf][0]
pci_passthrough['product_id'] = device_info[pf][1] # devname and address fields can't co exist
if 'trusted' in user_config: if 'devname' in pci_passthrough:
pci_passthrough['trusted'] = user_config['trusted'] del pci_passthrough['devname']
pci_passthrough_list.append(pci_passthrough) pci_passthrough_list.append(pci_passthrough)
return pci_passthrough_list return pci_passthrough_list