mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-06-19 20:22:46 +00:00
acrn-config: add functions to get pci vuarts information from xml
Add functions to get pci vuarts information and vuarts conunt per vm Tracked-On: #5425 Signed-off-by: Yang, Yu-chu <yu-chu.yang@intel.com>
This commit is contained in:
parent
98f922e6a9
commit
53c488844f
@ -130,6 +130,37 @@ def get_shmem_num(shmem_regions):
|
||||
return shmem_num
|
||||
|
||||
|
||||
def get_vuart_num(vuarts):
|
||||
|
||||
vuarts_num = {}
|
||||
# get legacy vuart information
|
||||
vuart0_setting = common.get_vuart_info_id(common.SCENARIO_INFO_FILE, 0)
|
||||
vuart1_setting = common.get_vuart_info_id(common.SCENARIO_INFO_FILE, 1)
|
||||
for vm_i,vuart_list in vuarts.items():
|
||||
vuarts_num[vm_i] = 0
|
||||
for vuart_id in vuart_list:
|
||||
if vuarts[vm_i][vuart_id]['base'] != "INVALID_PCI_BASE":
|
||||
vuarts_num[vm_i] += 1
|
||||
|
||||
for vm_i in vuart0_setting:
|
||||
vm_type = common.VM_TYPES[vm_i]
|
||||
# Skip post-launched vm's pci base vuart0
|
||||
if "POST_LAUNCHED_VM" == VM_DB[vm_type]['load_type'] and 0 in vuarts[vm_i].keys() \
|
||||
and vuarts[vm_i][0]['base'] != "INVALID_PCI_BASE":
|
||||
vuarts_num[vm_i] -= 1
|
||||
continue
|
||||
# Skip pci vuart 0 if the legacy vuart 0 is enabled
|
||||
if vuart0_setting[vm_i]['base'] != "INVALID_COM_BASE" and 0 in vuarts[vm_i].keys() \
|
||||
and vuarts[vm_i][0]['base'] != "INVALID_PCI_BASE":
|
||||
vuarts_num[vm_i] -= 1
|
||||
for vm_i in vuart1_setting:
|
||||
# Skip pci vuart 1 if the legacy vuart 1 is enabled
|
||||
if vuart1_setting[vm_i]['base'] != "INVALID_COM_BASE" and 1 in vuarts[vm_i].keys() \
|
||||
and vuarts[vm_i][1]['base'] != "INVALID_PCI_BASE":
|
||||
vuarts_num[vm_i] -= 1
|
||||
return vuarts_num
|
||||
|
||||
|
||||
def get_pci_dev_num_per_vm():
|
||||
pci_dev_num_per_vm = {}
|
||||
|
||||
@ -146,12 +177,16 @@ def get_pci_dev_num_per_vm():
|
||||
shmem_regions = get_shmem_regions(ivshmem_region)
|
||||
shmem_num = get_shmem_num(shmem_regions)
|
||||
|
||||
vuarts = common.get_vuart_info(common.SCENARIO_INFO_FILE)
|
||||
vuarts_num = get_vuart_num(vuarts)
|
||||
|
||||
for vm_i,vm_type in common.VM_TYPES.items():
|
||||
if "POST_LAUNCHED_VM" == VM_DB[vm_type]['load_type']:
|
||||
shmem_num_i = 0
|
||||
vuart_num = vuarts_num[vm_i]
|
||||
if shmem_enabled == 'y' and vm_i in shmem_num.keys():
|
||||
shmem_num_i = shmem_num[vm_i]
|
||||
pci_dev_num_per_vm[vm_i] = shmem_num_i
|
||||
pci_dev_num_per_vm[vm_i] = shmem_num_i + vuart_num
|
||||
elif "PRE_LAUNCHED_VM" == VM_DB[vm_type]['load_type']:
|
||||
shmem_num_i = 0
|
||||
if shmem_enabled == 'y' and vm_i in shmem_num.keys():
|
||||
@ -160,12 +195,12 @@ def get_pci_dev_num_per_vm():
|
||||
# there is only vhostbridge but no passthrough device
|
||||
# remove the count of vhostbridge, check get_pci_num definition
|
||||
pci_dev_num[vm_i] -= 1
|
||||
pci_dev_num_per_vm[vm_i] = pci_dev_num[vm_i] + shmem_num_i
|
||||
pci_dev_num_per_vm[vm_i] = pci_dev_num[vm_i] + shmem_num_i+ vuarts_num[vm_i]
|
||||
elif "SOS_VM" == VM_DB[vm_type]['load_type']:
|
||||
shmem_num_i = 0
|
||||
if shmem_enabled == 'y' and vm_i in shmem_num.keys():
|
||||
shmem_num_i = shmem_num[vm_i]
|
||||
pci_dev_num_per_vm[vm_i] = shmem_num_i
|
||||
pci_dev_num_per_vm[vm_i] = shmem_num_i + vuarts_num[vm_i]
|
||||
|
||||
return pci_dev_num_per_vm
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user