diff --git a/misc/config_tools/static_allocators/lib/lib.py b/misc/config_tools/static_allocators/lib/lib.py index af0789df3..8cbf03765 100644 --- a/misc/config_tools/static_allocators/lib/lib.py +++ b/misc/config_tools/static_allocators/lib/lib.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 # -# Copyright (C) 2021 Intel Corporation. All rights reserved. +# Copyright (C) 2021 Intel Corporation. # # SPDX-License-Identifier: BSD-3-Clause # @@ -8,7 +8,11 @@ import sys, os sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'library')) -import common, board_cfg_lib, scenario_cfg_lib +import common, board_cfg_lib + +PRE_LAUNCHED_VMS_TYPE = ["SAFETY_VM", "PRE_RT_VM", "PRE_STD_VM"] +POST_LAUNCHED_VMS_TYPE = ["POST_STD_VM", "POST_RT_VM", "KATA_VM"] +SOS_VM_TYPE = ["SOS_VM"] def parse_hv_console(scenario_etree): """ @@ -46,4 +50,42 @@ def get_native_ttys(): tmp_dic['base'] = ttys_base tmp_dic['irq'] = int(ttys_irq) native_ttys[tty] = tmp_dic - return native_ttys \ No newline at end of file + return native_ttys + +def get_shmem_regions(etree): + ivshmem_enabled = common.get_node("//IVSHMEM_ENABLED/text()", etree) + if ivshmem_enabled == 'n': + return {} + + # format is shm_name, shm_size, VM IDs + # example: hv:/shm_region_0, 2, 0:2 + ivshmem_regions = etree.xpath("//IVSHMEM_REGION") + shmem_regions = {} + for idx in range(len(ivshmem_regions)): + shm_string = ivshmem_regions[idx].text + if shm_string is None: + continue + shm_string_list = shm_string.split(',') + shm_name = shm_string_list[0].strip() + shm_size = shm_string_list[1].strip() + vmid_list = [vm_id.strip() for vm_id in shm_string_list[2].split(':')] + for vm_id in vmid_list: + if vm_id not in shmem_regions: + shmem_regions[vm_id] = {} + shmem_regions[vm_id][shm_name] = {'id' : str(idx), 'size' : shm_size} + return shmem_regions + +def is_pre_launched_vm(vm_type): + if vm_type in PRE_LAUNCHED_VMS_TYPE: + return True + return False + +def is_post_launched_vm(vm_type): + if vm_type in POST_LAUNCHED_VMS_TYPE: + return True + return False + +def is_sos_vm(vm_type): + if vm_type in SOS_VM_TYPE: + return True + return False \ No newline at end of file