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 <chenli.wei@intel.com>
Reviewed-by: Junjie Mao <junjie.mao@intel.com>
This commit is contained in:
Chenli Wei 2022-09-27 00:41:35 +08:00 committed by acrnsi-robot
parent 4b6c782726
commit 7ae785a452
4 changed files with 9 additions and 9 deletions

View File

@ -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():

View File

@ -412,9 +412,9 @@ These settings can only be changed at build time.</xs:documentation>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="secure_world_support" type="Boolean" default="n" minOccurs="0">
<xs:annotation acrn:views="">
<xs:documentation>Specify secure world support for trusty OS.</xs:documentation>
<xs:element name="secure_world_support" type="Boolean" default="n">
<xs:annotation acrn:title="Enable secure world for running Trusty" acrn:views="advanced" acrn:applicable-vms="post-launched">
<xs:documentation>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.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="hide_mtrr_support" type="Boolean" default="n" minOccurs="0">

View File

@ -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:

View File

@ -57,6 +57,7 @@
<xsl:value-of select="acrn:define('PRE_VM_NUM', count(vm[acrn:is-pre-launched-vm(load_order)]), 'U')" />
<xsl:value-of select="acrn:define('SERVICE_VM_NUM', count(vm[acrn:is-service-vm(load_order)]), 'U')" />
<xsl:value-of select="acrn:define('MAX_POST_VM_NUM', hv/CAPACITIES/MAX_VM_NUM - count(vm[acrn:is-pre-launched-vm(load_order)]) - count(vm[acrn:is-service-vm(load_order)]) , 'U')" />
<xsl:value-of select="acrn:define('MAX_TRUSTY_VM_NUM', count(vm[./secure_world_support/text() = 'y']) , 'U')" />
<xsl:value-of select="acrn:define('CONFIG_MAX_VM_NUM', hv/CAPACITIES/MAX_VM_NUM , 'U')" />
</xsl:template>