From 7ae785a45283ca16025be10d38974de72a4b21e2 Mon Sep 17 00:00:00 2001 From: Chenli Wei Date: Tue, 27 Sep 2022 00:41:35 +0800 Subject: [PATCH] misc: refine the allocate logic of offline tool The current code use VM number to calculate HV_RAM_SIZE, this is not match the HV logic. This patch use the max number of trusty VMs to calculate the size of sworld memory and assume 4M ram / VM to calculate the final ACRN ram size. Tracked-On: #6690 Signed-off-by: Chenli Wei Reviewed-by: Junjie Mao --- misc/config_tools/library/common.py | 3 ++- misc/config_tools/schema/config.xsd | 6 +++--- misc/config_tools/static_allocators/hv_ram.py | 8 +++----- misc/config_tools/xforms/vm_configurations.h.xsl | 1 + 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/misc/config_tools/library/common.py b/misc/config_tools/library/common.py index 9c9d9c62e..db414e56c 100644 --- a/misc/config_tools/library/common.py +++ b/misc/config_tools/library/common.py @@ -45,7 +45,8 @@ MAX_VM_NUM = 16 MAX_VUART_NUM = 8 HV_BASE_RAM_SIZE = 0x1400000 -VM_RAM_SIZE = 0x2800000 +VM_RAM_SIZE = 0x400000 +TRUSTY_RAM_SIZE = 0x1000000 class MultiItem(): diff --git a/misc/config_tools/schema/config.xsd b/misc/config_tools/schema/config.xsd index 09c779899..d8a550ec6 100644 --- a/misc/config_tools/schema/config.xsd +++ b/misc/config_tools/schema/config.xsd @@ -412,9 +412,9 @@ These settings can only be changed at build time. - - - Specify secure world support for trusty OS. + + + Enable secure world for this VM to provide an isolated execution environment which is suitable for running Trusted Execution Environment (TEE) such as Trusty. This is typically enabled when the VM is designed to run Android OS, and disabled otherwise. diff --git a/misc/config_tools/static_allocators/hv_ram.py b/misc/config_tools/static_allocators/hv_ram.py index eed41e472..e35c07bc8 100644 --- a/misc/config_tools/static_allocators/hv_ram.py +++ b/misc/config_tools/static_allocators/hv_ram.py @@ -17,11 +17,9 @@ def fn(board_etree, scenario_etree, allocation_etree): # this dictonary mapped with 'address start':'mem range' ram_range = {} - vm_num = 0 - vm_list = scenario_etree.xpath("//vm") - if vm_list is not None: - vm_num = len(vm_list) - hv_ram_size = common.HV_BASE_RAM_SIZE + common.VM_RAM_SIZE * vm_num + max_vm_num = int(common.get_node(f"//hv/CAPACITIES/MAX_VM_NUM/text()", scenario_etree)) + max_trusty_vm = len(scenario_etree.xpath(f"//vm[./secure_world_support/text() = 'y']")) + hv_ram_size = common.HV_BASE_RAM_SIZE + common.VM_RAM_SIZE * max_vm_num + max_trusty_vm * common.TRUSTY_RAM_SIZE ivshmem_list = scenario_etree.xpath("//IVSHMEM_SIZE/text()") total_shm_size = 0 for ram_size in ivshmem_list: diff --git a/misc/config_tools/xforms/vm_configurations.h.xsl b/misc/config_tools/xforms/vm_configurations.h.xsl index 98973187a..43bc18ca9 100644 --- a/misc/config_tools/xforms/vm_configurations.h.xsl +++ b/misc/config_tools/xforms/vm_configurations.h.xsl @@ -57,6 +57,7 @@ +