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 MAX_VUART_NUM = 8
HV_BASE_RAM_SIZE = 0x1400000 HV_BASE_RAM_SIZE = 0x1400000
VM_RAM_SIZE = 0x2800000 VM_RAM_SIZE = 0x400000
TRUSTY_RAM_SIZE = 0x1000000
class MultiItem(): class MultiItem():

View File

@ -412,9 +412,9 @@ These settings can only be changed at build time.</xs:documentation>
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
</xs:element> </xs:element>
<xs:element name="secure_world_support" type="Boolean" default="n" minOccurs="0"> <xs:element name="secure_world_support" type="Boolean" default="n">
<xs:annotation acrn:views=""> <xs:annotation acrn:title="Enable secure world for running Trusty" acrn:views="advanced" acrn:applicable-vms="post-launched">
<xs:documentation>Specify secure world support for trusty OS.</xs:documentation> <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:annotation>
</xs:element> </xs:element>
<xs:element name="hide_mtrr_support" type="Boolean" default="n" minOccurs="0"> <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' # this dictonary mapped with 'address start':'mem range'
ram_range = {} ram_range = {}
vm_num = 0 max_vm_num = int(common.get_node(f"//hv/CAPACITIES/MAX_VM_NUM/text()", scenario_etree))
vm_list = scenario_etree.xpath("//vm") max_trusty_vm = len(scenario_etree.xpath(f"//vm[./secure_world_support/text() = 'y']"))
if vm_list is not None: hv_ram_size = common.HV_BASE_RAM_SIZE + common.VM_RAM_SIZE * max_vm_num + max_trusty_vm * common.TRUSTY_RAM_SIZE
vm_num = len(vm_list)
hv_ram_size = common.HV_BASE_RAM_SIZE + common.VM_RAM_SIZE * vm_num
ivshmem_list = scenario_etree.xpath("//IVSHMEM_SIZE/text()") ivshmem_list = scenario_etree.xpath("//IVSHMEM_SIZE/text()")
total_shm_size = 0 total_shm_size = 0
for ram_size in ivshmem_list: 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('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('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_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:value-of select="acrn:define('CONFIG_MAX_VM_NUM', hv/CAPACITIES/MAX_VM_NUM , 'U')" />
</xsl:template> </xsl:template>