Change Service VM to supervisor role

1. Enable Service VM to power off or restart the whole platform even when RTVM is running.
2. Allow Service VM stop the RTVM using acrnctl tool with option "stop -f".
3. Add 'Service VM supervisor role enabled' option in ACRN configurator

Tracked-On: #8618

Signed-off-by: YuanXin-Intel <xin.yuan@intel.com>
Reviewed-by: Junjie Mao <junjie.mao@intel.com>
Reviewed-by: Jian Jun Chen <jian.jun.chen@intel.com>
This commit is contained in:
YuanXin-Intel
2024-06-11 18:06:54 -04:00
committed by acrnsi-robot
parent 512c98fd79
commit e4b1584577
10 changed files with 36 additions and 19 deletions

View File

@@ -63,6 +63,11 @@
<xs:documentation>Enable multiboot2 protocol support (with multiboot1 downward compatibility). If multiboot1 meets your requirements, disable this feature to reduce hypervisor code size.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="SERVICE_VM_SUPERVISOR_ENABLED" type="Boolean" default="n">
<xs:annotation acrn:title="Enable Service VM supervisor role" acrn:views="advanced">
<xs:documentation>Enable Service VM to play the supervisor role. If Enabled, the severity level of Service VM is higher than RTVM.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="SPLIT_LOCK_DETECTION_ENABLED" type="Boolean" default="n">
<xs:annotation acrn:title="Enable split lock detection" acrn:views="advanced">
<xs:documentation>Enable detection of split locks. A split lock can negatively affect an application's real-time performance. If a lock is detected, an alignment check exception #AC occurs.</xs:documentation>

View File

@@ -79,6 +79,10 @@
<xsl:with-param name="value" select="'y'" />
</xsl:call-template>
<xsl:call-template name="boolean-by-key">
<xsl:with-param name="key" select="'SERVICE_VM_SUPERVISOR_ENABLED'" />
</xsl:call-template>
<xsl:call-template name="boolean-by-key">
<xsl:with-param name="key" select="'SPLIT_LOCK_DETECTION_ENABLED'" />
</xsl:call-template>

View File

@@ -40,6 +40,7 @@
<xsl:call-template name="cpu_affinity" />
<xsl:call-template name="rdt" />
<xsl:call-template name="vm0_passthrough_tpm" />
<xsl:call-template name="service_vm_super_role" />
<xsl:call-template name="vm_config_pci_dev_num" />
<xsl:call-template name="vm_boot_args" />
</xsl:template>
@@ -172,6 +173,17 @@
</xsl:if>
</xsl:template>
<xsl:template name="service_vm_super_role">
<xsl:choose>
<xsl:when test="//SERVICE_VM_SUPERVISOR_ENABLED = 'y'">
<xsl:value-of select="acrn:define('RTVM_SEVERITY_LEVEL', '0x10', 'U')" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="acrn:define('RTVM_SEVERITY_LEVEL', '0x30', 'U')" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="vm_config_pci_dev_num">
<xsl:for-each select="vm">
<xsl:if test="acrn:pci-dev-num(@id)">