mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-07-17 08:51:42 +00:00
doc: integrate config xsl transform into doc build
Documentation for the scenario XML configuration options is pulled from the schema definition files (xsd) maintained in the misc/config_tools/schema folder. Update the doc build process to generate and incorporate the option documentation. Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
This commit is contained in:
parent
fa01261552
commit
f1c339df2a
@ -48,6 +48,9 @@ doxy: copy-to-sourcedir
|
||||
|
||||
content: copy-to-sourcedir
|
||||
$(Q)scripts/extract_content.py $(SOURCEDIR) misc
|
||||
$(Q)mkdir -p $(SOURCEDIR)/misc/config_tools/schema
|
||||
$(Q)rsync -rt ../misc/config_tools/schema/*.xsd $(SOURCEDIR)/misc/config_tools/schema
|
||||
$(Q)xsltproc -xinclude ./scripts/configdoc.xsl $(SOURCEDIR)/misc/config_tools/schema/config.xsd > $(SOURCEDIR)/reference/configdoc.txt
|
||||
|
||||
kconfig: copy-to-sourcedir
|
||||
$(Q)srctree=../hypervisor \
|
||||
|
@ -14,6 +14,7 @@ Configuration and Tools
|
||||
:maxdepth: 1
|
||||
|
||||
tutorials/acrn_configuration_tool
|
||||
reference/config-options
|
||||
reference/kconfig/index
|
||||
user-guides/hv-parameters
|
||||
user-guides/kernel-parameters
|
||||
|
41
doc/reference/config-options.rst
Normal file
41
doc/reference/config-options.rst
Normal file
@ -0,0 +1,41 @@
|
||||
.. _scenario-config-options:
|
||||
|
||||
Scenario Configuration Options
|
||||
##############################
|
||||
|
||||
As explained in :ref:`acrn_configuration_tool`, ACRN scenarios define
|
||||
the hypervisor (hv) and VM settings for the execution environment of an
|
||||
ACRN-based application. This document describes these option settings.
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
:depth: 2
|
||||
|
||||
Common option value types
|
||||
*************************
|
||||
|
||||
Within this option documentation, we refer to some common type
|
||||
definitions:
|
||||
|
||||
Boolean
|
||||
A true or false value specified as either ``y`` or ``n``. Other
|
||||
values such as ``t`` or ``f`` are not supported.
|
||||
|
||||
Hexadecimal
|
||||
A base-16 (integer) value represented by a leading ``0x`` or ``0X`` followed by
|
||||
one or more characters ``0`` to ``9``, ``a`` to ``f``, or ``A`` to ``F``.
|
||||
|
||||
Integer
|
||||
A base-10 value represented by the characters ``0`` to ``9``. The
|
||||
first character must not be a ``0``. Only positive values are
|
||||
expected.
|
||||
|
||||
String
|
||||
A sequence of UTF-8 characters. String-length limits or specific
|
||||
string value restrictions are defined in the option description.
|
||||
|
||||
|
||||
.. comment This configdoc.txt is generated during the doc build process
|
||||
from the acrn config schema files found in misc/config_tools/schema
|
||||
|
||||
.. include:: configdoc.txt
|
278
doc/scripts/configdoc.xsl
Normal file
278
doc/scripts/configdoc.xsl
Normal file
@ -0,0 +1,278 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<xsl:stylesheet
|
||||
version="1.0"
|
||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xsl:output method="text" />
|
||||
|
||||
<xsl:variable name="newline" select="'
'" />
|
||||
<xsl:variable name="section_adornment" select="'#*=-%+@`'" />
|
||||
|
||||
<!--
|
||||
Visitors of XSD elements
|
||||
-->
|
||||
|
||||
<xsl:template match="/xs:schema">
|
||||
|
||||
<xsl:apply-templates select="xs:complexType[@name='ACRNConfigType']">
|
||||
<xsl:with-param name="level" select="2" />
|
||||
<xsl:with-param name="prefix" select="''" />
|
||||
</xsl:apply-templates>
|
||||
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="xs:complexType[@name='ACRNConfigType']">
|
||||
<xsl:param name="level" />
|
||||
<xsl:param name="prefix" />
|
||||
|
||||
<xsl:apply-templates select="descendant::xs:element">
|
||||
<xsl:with-param name="level" select="$level" />
|
||||
<xsl:with-param name="prefix" select="$prefix" />
|
||||
</xsl:apply-templates>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="xs:element">
|
||||
<xsl:param name="level" />
|
||||
<xsl:param name="prefix" />
|
||||
|
||||
<xsl:variable name="ty" select="@type" />
|
||||
|
||||
<!-- Only visit elements having complex types. Those having simple types are
|
||||
described as an option.. -->
|
||||
<xsl:choose>
|
||||
<xsl:when test="//xs:complexType[@name=$ty]">
|
||||
<!-- for top level sections (level 2) put a begin/end comment for
|
||||
potential use in rst include directives -->
|
||||
<xsl:if test="$level = 2">
|
||||
<xsl:value-of select="concat('.. section-start ', $prefix, @name, $newline)"/>
|
||||
</xsl:if>
|
||||
<!-- The section header -->
|
||||
<xsl:if test="$level <= 4">
|
||||
<xsl:call-template name="section-header">
|
||||
<xsl:with-param name="title" select="concat($prefix, @name)" />
|
||||
<xsl:with-param name="label" select="concat($prefix, @name)" />
|
||||
<xsl:with-param name="level" select="$level" />
|
||||
</xsl:call-template>
|
||||
|
||||
<!-- Description of this menu / entry -->
|
||||
<xsl:call-template name="print-annotation" >
|
||||
<xsl:with-param name="indent" select="''" />
|
||||
</xsl:call-template>
|
||||
<xsl:value-of select="$newline" />
|
||||
<!-- Occurence requirements (removed, but save just in case)
|
||||
<xsl:call-template name="print-occurs">
|
||||
<xsl:with-param name="name" select="@name" />
|
||||
</xsl:call-template>
|
||||
-->
|
||||
<xsl:value-of select="$newline" />
|
||||
</xsl:if>
|
||||
|
||||
<!-- Visit the complex type to generate menus and/or entries -->
|
||||
<xsl:apply-templates select="//xs:complexType[@name=$ty]">
|
||||
<xsl:with-param name="level" select="$level" />
|
||||
<xsl:with-param name="name" select="concat($prefix, @name)" />
|
||||
</xsl:apply-templates>
|
||||
<!-- for top level sections (level 2) put a begin/end comment for
|
||||
potential use in rst include directives -->
|
||||
<xsl:if test="$level = 2">
|
||||
<xsl:value-of select="concat('.. section-end ', $prefix, @name, $newline)"/>
|
||||
</xsl:if>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:call-template name="option-header">
|
||||
<xsl:with-param name="label" select="concat($prefix, @name)" />
|
||||
</xsl:call-template>
|
||||
<xsl:value-of select="$newline" />
|
||||
<!-- Print the description, type, and occurrence requirements -->
|
||||
<xsl:text> - </xsl:text>
|
||||
<xsl:call-template name="print-annotation" >
|
||||
<xsl:with-param name="indent" select="' '" />
|
||||
</xsl:call-template>
|
||||
<xsl:choose>
|
||||
<xsl:when test="//xs:simpleType[@name=$ty]">
|
||||
<xsl:apply-templates select="//xs:simpleType[@name=$ty]" />
|
||||
</xsl:when>
|
||||
<xsl:when test="starts-with($ty, 'xs:')">
|
||||
<xsl:text> - </xsl:text>
|
||||
<xsl:value-of select="substring($ty, 4)" />
|
||||
<xsl:value-of select="$newline" />
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text> - </xsl:text>
|
||||
<xsl:value-of select="$ty" />
|
||||
<xsl:value-of select="$newline" />
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<!-- removing occurs info for now
|
||||
<xsl:text> - </xsl:text>
|
||||
<xsl:call-template name="print-occurs" >
|
||||
<xsl:with-param name="name" select="@name" />
|
||||
</xsl:call-template>
|
||||
<xsl:value-of select="$newline" />
|
||||
-->
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="xs:complexType">
|
||||
<xsl:param name="level" />
|
||||
<xsl:param name="name" />
|
||||
|
||||
<!-- Visit the sub-menus -->
|
||||
<xsl:apply-templates select="descendant::xs:element">
|
||||
<xsl:with-param name="level" select="$level + 1" />
|
||||
<xsl:with-param name="prefix" select="concat($name, '.')" />
|
||||
</xsl:apply-templates>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="xs:simpleType">
|
||||
<xsl:text> - </xsl:text>
|
||||
<xsl:call-template name="print-annotation" >
|
||||
<xsl:with-param name="indent" select="' '" />
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="print-occurs">
|
||||
<xsl:param name="name" />
|
||||
<!-- use the min/maxOccurs data to figure out if this is an optional
|
||||
item, and how many occurrences are allowed -->
|
||||
<xsl:variable name="min">
|
||||
<xsl:choose>
|
||||
<xsl:when test="@minOccurs">
|
||||
<xsl:value-of select="@minOccurs" />
|
||||
</xsl:when>
|
||||
<xsl:otherwise>1</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:variable name="max">
|
||||
<xsl:choose>
|
||||
<xsl:when test="@maxOccurs">
|
||||
<xsl:value-of select="@maxOccurs" />
|
||||
</xsl:when>
|
||||
<xsl:otherwise>1</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:text>The **</xsl:text>
|
||||
<xsl:value-of select="$name" />
|
||||
<xsl:text>** option is </xsl:text>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$min = 0">
|
||||
<xsl:text>optional</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text>required</xsl:text>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<xsl:text> and with </xsl:text>
|
||||
|
||||
<xsl:choose>
|
||||
<xsl:when test="($min = $max) or ($min = 0)">
|
||||
<xsl:value-of select="$max" />
|
||||
<xsl:text> occurrence</xsl:text>
|
||||
<xsl:if test="$max > 1">
|
||||
<xsl:text>s</xsl:text>
|
||||
</xsl:if>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="$min" />
|
||||
<xsl:text> to </xsl:text>
|
||||
<xsl:value-of select="$max" />
|
||||
<xsl:text> occurrences</xsl:text>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<xsl:text>.</xsl:text>
|
||||
<xsl:value-of select="$newline" />
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="print-annotation">
|
||||
<xsl:param name="indent" />
|
||||
<xsl:choose>
|
||||
<xsl:when test="xs:annotation">
|
||||
<xsl:call-template name="printIndented">
|
||||
<xsl:with-param name="text" select="xs:annotation/xs:documentation" />
|
||||
<xsl:with-param name="indent" select="$indent" />
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<!-- <xsl:text><description is missing ></xsl:text> -->
|
||||
<xsl:value-of select="$newline" />
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<!--
|
||||
Library Routines
|
||||
-->
|
||||
|
||||
<xsl:template name="repeat">
|
||||
<xsl:param name="string" />
|
||||
<xsl:param name="times" />
|
||||
<xsl:if test="$times > 0">
|
||||
<xsl:value-of select="$string" />
|
||||
<xsl:call-template name="repeat">
|
||||
<xsl:with-param name="string" select="$string" />
|
||||
<xsl:with-param name="times" select="$times - 1" />
|
||||
</xsl:call-template>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="section-header">
|
||||
<xsl:param name="title" />
|
||||
<xsl:param name="label" />
|
||||
<xsl:param name="level" />
|
||||
<xsl:if test="$label != ''">
|
||||
<xsl:value-of select="concat('.. _', $label, ':', $newline, $newline)" />
|
||||
</xsl:if>
|
||||
<xsl:value-of select="concat($title, $newline)" />
|
||||
<xsl:call-template name="repeat">
|
||||
<xsl:with-param name="string">
|
||||
<xsl:value-of select="substring($section_adornment, $level, 1)" />
|
||||
</xsl:with-param>
|
||||
<xsl:with-param name="times" select="string-length($title)" />
|
||||
</xsl:call-template>
|
||||
<xsl:value-of select="concat($newline, $newline)" />
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="option-header">
|
||||
<xsl:param name="label" />
|
||||
<!-- we're using the reST option directive for creating linkable
|
||||
config option sections using the :option: role. This also
|
||||
gives us the option directive HTML formatting. -->
|
||||
<xsl:text>.. option:: </xsl:text>
|
||||
<xsl:value-of select="$label" />
|
||||
<xsl:value-of select="$newline" />
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="printIndented">
|
||||
<xsl:param name="text" />
|
||||
<xsl:param name="indent" />
|
||||
<!-- Handle multi-line documentation text and indent it properly for
|
||||
the bullet list display we're using for node descriptions (but not for
|
||||
heading descriptions -->
|
||||
<xsl:if test="$text">
|
||||
<xsl:variable name="thisLine" select="substring-before($text, $newline)" />
|
||||
<xsl:variable name="nextLine" select="substring-after($text, $newline)" />
|
||||
<xsl:choose>
|
||||
<xsl:when test="$thisLine or $nextLine">
|
||||
<!-- $text contains at least one newline, and there's more coming so print it -->
|
||||
<xsl:value-of select="concat($thisLine, $newline)" />
|
||||
<!-- watch for two newlines in a row and avoid writing the indent -->
|
||||
<xsl:if test="substring-before(concat($nextLine, $newline), $newline)" >
|
||||
<xsl:value-of select="$indent" />
|
||||
</xsl:if>
|
||||
<!-- and recurse to process the rest -->
|
||||
<xsl:call-template name="printIndented">
|
||||
<xsl:with-param name="text" select="$nextLine" />
|
||||
<xsl:with-param name="indent" select="$indent" />
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="concat($text, $newline)" />
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
@ -50,8 +50,8 @@ def expr_str(expr):
|
||||
|
||||
INDEX_RST_HEADER = """.. _configuration:
|
||||
|
||||
Configuration Symbol Reference
|
||||
##############################
|
||||
Kconfig Symbol Reference
|
||||
########################
|
||||
|
||||
Introduction
|
||||
************
|
||||
|
271
doc/tutorials/acrn-config-details.txt
Normal file
271
doc/tutorials/acrn-config-details.txt
Normal file
@ -0,0 +1,271 @@
|
||||
``hv``:
|
||||
Specify the global attributes for all VMs.
|
||||
|
||||
``RELEASE`` (a child node of ``DEBUG_OPTIONS``):
|
||||
Specify the final build is for Release or Debug.
|
||||
|
||||
``SERIAL_CONSOLE`` (a child node of ``DEBUG_OPTIONS``):
|
||||
Specify the host serial device is used for hypervisor debugging.
|
||||
This configuration is valid only if Service VM ``legacy_vuart0``
|
||||
is enabled. Leave this field empty if Service VM ``console_vuart``
|
||||
is enabled. Using ``bootargs`` for ``console_vuart`` configuration.
|
||||
|
||||
``MEM_LOGLEVEL`` (a child node of ``DEBUG_OPTIONS``):
|
||||
Specify the default log level in memory.
|
||||
|
||||
``NPK_LOGLEVEL`` (a child node of ``DEBUG_OPTIONS``):
|
||||
Specify the default log level for the hypervisor NPK log.
|
||||
|
||||
``CONSOLE_LOGLEVEL`` (a child node of ``DEBUG_OPTIONS``):
|
||||
Specify the default log level on the serial console.
|
||||
|
||||
``LOG_DESTINATION`` (a child node of ``DEBUG_OPTIONS``):
|
||||
Specify the bitmap of consoles where logs are printed.
|
||||
|
||||
``LOG_BUF_SIZE`` (a child node of ``DEBUG_OPTIONS``):
|
||||
Specify the capacity of the log buffer for each physical CPU.
|
||||
|
||||
``RELOC`` (a child node of ``FEATURES``):
|
||||
Specify whether the hypervisor image relocation is enabled on booting.
|
||||
|
||||
``SCHEDULER`` (a child node of ``FEATURES``):
|
||||
Specify the CPU scheduler used by the hypervisor.
|
||||
Supported schedulers are: ``SCHED_NOOP``, ``SCHED_BVT`` and ``SCHED_IORR``.
|
||||
|
||||
``MULTIBOOT2`` (a child node of ``FEATURES``):
|
||||
Specify whether the ACRN hypervisor image can be booted using the
|
||||
multiboot2 protocol. If not set, GRUB's multiboot2 is not available as a
|
||||
boot option.
|
||||
|
||||
``RDT_ENABLED`` (a child node of ``FEATURES/RDT``):
|
||||
Specify whether to enable the Resource Director Technology (RDT)
|
||||
allocation feature. Set to 'y' to enable the feature or 'n' to disable it.
|
||||
The 'y' will be ignored when hardware does not support RDT.
|
||||
|
||||
``CDP_ENABLED`` (a child node of ``FEATURES/RDT``):
|
||||
Specify whether to enable Code and Data Prioritization (CDP). CDP is an
|
||||
extension of CAT. Set to 'y' to enable the feature or 'n' to disable it.
|
||||
The 'y' will be ignored when hardware does not support CDP.
|
||||
|
||||
``CLOS_MASK`` (a child node of ``FEATURES/RDT``):
|
||||
Specify the cache capacity bitmask for the CLOS; only continuous '1' bits
|
||||
are allowed. The value will be ignored when hardware does not support RDT.
|
||||
|
||||
``HYPERV_ENABLED`` (a child node of ``FEATURES``):
|
||||
Specify whether Hyper-V is enabled.
|
||||
|
||||
``IOMMU_ENFORCE_SNP`` (a child node of ``FEATURES``):
|
||||
Specify whether IOMMU enforces snoop behavior of the DMA operation.
|
||||
|
||||
``ACPI_PARSE_ENABLED`` (a child node of ``FEATURES``):
|
||||
Specify whether ACPI runtime parsing is enabled.
|
||||
|
||||
``L1D_VMENTRY_ENABLED`` (a child node of ``FEATURES``):
|
||||
Specify whether the L1 cache flush before VM entry is enabled.
|
||||
|
||||
``MCE_ON_PSC_DISABLED`` (a child node of ``FEATURE``):
|
||||
Specify whether force to disable software workaround for Machine Check
|
||||
Error on Page Size Change is enabled.
|
||||
|
||||
``IVSHMEM`` (a child node of ``FEATURE``):
|
||||
Specify the inter-VM shared memory configuration
|
||||
|
||||
``IVSHMEM_ENABLED`` (a child node of ``FEATURE/IVSHMEM``):
|
||||
Specify if the inter-VM shared memory feature is enabled.
|
||||
|
||||
``IVSHMEM_REGION`` (a child node of ``FEATURE/IVSHMEM``):
|
||||
Specify a comma-separated list of the inter-VM shared memory region name,
|
||||
size, and VM IDs that may communicate using this shared region.
|
||||
|
||||
* Prefix the region ``name`` with ``hv:/`` (for an hv-land solution).
|
||||
(See :ref:`ivshmem-hld` for details.)
|
||||
* Specify the region ``size`` in MB, and a power of 2 (e.g., 2, 4, 8, 16)
|
||||
up to 512.
|
||||
* Specify all VM IDs that may use this shared memory area,
|
||||
separated by a ``:``, for example, ``0:2`` (to share this area between
|
||||
VMs 0 and 2), or ``0:1:2`` (to let VMs 0, 1, and 2 share this area).
|
||||
|
||||
``STACK_SIZE`` (a child node of ``MEMORY``):
|
||||
Specify the size of stacks used by physical cores. Each core uses one stack
|
||||
for normal operations and another three for specific exceptions.
|
||||
|
||||
``HV_RAM_SIZE`` (a child node of ``MEMORY``):
|
||||
Specify the size of the RAM region used by the hypervisor.
|
||||
|
||||
``LOW_RAM_SIZE`` (a child node of ``MEMORY``):
|
||||
Specify the size of the RAM region below address 0x10000, starting from address 0x0.
|
||||
|
||||
``SOS_RAM_SIZE`` (a child node of ``MEMORY``):
|
||||
Specify the size of the Service OS VM RAM region.
|
||||
|
||||
``UOS_RAM_SIZE`` (a child node of ``MEMORY``):
|
||||
Specify the size of the User OS VM RAM region.
|
||||
|
||||
``PLATFORM_RAM_SIZE`` (a child node of ``MEMORY``):
|
||||
Specify the size of the physical platform RAM region.
|
||||
|
||||
``IOMMU_BUS_NUM`` (a child node of ``CAPACITIES``):
|
||||
Specify the highest PCI bus ID used during IOMMU initialization.
|
||||
|
||||
``MAX_IR_ENTRIES`` (a child node of ``CAPACITIES``):
|
||||
Specify the maximum number of Interrupt Remapping Entries.
|
||||
|
||||
``MAX_IOAPIC_NUM`` (a child node of ``CAPACITIES``):
|
||||
Specify the maximum number of IOAPICs.
|
||||
|
||||
``MAX_PCI_DEV_NUM`` (a child node of ``CAPACITIES``):
|
||||
Specify the maximum number of PCI devices.
|
||||
|
||||
``MAX_IOAPIC_LINES`` (a child node of ``CAPACITIES``):
|
||||
Specify the maximum number of interrupt lines per IOAPIC.
|
||||
|
||||
``MAX_PT_IRQ_ENTRIES`` (a child node of ``CAPACITIES``):
|
||||
Specify the maximum number of interrupt sources for PT devices.
|
||||
|
||||
``MAX_MSIX_TABLE_NUM`` (a child node of ``CAPACITIES``):
|
||||
Specify the maximum number of MSI-X tables per device.
|
||||
|
||||
``MAX_EMULATED_MMIO`` (a child node of ``CAPACITIES``):
|
||||
Specify the maximum number of emulated MMIO regions.
|
||||
|
||||
``GPU_SBDF`` (a child node of ``MISC_CFG``):
|
||||
Specify the Segment, Bus, Device, and function of the GPU.
|
||||
|
||||
``vm``:
|
||||
Specify the VM with VMID by its ``id`` attribute.
|
||||
|
||||
``vm_type``:
|
||||
Current supported VM types are:
|
||||
|
||||
- ``SAFETY_VM`` pre-launched Safety VM
|
||||
- ``PRE_STD_VM`` pre-launched Standard VM
|
||||
- ``SOS_VM`` pre-launched Service VM
|
||||
- ``POST_STD_VM`` post-launched Standard VM
|
||||
- ``POST_RT_VM`` post-launched real-time capable VM
|
||||
- ``KATA_VM`` post-launched Kata Container VM
|
||||
|
||||
``name`` (a child node of ``vm``):
|
||||
Specify the VM name shown in the hypervisor console command: vm_list.
|
||||
|
||||
``guest_flags``:
|
||||
Select all applicable flags for the VM:
|
||||
|
||||
- ``GUEST_FLAG_SECURE_WORLD_ENABLED`` specify whether the secure world is
|
||||
enabled
|
||||
- ``GUEST_FLAG_LAPIC_PASSTHROUGH`` specify whether LAPIC is passed through
|
||||
- ``GUEST_FLAG_IO_COMPLETION_POLLING`` specify whether the hypervisor needs
|
||||
IO polling to completion
|
||||
- ``GUEST_FLAG_HIDE_MTRR`` specify whether to hide MTRR from the VM
|
||||
- ``GUEST_FLAG_RT`` specify whether the VM is RT-VM (real-time)
|
||||
|
||||
``cpu_affinity``:
|
||||
List of pCPU: the guest VM is allowed to create vCPU from all or a subset of this list.
|
||||
|
||||
``base`` (a child node of ``epc_section``):
|
||||
SGX Enclave Page Cache section base; must be page aligned.
|
||||
|
||||
``size`` (a child node of ``epc_section``):
|
||||
SGX Enclave Page Cache section size in bytes; must be page aligned.
|
||||
|
||||
``clos``:
|
||||
Class of Service for Cache Allocation Technology settings. Refer to :ref:`hv_rdt` for details.
|
||||
|
||||
``start_hpa`` (a child node of ``memory``):
|
||||
The start physical address in host for the VM.
|
||||
|
||||
``size`` (a child node of ``memory``):
|
||||
The memory size in bytes for the VM.
|
||||
|
||||
``name`` (a child node of ``os_config``):
|
||||
Specify the OS name of VM; currently, it is not referenced by the hypervisor code.
|
||||
|
||||
``kern_type`` (a child node of ``os_config``):
|
||||
Specify the kernel image type so that the hypervisor can load it correctly.
|
||||
Currently supports ``KERNEL_BZIMAGE`` and ``KERNEL_ZEPHYR``.
|
||||
|
||||
``kern_mod`` (a child node of ``os_config``):
|
||||
The tag for the kernel image that acts as a multiboot module; it must
|
||||
exactly match the module tag in the GRUB multiboot cmdline.
|
||||
|
||||
``ramdisk_mod`` (a child node of ``os_config``):
|
||||
The tag for the ramdisk image, which acts as a multiboot module; it
|
||||
must exactly match the module tag in the GRUB multiboot cmdline.
|
||||
|
||||
``bootargs`` (a child node of ``os_config``):
|
||||
For internal use only and is not configurable. Specify the kernel boot arguments
|
||||
in ``bootargs`` under the parent of ``board_private``.
|
||||
|
||||
``kern_load_addr`` (a child node of ``os_config``):
|
||||
The loading address in host memory for the VM kernel.
|
||||
|
||||
``kern_entry_addr`` (a child node of ``os_config``):
|
||||
The entry address in host memory for the VM kernel.
|
||||
|
||||
``legacy_vuart``:
|
||||
Specify the vUART (aka COM) with the vUART ID by its ``id`` attribute.
|
||||
Refer to :ref:`vuart_config` for detailed vUART settings.
|
||||
|
||||
``console_vuart``:
|
||||
Specify the console vUART (aka PCI based vUART) with the vUART ID by
|
||||
its ``id`` attribute.
|
||||
Refer to :ref:`vuart_config` for detailed vUART settings.
|
||||
|
||||
``communication_vuart``:
|
||||
Specify the communication vUART (aka PCI based vUART) with the vUART ID by
|
||||
its ``id`` attribute.
|
||||
Refer to :ref:`vuart_config` for detailed vUART settings.
|
||||
|
||||
``type`` (a child node of ``legacy_vuart``):
|
||||
vUART (aka COM) type; currently only supports the legacy PIO mode.
|
||||
|
||||
``base`` (a child node of ``legacy_vuart``, ``console_vuart``, and ``communication_vuart``):
|
||||
vUART (A.K.A COM) enabling switch. Enable by exposing its COM_BASE
|
||||
(SOS_COM_BASE for Service VM); disable by returning INVALID_COM_BASE.
|
||||
|
||||
console and communication vUART (A.K.A PCI based vUART) enabling switch.
|
||||
Enable by specifying PCI_VUART; disable by returning INVALID_PCI_BASE.
|
||||
|
||||
``irq`` (a child node of ``legacy_vuart``):
|
||||
vCOM IRQ.
|
||||
|
||||
``target_vm_id`` (a child node of ``legacy_vuart1``, ``communication_vuart``):
|
||||
COM2 is used for VM communications. When it is enabled, specify which
|
||||
target VM the current VM connects to.
|
||||
|
||||
``communication_vuart`` is used for VM communications. When it is enabled, specify
|
||||
which target VM the current VM connects to.
|
||||
|
||||
``target_uart_id`` (a child node of ``legacy_vuart1`` and ``communication_vuart``):
|
||||
Target vUART ID to which the vCOM2 connects.
|
||||
|
||||
Target vUART ID to which the ``communication_vuart`` connects.
|
||||
|
||||
``pci_dev_num``:
|
||||
PCI devices number of the VM; it is hard-coded for each scenario so it
|
||||
is not configurable for now.
|
||||
|
||||
``pci_devs``:
|
||||
PCI devices list of the VM; it is hard-coded for each scenario so it
|
||||
is not configurable for now.
|
||||
|
||||
``mmio_resources``:
|
||||
MMIO resources to passthrough.
|
||||
|
||||
``TPM2`` (a child node of ``mmio_resources``):
|
||||
TPM2 device to passthrough.
|
||||
|
||||
``p2sb`` (a child node of ``mmio_resources``):
|
||||
Exposing the P2SB (Primary-to-Sideband) bridge to the pre-launched VM.
|
||||
|
||||
``pt_intx``:
|
||||
Forward specific IOAPIC interrupts (with interrupt line remapping) to the pre-launched VM.
|
||||
|
||||
``board_private``:
|
||||
Stores scenario-relevant board configuration.
|
||||
|
||||
``rootfs`` (a child node of ``board_private``):
|
||||
rootfs for the Linux kernel.
|
||||
|
||||
``bootargs`` (a child node of ``board_private``):
|
||||
Specify kernel boot arguments.
|
||||
|
@ -100,278 +100,8 @@ and ``scenario`` attributes:
|
||||
|
||||
<acrn-config board="BOARD" scenario="SCENARIO">
|
||||
|
||||
Additional scenario XML elements:
|
||||
See :ref:`scenario-config-options` for a full explanation of available scenario XML elements.
|
||||
|
||||
``hv``:
|
||||
Specify the global attributes for all VMs.
|
||||
|
||||
``RELEASE`` (a child node of ``DEBUG_OPTIONS``):
|
||||
Specify the final build is for Release or Debug.
|
||||
|
||||
``SERIAL_CONSOLE`` (a child node of ``DEBUG_OPTIONS``):
|
||||
Specify the host serial device is used for hypervisor debugging.
|
||||
This configuration is valid only if Service VM ``legacy_vuart0``
|
||||
is enabled. Leave this field empty if Service VM ``console_vuart``
|
||||
is enabled. Using ``bootargs`` for ``console_vuart`` configuration.
|
||||
|
||||
``MEM_LOGLEVEL`` (a child node of ``DEBUG_OPTIONS``):
|
||||
Specify the default log level in memory.
|
||||
|
||||
``NPK_LOGLEVEL`` (a child node of ``DEBUG_OPTIONS``):
|
||||
Specify the default log level for the hypervisor NPK log.
|
||||
|
||||
``CONSOLE_LOGLEVEL`` (a child node of ``DEBUG_OPTIONS``):
|
||||
Specify the default log level on the serial console.
|
||||
|
||||
``LOG_DESTINATION`` (a child node of ``DEBUG_OPTIONS``):
|
||||
Specify the bitmap of consoles where logs are printed.
|
||||
|
||||
``LOG_BUF_SIZE`` (a child node of ``DEBUG_OPTIONS``):
|
||||
Specify the capacity of the log buffer for each physical CPU.
|
||||
|
||||
``RELOC`` (a child node of ``FEATURES``):
|
||||
Specify whether the hypervisor image relocation is enabled on booting.
|
||||
|
||||
``SCHEDULER`` (a child node of ``FEATURES``):
|
||||
Specify the CPU scheduler used by the hypervisor.
|
||||
Supported schedulers are: ``SCHED_NOOP``, ``SCHED_BVT`` and ``SCHED_IORR``.
|
||||
|
||||
``MULTIBOOT2`` (a child node of ``FEATURES``):
|
||||
Specify whether the ACRN hypervisor image can be booted using the
|
||||
multiboot2 protocol. If not set, GRUB's multiboot2 is not available as a
|
||||
boot option.
|
||||
|
||||
``RDT_ENABLED`` (a child node of ``FEATURES/RDT``):
|
||||
Specify whether to enable the Resource Director Technology (RDT)
|
||||
allocation feature. Set to 'y' to enable the feature or 'n' to disable it.
|
||||
The 'y' will be ignored when hardware does not support RDT.
|
||||
|
||||
``CDP_ENABLED`` (a child node of ``FEATURES/RDT``):
|
||||
Specify whether to enable Code and Data Prioritization (CDP). CDP is an
|
||||
extension of CAT. Set to 'y' to enable the feature or 'n' to disable it.
|
||||
The 'y' will be ignored when hardware does not support CDP.
|
||||
|
||||
``CLOS_MASK`` (a child node of ``FEATURES/RDT``):
|
||||
Specify the cache capacity bitmask for the CLOS; only continuous '1' bits
|
||||
are allowed. The value will be ignored when hardware does not support RDT.
|
||||
|
||||
``HYPERV_ENABLED`` (a child node of ``FEATURES``):
|
||||
Specify whether Hyper-V is enabled.
|
||||
|
||||
``IOMMU_ENFORCE_SNP`` (a child node of ``FEATURES``):
|
||||
Specify whether IOMMU enforces snoop behavior of the DMA operation.
|
||||
|
||||
``ACPI_PARSE_ENABLED`` (a child node of ``FEATURES``):
|
||||
Specify whether ACPI runtime parsing is enabled.
|
||||
|
||||
``L1D_VMENTRY_ENABLED`` (a child node of ``FEATURES``):
|
||||
Specify whether the L1 cache flush before VM entry is enabled.
|
||||
|
||||
``MCE_ON_PSC_DISABLED`` (a child node of ``FEATURE``):
|
||||
Specify whether force to disable software workaround for Machine Check
|
||||
Error on Page Size Change is enabled.
|
||||
|
||||
``IVSHMEM`` (a child node of ``FEATURE``):
|
||||
Specify the inter-VM shared memory configuration
|
||||
|
||||
``IVSHMEM_ENABLED`` (a child node of ``FEATURE/IVSHMEM``):
|
||||
Specify if the inter-VM shared memory feature is enabled.
|
||||
|
||||
``IVSHMEM_REGION`` (a child node of ``FEATURE/IVSHMEM``):
|
||||
Specify a comma-separated list of the inter-VM shared memory region name,
|
||||
size, and VM IDs that may communicate using this shared region.
|
||||
|
||||
* Prefix the region ``name`` with ``hv:/`` (for an hv-land solution).
|
||||
(See :ref:`ivshmem-hld` for details.)
|
||||
* Specify the region ``size`` in MB, and a power of 2 (e.g., 2, 4, 8, 16)
|
||||
up to 512.
|
||||
* Specify all VM IDs that may use this shared memory area,
|
||||
separated by a ``:``, for example, ``0:2`` (to share this area between
|
||||
VMs 0 and 2), or ``0:1:2`` (to let VMs 0, 1, and 2 share this area).
|
||||
|
||||
``STACK_SIZE`` (a child node of ``MEMORY``):
|
||||
Specify the size of stacks used by physical cores. Each core uses one stack
|
||||
for normal operations and another three for specific exceptions.
|
||||
|
||||
``HV_RAM_SIZE`` (a child node of ``MEMORY``):
|
||||
Specify the size of the RAM region used by the hypervisor.
|
||||
|
||||
``LOW_RAM_SIZE`` (a child node of ``MEMORY``):
|
||||
Specify the size of the RAM region below address 0x10000, starting from address 0x0.
|
||||
|
||||
``SOS_RAM_SIZE`` (a child node of ``MEMORY``):
|
||||
Specify the size of the Service OS VM RAM region.
|
||||
|
||||
``UOS_RAM_SIZE`` (a child node of ``MEMORY``):
|
||||
Specify the size of the User OS VM RAM region.
|
||||
|
||||
``PLATFORM_RAM_SIZE`` (a child node of ``MEMORY``):
|
||||
Specify the size of the physical platform RAM region.
|
||||
|
||||
``IOMMU_BUS_NUM`` (a child node of ``CAPACITIES``):
|
||||
Specify the highest PCI bus ID used during IOMMU initialization.
|
||||
|
||||
``MAX_IR_ENTRIES`` (a child node of ``CAPACITIES``):
|
||||
Specify the maximum number of Interrupt Remapping Entries.
|
||||
|
||||
``MAX_IOAPIC_NUM`` (a child node of ``CAPACITIES``):
|
||||
Specify the maximum number of IOAPICs.
|
||||
|
||||
``MAX_PCI_DEV_NUM`` (a child node of ``CAPACITIES``):
|
||||
Specify the maximum number of PCI devices.
|
||||
|
||||
``MAX_IOAPIC_LINES`` (a child node of ``CAPACITIES``):
|
||||
Specify the maximum number of interrupt lines per IOAPIC.
|
||||
|
||||
``MAX_PT_IRQ_ENTRIES`` (a child node of ``CAPACITIES``):
|
||||
Specify the maximum number of interrupt sources for PT devices.
|
||||
|
||||
``MAX_MSIX_TABLE_NUM`` (a child node of ``CAPACITIES``):
|
||||
Specify the maximum number of MSI-X tables per device.
|
||||
|
||||
``MAX_EMULATED_MMIO`` (a child node of ``CAPACITIES``):
|
||||
Specify the maximum number of emulated MMIO regions.
|
||||
|
||||
``GPU_SBDF`` (a child node of ``MISC_CFG``):
|
||||
Specify the Segment, Bus, Device, and function of the GPU.
|
||||
|
||||
``vm``:
|
||||
Specify the VM with VMID by its ``id`` attribute.
|
||||
|
||||
``vm_type``:
|
||||
Current supported VM types are:
|
||||
|
||||
- ``SAFETY_VM`` pre-launched Safety VM
|
||||
- ``PRE_STD_VM`` pre-launched Standard VM
|
||||
- ``SOS_VM`` pre-launched Service VM
|
||||
- ``POST_STD_VM`` post-launched Standard VM
|
||||
- ``POST_RT_VM`` post-launched real-time capable VM
|
||||
- ``KATA_VM`` post-launched Kata Container VM
|
||||
|
||||
``name`` (a child node of ``vm``):
|
||||
Specify the VM name shown in the hypervisor console command: vm_list.
|
||||
|
||||
``guest_flags``:
|
||||
Select all applicable flags for the VM:
|
||||
|
||||
- ``GUEST_FLAG_SECURE_WORLD_ENABLED`` specify whether the secure world is
|
||||
enabled
|
||||
- ``GUEST_FLAG_LAPIC_PASSTHROUGH`` specify whether LAPIC is passed through
|
||||
- ``GUEST_FLAG_IO_COMPLETION_POLLING`` specify whether the hypervisor needs
|
||||
IO polling to completion
|
||||
- ``GUEST_FLAG_HIDE_MTRR`` specify whether to hide MTRR from the VM
|
||||
- ``GUEST_FLAG_RT`` specify whether the VM is RT-VM (real-time)
|
||||
|
||||
``cpu_affinity``:
|
||||
List of pCPU: the guest VM is allowed to create vCPU from all or a subset of this list.
|
||||
|
||||
``base`` (a child node of ``epc_section``):
|
||||
SGX Enclave Page Cache section base; must be page aligned.
|
||||
|
||||
``size`` (a child node of ``epc_section``):
|
||||
SGX Enclave Page Cache section size in bytes; must be page aligned.
|
||||
|
||||
``clos``:
|
||||
Class of Service for Cache Allocation Technology settings. Refer to :ref:`hv_rdt` for details.
|
||||
|
||||
``start_hpa`` (a child node of ``memory``):
|
||||
The start physical address in host for the VM.
|
||||
|
||||
``size`` (a child node of ``memory``):
|
||||
The memory size in bytes for the VM.
|
||||
|
||||
``name`` (a child node of ``os_config``):
|
||||
Specify the OS name of VM; currently, it is not referenced by the hypervisor code.
|
||||
|
||||
``kern_type`` (a child node of ``os_config``):
|
||||
Specify the kernel image type so that the hypervisor can load it correctly.
|
||||
Currently supports ``KERNEL_BZIMAGE`` and ``KERNEL_ZEPHYR``.
|
||||
|
||||
``kern_mod`` (a child node of ``os_config``):
|
||||
The tag for the kernel image that acts as a multiboot module; it must
|
||||
exactly match the module tag in the GRUB multiboot cmdline.
|
||||
|
||||
``ramdisk_mod`` (a child node of ``os_config``):
|
||||
The tag for the ramdisk image, which acts as a multiboot module; it
|
||||
must exactly match the module tag in the GRUB multiboot cmdline.
|
||||
|
||||
``bootargs`` (a child node of ``os_config``):
|
||||
For internal use only and is not configurable. Specify the kernel boot arguments
|
||||
in ``bootargs`` under the parent of ``board_private``.
|
||||
|
||||
``kern_load_addr`` (a child node of ``os_config``):
|
||||
The loading address in host memory for the VM kernel.
|
||||
|
||||
``kern_entry_addr`` (a child node of ``os_config``):
|
||||
The entry address in host memory for the VM kernel.
|
||||
|
||||
``legacy_vuart``:
|
||||
Specify the vUART (aka COM) with the vUART ID by its ``id`` attribute.
|
||||
Refer to :ref:`vuart_config` for detailed vUART settings.
|
||||
|
||||
``console_vuart``:
|
||||
Specify the console vUART (aka PCI based vUART) with the vUART ID by
|
||||
its ``id`` attribute.
|
||||
Refer to :ref:`vuart_config` for detailed vUART settings.
|
||||
|
||||
``communication_vuart``:
|
||||
Specify the communication vUART (aka PCI based vUART) with the vUART ID by
|
||||
its ``id`` attribute.
|
||||
Refer to :ref:`vuart_config` for detailed vUART settings.
|
||||
|
||||
``type`` (a child node of ``legacy_vuart``):
|
||||
vUART (aka COM) type; currently only supports the legacy PIO mode.
|
||||
|
||||
``base`` (a child node of ``legacy_vuart``, ``console_vuart``, and ``communication_vuart``):
|
||||
vUART (A.K.A COM) enabling switch. Enable by exposing its COM_BASE
|
||||
(SOS_COM_BASE for Service VM); disable by returning INVALID_COM_BASE.
|
||||
|
||||
console and communication vUART (A.K.A PCI based vUART) enabling switch.
|
||||
Enable by specifying PCI_VUART; disable by returning INVALID_PCI_BASE.
|
||||
|
||||
``irq`` (a child node of ``legacy_vuart``):
|
||||
vCOM IRQ.
|
||||
|
||||
``target_vm_id`` (a child node of ``legacy_vuart1``, ``communication_vuart``):
|
||||
COM2 is used for VM communications. When it is enabled, specify which
|
||||
target VM the current VM connects to.
|
||||
|
||||
``communication_vuart`` is used for VM communications. When it is enabled, specify
|
||||
which target VM the current VM connects to.
|
||||
|
||||
``target_uart_id`` (a child node of ``legacy_vuart1`` and ``communication_vuart``):
|
||||
Target vUART ID to which the vCOM2 connects.
|
||||
|
||||
Target vUART ID to which the ``communication_vuart`` connects.
|
||||
|
||||
``pci_dev_num``:
|
||||
PCI devices number of the VM; it is hard-coded for each scenario so it
|
||||
is not configurable for now.
|
||||
|
||||
``pci_devs``:
|
||||
PCI devices list of the VM; it is hard-coded for each scenario so it
|
||||
is not configurable for now.
|
||||
|
||||
``mmio_resources``:
|
||||
MMIO resources to passthrough.
|
||||
|
||||
``TPM2`` (a child node of ``mmio_resources``):
|
||||
TPM2 device to passthrough.
|
||||
|
||||
``p2sb`` (a child node of ``mmio_resources``):
|
||||
Exposing the P2SB (Primary-to-Sideband) bridge to the pre-launched VM.
|
||||
|
||||
``pt_intx``:
|
||||
Forward specific IOAPIC interrupts (with interrupt line remapping) to the pre-launched VM.
|
||||
|
||||
``board_private``:
|
||||
Stores scenario-relevant board configuration.
|
||||
|
||||
``rootfs`` (a child node of ``board_private``):
|
||||
rootfs for the Linux kernel.
|
||||
|
||||
``bootargs`` (a child node of ``board_private``):
|
||||
Specify kernel boot arguments.
|
||||
|
||||
Launch XML format
|
||||
=================
|
||||
|
@ -48,7 +48,7 @@ You'll need ``git`` installed to get the working folders set up:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo apt-get install git
|
||||
sudo apt install git
|
||||
|
||||
We use the source header files to generate API documentation and we use
|
||||
``github.io`` for publishing the generated documentation. Here's the
|
||||
@ -137,7 +137,7 @@ For Ubuntu use:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo apt-get install doxygen python3-pip \
|
||||
sudo apt install doxygen python3-pip \
|
||||
python3-wheel make graphviz xsltproc
|
||||
|
||||
Then use ``pip3`` to install the remaining Python-based tools:
|
||||
|
Loading…
Reference in New Issue
Block a user