From 91f52b3b6201a446586f9ab694038a3be371cb60 Mon Sep 17 00:00:00 2001 From: Ziheng Li Date: Thu, 9 Jun 2022 20:33:32 +0800 Subject: [PATCH] config-tools:refine memory allocation for vm 1.The memory allocation effect is tested under XML files on multiple platforms. 2.Modified the conversion of memory units during memory reading and processing (MB to Byte). Tracked-On: #7730 Signed-off-by: Ziheng Li --- .../static_allocators/memory_allocator.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/misc/config_tools/static_allocators/memory_allocator.py b/misc/config_tools/static_allocators/memory_allocator.py index 79599832f..fd8e0cf88 100644 --- a/misc/config_tools/static_allocators/memory_allocator.py +++ b/misc/config_tools/static_allocators/memory_allocator.py @@ -36,16 +36,18 @@ def get_memory_info(vm_node_info): size_hpa = [] hpa_info = {} - whole_node_list = vm_node_info.xpath("./memory/size") - if len(whole_node_list) != 0: - hpa_info[0] = int(whole_node_list[0].text, 16) + size_node = common.get_node("./memory/size", vm_node_info) + if size_node is not None: + size_byte = int(size_node.text) * 0x100000 + hpa_info[0] = size_byte hpa_node_list = check_hpa(vm_node_info) if len(hpa_node_list) != 0: for hpa_node in hpa_node_list: if hpa_node.tag == "start_hpa": start_hpa.append(int(hpa_node.text, 16)) elif hpa_node.tag == "size_hpa": - size_hpa.append(int(hpa_node.text)) + size_byte = int(hpa_node.text) * 0x100000 + size_hpa.append(size_byte) if len(start_hpa) != 0 and len(start_hpa) == len(start_hpa): for i in range(len(start_hpa)): hpa_info[start_hpa[i]] = size_hpa[i] @@ -58,7 +60,7 @@ def alloc_memory(scenario_etree, ram_range_info): vm_node_index_list = [] dic_key = sorted(ram_range_info) for key in dic_key: - if key <= 0x100000000: + if key < 0x100000000: ram_range_info.pop(key) for vm_node in vm_node_list: @@ -72,9 +74,9 @@ def alloc_memory(scenario_etree, ram_range_info): return ram_range_info, mem_info_list, vm_node_index_list def alloc_hpa_region(ram_range_info, mem_info_list, vm_node_index_list): - mem_key = sorted(ram_range_info) for vm_index in range(len(vm_node_index_list)): hpa_key = sorted(mem_info_list[vm_index]) + mem_key = sorted(ram_range_info) for mem_start in mem_key: mem_size = ram_range_info[mem_start] for hpa_start in hpa_key: @@ -143,7 +145,7 @@ def write_hpa_info(allocation_etree, mem_info_list, vm_node_index_list): size_hpa_node = common.get_node("./size_hpa", hpa_region_node) if size_hpa_node is None: - common.append_node("./size_hpa", hex(hpa_info[start_hpa] * 0x100000), hpa_region_node) + common.append_node("./size_hpa", hex(hpa_info[start_hpa]), hpa_region_node) region_index = region_index + 1 def alloc_vm_memory(board_etree, scenario_etree, allocation_etree):