diff --git a/misc/acrn-config/library/board_cfg_lib.py b/misc/acrn-config/library/board_cfg_lib.py index ddc94b132..7df3e1ce3 100644 --- a/misc/acrn-config/library/board_cfg_lib.py +++ b/misc/acrn-config/library/board_cfg_lib.py @@ -251,13 +251,13 @@ def get_order_type_by_vmid(idx): """ This is get pre launched vm count :param idx: index of vm id - :return: idx and vm type mapping + :return: vm type of index to vmid """ - (err_dic, order_id_dic) = common.get_load_order_by_vmid(SCENARIO_INFO_FILE, VM_COUNT, idx) + (err_dic, order_type) = common.get_load_order_by_vmid(SCENARIO_INFO_FILE, VM_COUNT, idx) if err_dic: ERR_LIST.update(err_dic) - return order_id_dic + return order_type def get_valid_irq(board_info): diff --git a/misc/acrn-config/library/scenario_cfg_lib.py b/misc/acrn-config/library/scenario_cfg_lib.py index c2f66efd7..12742e3d9 100644 --- a/misc/acrn-config/library/scenario_cfg_lib.py +++ b/misc/acrn-config/library/scenario_cfg_lib.py @@ -189,7 +189,6 @@ def get_board_private_info(config_file): dev_private_tags = ['rootfs', 'console'] for tag_str in dev_private_tags: dev_setting = get_sub_leaf_tag(config_file, branch_tag, tag_str) - #dev_info = get_sub_tree_tag(config_file, ) if not dev_setting and tag_str == "console": continue @@ -216,16 +215,6 @@ def get_vm_num(config_file): return common.get_vm_count(config_file) -def get_sub_tree_tag(config_file, tag_str): - """ - This is get tag value by tag_str from config file - :param config_file: it is a file what contains information for script to read from - :param tag_str: it is key of pattern to config file item - :return: value of tag_str item - """ - return common.get_branch_tag_val(config_file, tag_str) - - def get_sub_leaf_tag(config_file, branch_tag, tag_str): """ This is get tag value by tag_str from config file @@ -242,13 +231,13 @@ def get_order_type_by_vmid(idx): Get load order by vm id :param idx: index of vm id - :return: load order type of vm + :return: load order type of index to vmid """ - (err_dic, order_id_dic) = common.get_load_order_by_vmid(SCENARIO_INFO_FILE, VM_COUNT, idx) + (err_dic, order_type) = common.get_load_order_by_vmid(SCENARIO_INFO_FILE, VM_COUNT, idx) if err_dic: ERR_LIST.update(err_dic) - return order_id_dic + return order_type def get_vmid_by_order_type(type_str): @@ -296,12 +285,12 @@ def pre_launch_vm_ids(): def vm_name_check(vm_names, item): """ Check vm name - :param vm_names: list of vm name + :param vm_names: dictionary of vm name :param item: vm name item in xml :return: None """ - for name_i in range(len(vm_names)): - name_len = len(vm_names[name_i]) + for name_i, name_str in vm_names.items(): + name_len = len(name_str) if name_len > 32 or name_len == 0: key = "vm:id={},{}".format(name_i, item) ERR_LIST[key] = "VM name length should be in range [1,32] bytes" @@ -310,12 +299,11 @@ def vm_name_check(vm_names, item): def load_order_check(load_orders, item): """ Check load order type - :param load_orders: list of vm load_order + :param load_orders: dictionary of vm load_order :param item: vm name item in xml :return: None """ - for order_i in range(len(load_orders)): - load_str = load_orders[order_i] + for order_i, load_str in load_orders.items(): if not load_str: key = "vm:id={},{}".format(order_i, item) @@ -347,17 +335,16 @@ def guest_flag_check(guest_flag_idx, branch_tag, leaf_tag): # ERR_LIST[key] = "Invalid guest flag" -def uuid_format_check(uuid_lists, item): +def uuid_format_check(uuid_dic, item): """ Check uuid - :param uuid_lists: list of vm uuid + :param uuid_dic: dictionary of vm uuid :param item: vm uuid item in xml :return: None """ uuid_len = 36 - for uuid_i in range(len(uuid_lists)): - uuid_str = uuid_lists[uuid_i] + for uuid_i, uuid_str in uuid_dic.items(): if not uuid_str: key = "vm:id={},{}".format(uuid_i, item) @@ -374,14 +361,23 @@ def uuid_format_check(uuid_lists, item): ERR_LIST[key] = "VM uuid format unknown" -def cpus_per_vm_check(item): +def get_leaf_tag_map(info_file, prime_item, item): """ - Check cpu of per vm + :param info_file: some configurations in the info file + :param prime_item: the prime item in xml file + :param item: the item in xml file + :return: dictionary which item value could be indexed by vmid + """ + vmid_item_dic = common.get_leaf_tag_map(info_file, prime_item, item) + return vmid_item_dic + + +def cpus_per_vm_check(id_cpus_per_vm_dic, item): + """ + Check cpu number of per vm :param item: vm pcpu_id item in xml :return: None """ - prime_item = "pcpu_ids" - id_cpus_per_vm_dic = common.get_leaf_tag_map(SCENARIO_INFO_FILE, prime_item, item) for id_key in id_cpus_per_vm_dic.keys(): vm_type = get_order_type_by_vmid(id_key) @@ -391,14 +387,12 @@ def cpus_per_vm_check(item): ERR_LIST[key] = "VM have no assignment cpus" -def mem_start_hpa_check(item): +def mem_start_hpa_check(id_start_hpa_dic, item): + """ + Check host physical address + :param item: vm start_hpa item in xml + :return: None """ - Check host physical address - :param item: vm start_hpa item in xml - :return: None - """ - prime_item = "memory" - id_start_hpa_dic = common.get_leaf_tag_map(SCENARIO_INFO_FILE, prime_item, item) for id_key, hpa_str in id_start_hpa_dic.items(): hpa_strip_ul = hpa_str.strip('UL') @@ -415,14 +409,12 @@ def mem_start_hpa_check(item): ERR_LIST[key] = "Address should be Hex format" -def mem_size_check(item): +def mem_size_check(id_hpa_size_dic, item): + """ + Check host physical size + :param item: vm size item in xml + :return: None """ - Check host physical size - :param item: vm size item in xml - :return: None - """ - prime_item = "memory" - id_hpa_size_dic = common.get_leaf_tag_map(SCENARIO_INFO_FILE, prime_item, item) for id_key, hpa_size in id_hpa_size_dic.items(): hpa_sz_strip_ul = hpa_size.strip('UL') @@ -443,14 +435,12 @@ def mem_size_check(item): ERR_LIST[key] = "Mem size should less than 2GB" -def os_kern_name_check(item): +def os_kern_name_check(id_kern_name_dic, item): + """ + Check os kernel name + :param item: vm os config name item in xml + :return: None """ - Check os kernel name - :param item: vm os config name item in xml - :return: None - """ - prime_item = "os_config" - id_kern_name_dic = common.get_leaf_tag_map(SCENARIO_INFO_FILE, prime_item, item) for id_key, kern_name in id_kern_name_dic.items(): if len(kern_name) > 32 or len(kern_name) == 0: @@ -458,14 +448,12 @@ def os_kern_name_check(item): ERR_LIST[key] = "VM os config kernel name length should be in range [1,32] bytes" -def os_kern_type_check(item): +def os_kern_type_check(id_kern_type_dic, item): + """ + Check os kernel type + :param item: vm os config type item in xml + :return: None """ - Check os kernel type - :param item: vm os config type item in xml - :return: None - """ - prime_item = "os_config" - id_kern_type_dic = common.get_leaf_tag_map(SCENARIO_INFO_FILE, prime_item, item) for id_key, kern_type in id_kern_type_dic.items(): @@ -479,14 +467,12 @@ def os_kern_type_check(item): ERR_LIST[key] = "VM os config kernel type unknown" -def os_kern_mod_check(item): +def os_kern_mod_check(id_kern_mod_dic, item): + """ + Check os kernel mod + :param item: vm os config mod item in xml + :return: None """ - Check os kernel mod - :param item: vm os config mod item in xml - :return: None - """ - prime_item = "os_config" - id_kern_mod_dic = common.get_leaf_tag_map(SCENARIO_INFO_FILE, prime_item, item) for id_key, kern_mod in id_kern_mod_dic.items(): if len(kern_mod) > 32 or len(kern_mod) == 0: @@ -494,14 +480,12 @@ def os_kern_mod_check(item): ERR_LIST[key] = "VM os config kernel mod tag should be in range [1,32] bytes" -def os_kern_args_check(item): +def os_kern_args_check(id_kern_args_dic, item): + """ + Check os kernel args + :param item: vm os config args item in xml + :return: None """ - Check os kernel args - :param item: vm os config args item in xml - :return: None - """ - prime_item = "os_config" - id_kern_args_dic = common.get_leaf_tag_map(SCENARIO_INFO_FILE, prime_item, item) for id_key, kern_args in id_kern_args_dic.items(): vm_type = get_order_type_by_vmid(id_key) @@ -511,14 +495,12 @@ def os_kern_args_check(item): ERR_LIST[key] = "VM os config kernel service os should be SOS_VM_BOOTARGS" -def os_kern_console_check(item): +def os_kern_console_check(id_kern_console_dic, item): + """ + Check os kernel console + :param item: vm os config console item in xml + :return: None """ - Check os kernel console - :param item: vm os config console item in xml - :return: None - """ - prime_item = "os_config" - id_kern_console_dic = common.get_leaf_tag_map(SCENARIO_INFO_FILE, prime_item, item) for id_key, kern_console in id_kern_console_dic.items(): if kern_console and "ttyS" not in kern_console: @@ -526,14 +508,12 @@ def os_kern_console_check(item): ERR_LIST[key] = "VM os config kernel console should be ttyS[0..3]" -def os_kern_load_addr_check(item): +def os_kern_load_addr_check(id_kern_load_addr_dic, item): + """ + Check os kernel load address + :param item: vm os config load address item in xml + :return: None """ - Check os kernel load address - :param item: vm os config load address item in xml - :return: None - """ - prime_item = "os_config" - id_kern_load_addr_dic = common.get_leaf_tag_map(SCENARIO_INFO_FILE, prime_item, item) for id_key, kern_load_addr in id_kern_load_addr_dic.items(): @@ -547,14 +527,12 @@ def os_kern_load_addr_check(item): ERR_LIST[key] = "VM os config kernel load address should Hex format" -def os_kern_entry_addr_check(item): +def os_kern_entry_addr_check(id_kern_entry_addr_dic, item): + """ + Check os kernel entry address + :param item: vm os config entry address item in xml + :return: None """ - Check os kernel entry address - :param item: vm os config entry address item in xml - :return: None - """ - prime_item = "os_config" - id_kern_entry_addr_dic = common.get_leaf_tag_map(SCENARIO_INFO_FILE, prime_item, item) for id_key, kern_entry_addr in id_kern_entry_addr_dic.items(): @@ -568,14 +546,12 @@ def os_kern_entry_addr_check(item): ERR_LIST[key] = "VM os config kernel entry address should Hex format" -def os_kern_root_dev_check(item): +def os_kern_root_dev_check(id_kern_rootdev_dic, item): + """ + Check os kernel rootfs partitions + :param item: vm os config rootdev item in xml + :return: None """ - Check os kernel rootfs partitions - :param item: vm os config rootdev item in xml - :return: None - """ - prime_item = "os_config" - id_kern_rootdev_dic = common.get_leaf_tag_map(SCENARIO_INFO_FILE, prime_item, item) for id_key, kern_rootdev in id_kern_rootdev_dic.items(): if not kern_rootdev: @@ -583,13 +559,22 @@ def os_kern_root_dev_check(item): ERR_LIST[key] = "VM os config kernel root device should not empty" -def pci_dev_num_check(item): +def get_branch_tag_map(info_file, item): + """ + :param info_file: some configurations in the info file + :param item: the item in xml file + :return: dictionary which item value could be indexed by vmid + """ + vmid_item_dic = common.get_branch_tag_map(info_file, item) + return vmid_item_dic + + +def pci_dev_num_check(id_dev_num_dic, item): + """ + Check vm pci device number + :param item: vm pci_dev_num item in xml + :return: None """ - Check vm pci device number - :param item: vm pci_dev_num item in xml - :return: None - """ - id_dev_num_dic = common.get_branch_tag_map(SCENARIO_INFO_FILE, item) for id_key, pci_dev_num in id_dev_num_dic.items(): @@ -599,13 +584,12 @@ def pci_dev_num_check(item): key = "vm:id={},{}".format(id_key, item) ERR_LIST[key] = "VM pci device number shoud be one of {}".format(PCI_DEV_NUM_LIST) -def pci_devs_check(item): +def pci_devs_check(id_devs_dic, item): + """ + Check vm pci devices + :param item: vm pci_devs item in xml + :return: None """ - Check vm pci devices - :param item: vm pci_devs item in xml - :return: None - """ - id_devs_dic = common.get_branch_tag_map(SCENARIO_INFO_FILE, item) for id_key, pci_dev in id_devs_dic.items(): @@ -748,40 +732,6 @@ def avl_vuart_ui_select(scenario_info): return tmp_vuart -def vmid_map_epc(config_file, tag, item): - """ - This is mapping table for {id:item} - :param config_file: it is a file what contains information for script to read from - :param item: the item in xml file - :return: table of id:item type dictionary - """ - epc_order = {} - vm_cnt = VM_COUNT - - item_list = common.get_leaf_tag_val(config_file, tag, item) - load_type_list = common.get_branch_tag_val(config_file, "load_order") - - if 'SOS_VM' in load_type_list: - vm_cnt = VM_COUNT - 1 - for i in range(vm_cnt): - epc_order[i] = item_list[i] - - return epc_order - - -def get_epc_base(scenario_info): - - base_dic = {} - base_dic = vmid_map_epc(scenario_info, "epc_section", "base") - return base_dic - - -def get_epc_size(scenario_info): - - size_dic = {} - size_dic = vmid_map_epc(scenario_info, "epc_section", "size") - return size_dic - def get_first_post_vm(): for i in range(VM_COUNT): diff --git a/misc/acrn-config/scenario_config/scenario_item.py b/misc/acrn-config/scenario_config/scenario_item.py index 336cc920a..0452c3ca0 100644 --- a/misc/acrn-config/scenario_config/scenario_item.py +++ b/misc/acrn-config/scenario_config/scenario_item.py @@ -67,15 +67,15 @@ class HwInfo: class CfgOsKern: """ This is Abstract of class of configuration of vm os kernel setting """ - kern_name = [] - kern_type = [] - kern_mod = [] - kern_args = [] - kern_console = [] - kern_load_addr = [] - kern_entry_addr = [] - kern_root_dev = [] - kern_args_append = [] + kern_name = {} + kern_type = {} + kern_mod = {} + kern_args = {} + kern_console = {} + kern_load_addr = {} + kern_entry_addr = {} + kern_root_dev = {} + kern_args_append = {} def __init__(self, scenario_file): self.scenario_info = scenario_file @@ -85,38 +85,37 @@ class CfgOsKern: Get all items which belong to this class :return: None """ - self.kern_name = scenario_cfg_lib.get_sub_leaf_tag(self.scenario_info, "os_config", "name") - self.kern_type = scenario_cfg_lib.get_sub_leaf_tag( + self.kern_name = scenario_cfg_lib.get_leaf_tag_map(self.scenario_info, "os_config", "name") + self.kern_type = scenario_cfg_lib.get_leaf_tag_map( self.scenario_info, "os_config", "kern_type") - self.kern_mod = scenario_cfg_lib.get_sub_leaf_tag( + self.kern_mod = scenario_cfg_lib.get_leaf_tag_map( self.scenario_info, "os_config", "kern_mod") - self.kern_args = scenario_cfg_lib.get_sub_leaf_tag( + self.kern_args = scenario_cfg_lib.get_leaf_tag_map( self.scenario_info, "os_config", "bootargs") - self.kern_console = scenario_cfg_lib.get_sub_leaf_tag( + self.kern_console = scenario_cfg_lib.get_leaf_tag_map( self.scenario_info, "os_config", "console") - self.kern_load_addr = scenario_cfg_lib.get_sub_leaf_tag( + self.kern_load_addr = scenario_cfg_lib.get_leaf_tag_map( self.scenario_info, "os_config", "kern_load_addr") - self.kern_entry_addr = scenario_cfg_lib.get_sub_leaf_tag( + self.kern_entry_addr = scenario_cfg_lib.get_leaf_tag_map( self.scenario_info, "os_config", "kern_entry_addr") - self.kern_root_dev = scenario_cfg_lib.get_sub_leaf_tag( + self.kern_root_dev = scenario_cfg_lib.get_leaf_tag_map( self.scenario_info, "os_config", "rootfs") - self.kern_args_append = scenario_cfg_lib.get_sub_leaf_tag( + self.kern_args_append = scenario_cfg_lib.get_leaf_tag_map( self.scenario_info, "boot_private", "bootargs") - @staticmethod - def check_item(): + def check_item(self): """ Check all items in this class :return: None """ - scenario_cfg_lib.os_kern_name_check("name") - scenario_cfg_lib.os_kern_type_check("kern_type") - scenario_cfg_lib.os_kern_mod_check("kern_mod") - scenario_cfg_lib.os_kern_args_check("kern_args") - scenario_cfg_lib.os_kern_console_check("console") - scenario_cfg_lib.os_kern_load_addr_check("kern_load_addr") - scenario_cfg_lib.os_kern_entry_addr_check("kern_entry_addr") - scenario_cfg_lib.os_kern_root_dev_check("rootdev") + scenario_cfg_lib.os_kern_name_check(self.kern_name, "name") + scenario_cfg_lib.os_kern_type_check(self.kern_type, "kern_type") + scenario_cfg_lib.os_kern_mod_check(self.kern_mod, "kern_mod") + scenario_cfg_lib.os_kern_args_check(self.kern_args, "kern_args") + scenario_cfg_lib.os_kern_console_check(self.kern_console, "console") + scenario_cfg_lib.os_kern_load_addr_check(self.kern_load_addr, "kern_load_addr") + scenario_cfg_lib.os_kern_entry_addr_check(self.kern_entry_addr, "kern_entry_addr") + scenario_cfg_lib.os_kern_root_dev_check(self.kern_root_dev, "rootdev") class VuartTarget: @@ -175,8 +174,8 @@ class VuartInfo: class MemInfo: """ This is Abstract of class of memory setting information """ - mem_start_hpa = [] - mem_size = [] + mem_start_hpa = {} + mem_size = {} def __init__(self, scenario_file): self.scenario_info = scenario_file @@ -186,25 +185,24 @@ class MemInfo: Get all items which belong to this class :return: None """ - self.mem_start_hpa = scenario_cfg_lib.get_sub_leaf_tag( + self.mem_start_hpa = scenario_cfg_lib.get_leaf_tag_map( self.scenario_info, "memory", "start_hpa") - self.mem_size = scenario_cfg_lib.get_sub_leaf_tag( + self.mem_size = scenario_cfg_lib.get_leaf_tag_map( self.scenario_info, "memory", "size") - @staticmethod - def check_item(): + def check_item(self): """ Check all items in this class :return: None """ - scenario_cfg_lib.mem_start_hpa_check("start_hpa") - scenario_cfg_lib.mem_size_check("size") + scenario_cfg_lib.mem_start_hpa_check(self.mem_start_hpa, "start_hpa") + scenario_cfg_lib.mem_size_check(self.mem_size, "size") class CfgPci: """ This is Abstract of class of PCi devices setting information """ - pci_dev_num = [] - pci_devs = [] + pci_dev_num = {} + pci_devs = {} def __init__(self, scenario_file): self.scenario_info = scenario_file @@ -214,14 +212,14 @@ class CfgPci: Get pci device number items :return: None """ - self.pci_dev_num = scenario_cfg_lib.get_sub_tree_tag(self.scenario_info, "pci_dev_num") + self.pci_dev_num = scenario_cfg_lib.get_branch_tag_map(self.scenario_info, "pci_dev_num") def get_pci_devs(self): """ Get pci devices items :return: None """ - self.pci_devs = scenario_cfg_lib.get_sub_tree_tag(self.scenario_info, "pci_devs") + self.pci_devs = scenario_cfg_lib.get_branch_tag_map(self.scenario_info, "pci_devs") def get_info(self): """ @@ -231,13 +229,12 @@ class CfgPci: self.get_pci_dev_num() self.get_pci_devs() - @staticmethod - def check_item(): + def check_item(self): """ Check all items in this class :return: None """ - scenario_cfg_lib.pci_dev_num_check("pci_dev_num") - scenario_cfg_lib.pci_devs_check("pci_devs") + scenario_cfg_lib.pci_dev_num_check(self.pci_dev_num, "pci_dev_num") + scenario_cfg_lib.pci_devs_check(self.pci_devs, "pci_devs") class EpcSection: @@ -248,18 +245,18 @@ class EpcSection: self.scenario_info = scenario_info def get_info(self): - self.base = scenario_cfg_lib.get_epc_base(self.scenario_info) - self.size = scenario_cfg_lib.get_epc_size(self.scenario_info) + self.base = scenario_cfg_lib.get_leaf_tag_map(self.scenario_info, "epc_section", "base") + self.size = scenario_cfg_lib.get_leaf_tag_map(self.scenario_info, "epc_section", "size") class VmInfo: """ This is Abstract of class of VM setting """ - name = [] - load_order = [] - uuid = [] - clos_set = [] - guest_flag_idx = [] - cpus_per_vm = [] + name = {} + load_order = {} + uuid = {} + clos_set = {} + guest_flag_idx = {} + cpus_per_vm = {} def __init__(self, board_file, scenario_file): self.board_info = board_file @@ -277,14 +274,14 @@ class VmInfo: Get all items which belong to this class :return: None """ - self.name = scenario_cfg_lib.get_sub_tree_tag(self.scenario_info, "name") - self.load_order = scenario_cfg_lib.get_sub_tree_tag(self.scenario_info, "load_order") - self.uuid = scenario_cfg_lib.get_sub_tree_tag(self.scenario_info, "uuid") + self.name = scenario_cfg_lib.get_branch_tag_map(self.scenario_info, "name") + self.load_order = scenario_cfg_lib.get_branch_tag_map(self.scenario_info, "load_order") + self.uuid = scenario_cfg_lib.get_branch_tag_map(self.scenario_info, "uuid") self.guest_flag_idx = scenario_cfg_lib.get_sub_leaf_tag( self.scenario_info, "guest_flags", "guest_flag") - self.cpus_per_vm = scenario_cfg_lib.get_sub_leaf_tag( + self.cpus_per_vm = scenario_cfg_lib.get_leaf_tag_map( self.scenario_info, "pcpu_ids", "pcpu_id") - self.clos_set = scenario_cfg_lib.get_sub_tree_tag(self.scenario_info, "clos") + self.clos_set = scenario_cfg_lib.get_branch_tag_map(self.scenario_info, "clos") self.epc_section.get_info() self.mem_info.get_info() self.os_cfg.get_info() @@ -307,7 +304,7 @@ class VmInfo: scenario_cfg_lib.load_order_check(self.load_order, "load_order") scenario_cfg_lib.uuid_format_check(self.uuid, "uuid") scenario_cfg_lib.guest_flag_check(self.guest_flag_idx, "guest_flags", "guest_flag") - scenario_cfg_lib.cpus_per_vm_check("pcpu_id") + scenario_cfg_lib.cpus_per_vm_check(self.cpus_per_vm, "pcpu_id") self.mem_info.check_item() self.os_cfg.check_item() diff --git a/misc/acrn-config/scenario_config/vm_configurations_c.py b/misc/acrn-config/scenario_config/vm_configurations_c.py index dca2dc30c..30075b64a 100644 --- a/misc/acrn-config/scenario_config/vm_configurations_c.py +++ b/misc/acrn-config/scenario_config/vm_configurations_c.py @@ -124,23 +124,28 @@ def vuart_output(i, vm_info, config): print("\t\t},", file=config) # pci_dev_num/pci_devs only for SOS_VM or logical_partition pre_launched_vm - if vm_type == "SOS_VM": - print("\t\t.pci_dev_num = {},".format(vm_info.cfg_pci.pci_dev_num[0]), file=config) - print("\t\t.pci_devs = {},".format(vm_info.cfg_pci.pci_devs[0]), file=config) + if vm_type == "SOS_VM" or vm_type == "PRE_LAUNCHED_VM": + if vm_info.cfg_pci.pci_dev_num[i] and vm_info.cfg_pci.pci_dev_num[i] != None: + print("\t\t.pci_dev_num = {},".format(vm_info.cfg_pci.pci_dev_num[i]), file=config) + if vm_info.cfg_pci.pci_devs[i] and vm_info.cfg_pci.pci_devs[i] != None: + print("\t\t.pci_devs = {},".format(vm_info.cfg_pci.pci_devs[i]), file=config) - (err_dic, scenario_name) = scenario_cfg_lib.get_scenario_name() - if err_dic: - return err_dic - - if scenario_name == "logical_partition": - print("\t\t.pci_dev_num = VM{}_CONFIG_PCI_DEV_NUM,".format(i), file=config) - print("\t\t.pci_devs = vm{}_pci_devs,".format(i), file=config) print("\t},", file=config) - return err_dic - def is_need_epc(epc_section, i, config): + """ + Check if it is need epc section + :param epc_section: struct epc_scectoin conatins base/size + :param i: the index of vm id + :param config: it is file pointer to store the information + :return: None + """ + # SOS_VM have not set epc section + vm_type = scenario_cfg_lib.get_order_type_by_vmid(i) + if vm_type == "SOS_VM": + return + if epc_section.base[i] == '0' and epc_section.size[i] == '0': return else: @@ -149,6 +154,7 @@ def is_need_epc(epc_section, i, config): print('\t\t\t.size = {0},'.format(epc_section.size), file=config) print("\t\t},", file=config) + def get_guest_flag(flag_index): """ This is get flag index list @@ -242,7 +248,7 @@ def gen_sdc_source(vm_info, config): print("\t\t.load_order = {0},".format(vm_info.load_order[1]), file=config) # UUID uuid_output(uuid_1, vm_info.uuid[1], config) - is_need_epc(vm_info.epc_section, 0, config) + is_need_epc(vm_info.epc_section, 1, config) # VUART err_dic = vuart_output(1, vm_info, config) if err_dic: @@ -252,7 +258,7 @@ def gen_sdc_source(vm_info, config): print("\t{", file=config) print("\t\t.load_order = POST_LAUNCHED_VM,", file=config) uuid_output(uuid_2, vm_info.uuid[2], config) - is_need_epc(vm_info.epc_section, 1, config) + is_need_epc(vm_info.epc_section, 2, config) print("\t\t.vuart[0] = {", file=config) print("\t\t\t.type = VUART_LEGACY_PIO,", file=config) print("\t\t\t.addr.port_base = INVALID_COM_BASE,", file=config) @@ -323,7 +329,7 @@ def gen_sdc2_source(vm_info, config): print("\t\t.load_order = {0},".format(vm_info.load_order[1]), file=config) # UUID uuid_output(uuid_1, vm_info.uuid[1], config) - is_need_epc(vm_info.epc_section, 0, config) + is_need_epc(vm_info.epc_section, 1, config) # VUART err_dic = vuart_output(1, vm_info, config) if err_dic: @@ -334,7 +340,7 @@ def gen_sdc2_source(vm_info, config): print("\t\t.load_order = {0},".format(vm_info.load_order[1]), file=config) # UUID uuid_output(uuid_2, vm_info.uuid[2], config) - is_need_epc(vm_info.epc_section, 1, config) + is_need_epc(vm_info.epc_section, 2, config) # VUART err_dic = vuart_output(1, vm_info, config) if err_dic: @@ -345,7 +351,7 @@ def gen_sdc2_source(vm_info, config): print("\t{", file=config) print("\t\t.load_order = POST_LAUNCHED_VM,", file=config) uuid_output(uuid_3, vm_info.uuid[3], config) - is_need_epc(vm_info.epc_section, 2, config) + is_need_epc(vm_info.epc_section, 3, config) print("\t\t.vuart[0] = {", file=config) print("\t\t\t.type = VUART_LEGACY_PIO,", file=config) print("\t\t\t.addr.port_base = INVALID_COM_BASE,", file=config) @@ -466,8 +472,7 @@ def gen_industry_source(vm_info, config): # UUID uuid_output(uuid, vm_info.uuid[i], config) - if i != 0: - is_need_epc(vm_info.epc_section, i - 1, config) + is_need_epc(vm_info.epc_section, i, config) if i == 0: (err_dic, sos_guest_flags) = get_guest_flag(vm_info.guest_flag_idx[i]) @@ -553,10 +558,7 @@ def gen_hybrid_source(vm_info, config): print("\t\t\t.start_hpa = 0UL,", file=config) print("\t\t\t.size = CONFIG_SOS_RAM_SIZE,", file=config) print("\t\t},", file=config) - if i == 0: - is_need_epc(vm_info.epc_section, i, config) - elif i == scenario_cfg_lib.VM_COUNT: - is_need_epc(vm_info.epc_section, i - 1, config) + is_need_epc(vm_info.epc_section, i, config) print("\t\t.os_config = {", file=config) print('\t\t\t.name = "{0}",'.format(vm_info.os_cfg.kern_name[i]), file=config) print('\t\t\t.kernel_type = {0},'.format( diff --git a/misc/acrn-config/xmls/config-xmls/apl-mrb/hybrid.xml b/misc/acrn-config/xmls/config-xmls/apl-mrb/hybrid.xml index 662dbe603..f5aa9af5c 100644 --- a/misc/acrn-config/xmls/config-xmls/apl-mrb/hybrid.xml +++ b/misc/acrn-config/xmls/config-xmls/apl-mrb/hybrid.xml @@ -38,6 +38,8 @@ 1 1 + + SOS_VM diff --git a/misc/acrn-config/xmls/config-xmls/apl-up2/hybrid.xml b/misc/acrn-config/xmls/config-xmls/apl-up2/hybrid.xml index 4e5483125..5a9f7db9a 100644 --- a/misc/acrn-config/xmls/config-xmls/apl-up2/hybrid.xml +++ b/misc/acrn-config/xmls/config-xmls/apl-up2/hybrid.xml @@ -38,6 +38,8 @@ 1 1 + + SOS_VM diff --git a/misc/acrn-config/xmls/config-xmls/generic/hybrid.xml b/misc/acrn-config/xmls/config-xmls/generic/hybrid.xml index a7ab7c922..f679a49ca 100644 --- a/misc/acrn-config/xmls/config-xmls/generic/hybrid.xml +++ b/misc/acrn-config/xmls/config-xmls/generic/hybrid.xml @@ -38,6 +38,8 @@ 1 1 + + SOS_VM diff --git a/misc/acrn-config/xmls/config-xmls/nuc6cayh/hybrid.xml b/misc/acrn-config/xmls/config-xmls/nuc6cayh/hybrid.xml index c3bdd1d8a..ddf5ad5e4 100644 --- a/misc/acrn-config/xmls/config-xmls/nuc6cayh/hybrid.xml +++ b/misc/acrn-config/xmls/config-xmls/nuc6cayh/hybrid.xml @@ -38,6 +38,8 @@ 1 1 + + SOS_VM diff --git a/misc/acrn-config/xmls/config-xmls/nuc7i7dnb/hybrid.xml b/misc/acrn-config/xmls/config-xmls/nuc7i7dnb/hybrid.xml index 9da530acd..3c66e290d 100644 --- a/misc/acrn-config/xmls/config-xmls/nuc7i7dnb/hybrid.xml +++ b/misc/acrn-config/xmls/config-xmls/nuc7i7dnb/hybrid.xml @@ -38,6 +38,8 @@ 1 1 + + SOS_VM