diff --git a/doc/user-guides/acrn-dm-parameters.rst b/doc/user-guides/acrn-dm-parameters.rst index a16679baf..adc82c05f 100755 --- a/doc/user-guides/acrn-dm-parameters.rst +++ b/doc/user-guides/acrn-dm-parameters.rst @@ -3,20 +3,20 @@ Device Model Parameters and Launch Script ######################################### -Hypervisor Device Model (DM) is a QEMU-like application in the Service -VM responsible for creating a User VM and then performing devices -emulation based on command line configurations, as introduced in -the :ref:`hld-devicemodel`. ACRN Configurator generates launch scripts for -Post-launched VMs that include a call to the ``acrn-dm`` command with -parameter values that were set in the configurator. Generally, you should not +The Device Model (DM) ``acrn-dm`` is a QEMU-like application in the Service +VM responsible for creating a post-launched User VM and then performing device +emulation based on command-line configurations, as introduced in +the :ref:`hld-devicemodel`. The ACRN Configurator generates launch scripts for +post-launched VMs that include a call to the ``acrn-dm`` command with +parameter values that were set in the Configurator. Generally, you should not edit these launch scripts and change the parameters manually. Any edits you -make would be overwritten if you run the configurator again and save the +make would be overwritten if you run the Configurator again and save the configuration and launch scripts. The rest of this document provides details about the ``acrn-dm`` parameters as a reference, and should help you understand what the generated launch scripts are doing. We also include information useful to ACRN contributors about how -setting in the scenario file, created by the configurator, are transformed +settings in the scenario file, created by the Configurator, are transformed into the launch script. .. _acrn-dm_parameters: @@ -24,17 +24,17 @@ into the launch script. Device Model Parameters *********************** -Here are descriptions for each of these ``acrn-dm`` command line parameters: +Here are descriptions for each of these ``acrn-dm`` command-line parameters: ``-B``, ``--bootargs `` - Set the User VM kernel command-line arguments. The maximum length is 1023. - The bootargs string will be passed to the kernel as its cmdline. + Set the User VM kernel command-line arguments. The maximum length is 1023 + characters. The bootargs string will be passed to the kernel as its cmdline. Example:: -B "loglevel=7" - specifies the kernel log level at 7 + to specify the kernel log level at 7. ---- @@ -44,18 +44,17 @@ Here are descriptions for each of these ``acrn-dm`` command line parameters: ---- -``-E``, ``--elf_file `` - This option is to define a static elf binary which could be loaded by DM. - DM will run elf as guest of ACRN. +``-E``, ``--elf_file `` + Define a static ELF binary for the User VM. ---- ``--enable_trusty`` - Enable trusty for guest. For Android guest OS, ACRN provides a VM + Enable trusty for guest. For an Android guest OS, ACRN provides a VM environment with two worlds: normal world and trusty world. The Android OS runs in the normal world. The trusty OS and security sensitive - applications runs in the trusty world. The trusty world can see the memory - of normal world but not vice versa. See :ref:`trusty_tee` for more + applications run in the trusty world. The trusty world can see the memory + of the normal world but not vice versa. See :ref:`trusty_tee` for more information. By default, the trusty world is disabled. Use this option to enable it. @@ -68,8 +67,8 @@ Here are descriptions for each of these ``acrn-dm`` command line parameters: ---- ``--intr_monitor `` - Enable interrupt storm monitor for User VM. Use this option to prevent an - interrupt storm from the User VM. + Enable an interrupt storm monitor for the User VM. Use this option to prevent + an interrupt storm from the User VM. usage: ``--intr_monitor threshold/s probe-period(s) delay_time(ms) delay_duration(ms)`` @@ -77,19 +76,19 @@ Here are descriptions for each of these ``acrn-dm`` command line parameters: --intr_monitor 10000,10,1,100 - - ``10000``: interrupt rate larger than 10000/s will be treated as - interrupt storm - - ``10``: use the last 10s of interrupt data to detect an interrupt storm - - ``1``: when interrupts are identified as a storm, the next interrupt - will be delayed 1ms before being injected to the guest - - ``100``: after 100ms, we will cancel the interrupt injection delay and + - ``10000``: Interrupt rate larger than 10000/s will be treated as an + interrupt storm. + - ``10``: Use the last 10s of interrupt data to detect an interrupt storm. + - ``1``: When interrupts are identified as a storm, the next interrupt + will be delayed 1ms before being injected to the guest. + - ``100``: After 100ms, cancel the interrupt injection delay and restore to normal. ---- ``-k``, ``--kernel `` Set the kernel (full path) for the User VM kernel. The maximum path length - is 1023 characters. The DM handles bzImage image format. + is 1023 characters. The DM supports bzImage image format. usage: ``-k /path/to/your/kernel_image`` @@ -100,25 +99,30 @@ Here are descriptions for each of these ``acrn-dm`` command line parameters: ---- ``-m``, ``--memsize `` - Setup total memory size for User VM. + Set the total memory size for the User VM. - memory_size format is: "{K/k, B/b, M/m, G/g}", and size is an + memory_size format is: ``{K/k, B/b, M/m, G/g}``, and size is an integer. - usage: ``-m 4g``: set User VM memory to 4 gigabytes. + Example:: + + -m 4g + + to set the User VM memory to 4 gigabytes. ---- ``-r``, ``--ramdisk `` - Set the ramdisk (full path) for the User VM. The maximum length is 1023. - The supported ramdisk format depends on your User VM kernel configuration. + Set the RAM disk (full path) for the User VM. The maximum path length is 1023 + characters. The supported RAM disk format depends on your User VM kernel + configuration. usage: ``-r /path/to/your/ramdisk_image`` ---- ``-s``, ``--pci_slot `` - Setup PCI device configuration. + Set the PCI device configuration. slot_config format is:: @@ -127,10 +131,10 @@ Here are descriptions for each of these ``acrn-dm`` command line parameters: Where: - - ``slot`` is 0..31 - - ``func`` is 0..7 - - ``emul`` is a string describing the type of PCI device, e.g. - virtio-net + - ``slot`` is 0..31. + - ``func`` is 0..7. + - ``emul`` is a string describing the type of PCI device, e.g., + virtio-net. - ``config`` is an optional device-dependent string, used for configuration. @@ -139,20 +143,20 @@ Here are descriptions for each of these ``acrn-dm`` command line parameters: -s 7,xhci,1-2,2-2 This configuration means the virtual xHCI will appear in PCI slot 7 - in User VM. Any physical USB device attached on 1-2 (bus 1, port 2) or - 2-2 (bus 2, port 2) will be detected by User VM and be used as expected. To - determine which bus and port a USB device is attached, you could run - ``lsusb -t`` in Service VM. + in the User VM. Any physical USB device attached on 1-2 (bus 1, port 2) or + 2-2 (bus 2, port 2) will be detected by the User VM and be used as expected. + To determine the bus and port of a USB device, run ``lsusb -t`` + in the Service VM. :: -s 9,virtio-blk,/root/test.img - This adds virtual block in PCI slot 9 and uses ``/root/test.img`` as the - disk image. + This example adds a virtual block in PCI slot 9 and uses ``/root/test.img`` + as the disk image. - For more information about emulated device types, see :ref:'emul_config'. + For more information about emulated device types, see :ref:`emul_config`. ---- @@ -173,10 +177,10 @@ Here are descriptions for each of these ``acrn-dm`` command line parameters: --ovmf /usr/share/acrn/bios/OVMF.fd - uses ``/usr/share/acrn/bios/OVMF.fd`` as the OVMF image + uses ``/usr/share/acrn/bios/OVMF.fd`` as the OVMF image. - ACRN also supports using OVMF split images; ``OVMF_CODE.fd`` that contains - the OVMF firmware executable and ``OVMF_VARS.fd`` that contains the NV + ACRN also supports using OVMF split images; ``OVMF_CODE.fd`` contains + the OVMF firmware executable and ``OVMF_VARS.fd`` contains the NV data store. usage:: @@ -186,8 +190,8 @@ Here are descriptions for each of these ``acrn-dm`` command line parameters: ACRN supports the option "w" for OVMF. To preserve all changes in OVMF's NV data store section, use this option to enable writeback mode. - Writeback mode is only enabled for the ``OVMF_VARS.fd`` file in case of - OVMF split images, the firmware executable (``OVMF_CODE.fd``) remains + For OVMF split images, writeback mode is only enabled for the + ``OVMF_VARS.fd`` file, and the firmware executable (``OVMF_CODE.fd``) remains read-only. usage:: @@ -198,11 +202,11 @@ Here are descriptions for each of these ``acrn-dm`` command line parameters: .. _cpu_affinity: -``--cpu_affinity `` - comma-separated list of vCPUs assigned to this VM. Each CPU has a Local Programmable - Interrupt Controller (LAPIC). The unique ID of the LAPIC (lapic_id) is used to identify vCPU. - The ``lapic_id`` for a vCPU can be found in the service VM file ``/proc/cpuinfo`` - identified as ``apicid``. +``--cpu_affinity `` + Comma-separated list of vCPUs assigned to this VM. Each CPU has a Local + Programmable Interrupt Controller (LAPIC). The unique ID of the LAPIC + (lapic_id) is used to identify the vCPU. The ``lapic_id`` for a vCPU can be + found in the Service VM file ``/proc/cpuinfo`` identified as ``apicid``. Example:: @@ -213,36 +217,36 @@ Here are descriptions for each of these ``acrn-dm`` command line parameters: ---- ``--virtio_poll `` - Enable virtio poll mode with poll interval xxx ns. + Enable virtio poll mode with poll interval in nanoseconds. Example:: --virtio_poll 1000000 - enable virtio poll mode with poll interval 1ms. + to enable virtio poll mode with poll interval of 1ms. ---- ``--acpidev_pt [,]`` - This option is to enable ACPI device passthrough support. The ``HID`` is a - mandatory parameter for this option which is the Hardware ID of the ACPI + Enable ACPI device passthrough support. The ``HID`` is a + mandatory parameter and is the Hardware ID of the ACPI device. - The ``UID`` is an option and used to specify a particular instance of the + The ``UID`` is an option and used to specify an instance of the HID device, the default is 00. Example:: --acpidev_pt MSFT0101,00 - To pass through a TPM (which HID is MSFT0101 and UID is 00) ACPI device to + to pass through a TPM (HID is MSFT0101 and UID is 00) ACPI device to a User VM. ---- ``--mmiodev_pt `` - This option is to enable MMIO device passthrough support. The - ``MMIO_Region`` is a mandatory parameter for this option which is the MMIO + Enable MMIO device passthrough support. The + ``MMIO_Region`` is a mandatory parameter and is the MMIO resource of the MMIO device. The ``MMIO_Region`` needs to be the base address followed by the length of the region, both separated by a comma. @@ -250,27 +254,27 @@ Here are descriptions for each of these ``acrn-dm`` command line parameters: --mmiodev_pt 0xFED40000,0x00005000 - To pass through a MMIO device to a User VM. The MMIO device has a MMIO + to pass through a MMIO device to a User VM. The MMIO device has a MMIO region. The base address of this region is 0xFED40000 and the size of the region is 0x00005000. ---- ``--vtpm2 `` - This option is to enable virtual TPM support. The sock_path is a mandatory - parameter for this option which is the path of swtpm socket fd. + Enable virtual TPM support. The ``sock_path`` is a mandatory + parameter and is the path of the swtpm socket fd. ---- ``--virtio_msi`` - This option forces virtio to use single-vector MSI. By default, any - virtio-based devices will use MSI-X as its interrupt method. If you want - to use single-vector MSI interrupt, you can do so using this option. + Force virtio to use single-vector MSI. By default, a + virtio-based device uses MSI-X as its interrupt method. If you want + to use single-vector MSI, you can do so using this option. ---- ``--lapic_pt`` - This option is to create a VM with the local APIC (LAPIC) passed-through. + Create a VM with the local APIC (LAPIC) passed-through. With this option, a VM is created with ``LAPIC_PASSTHROUGH`` and ``IO_COMPLETION_POLLING`` mode. This option is typically used for hard real-time scenarios. @@ -280,7 +284,7 @@ Here are descriptions for each of these ``acrn-dm`` command line parameters: ---- ``--rtvm`` - This option is used to create a VM with real-time attributes. With this + Create a VM with real-time attributes. With this option, a VM is created with ``GUEST_FLAG_RT`` and ``GUEST_FLAG_IO_COMPLETION_POLLING`` mode. This kind of VM is generally used for soft real-time scenarios (without ``--lapic_pt``) or hard @@ -293,10 +297,10 @@ Here are descriptions for each of these ``acrn-dm`` command line parameters: ---- ``--logger_setting `` - This option sets the level of logging that is used for each log channel. + Set the level of logging that is used for each log channel. The general format of this option is ``,level=``. Different log channels are separated by a semi-colon (``;``). The various - log channels available are: ``console``, ``disk`` and ``kmsg``. The log + log channels available are: ``console``, ``disk``, and ``kmsg``. The log level ranges from 1 (``error``) up to 5 (``debug``). By default, the log severity level is set to 4 (``info``). @@ -304,8 +308,8 @@ Here are descriptions for each of these ``acrn-dm`` command line parameters: ---- ``--windows`` - This option is used to run Windows User VMs. It supports Oracle - ``virtio-blk``, ``virtio-net`` and ``virtio-input`` devices for Windows + Run Windows User VMs. This option supports Oracle + ``virtio-blk``, ``virtio-net``, and ``virtio-input`` devices for Windows guests with secure boot. usage:: @@ -319,7 +323,7 @@ Here are descriptions for each of these ``acrn-dm`` command line parameters: ---- ``--ssram`` - This option enables Software SRAM passthrough to the VM. + Enable Software SRAM passthrough to the VM. usage:: @@ -328,50 +332,52 @@ Here are descriptions for each of these ``acrn-dm`` command line parameters: ---- ``--iasl `` - Specify the path to ``iasl`` compiler on the target machine. + Specify the path to the ``iasl`` compiler on the target machine. If ``--iasl `` is specified as the ``acrn-dm`` parameter, - acrn-dm uses as the path to the ``iasl`` compiler; + acrn-dm uses ```` as the path to the ``iasl`` compiler; otherwise, ``which iasl`` is used to detect where the ``iasl`` compiler is located. usage:: --iasl /usr/local/bin/iasl - uses ``/usr/local/bin/iasl`` as the path to the ``iasl`` compiler + uses ``/usr/local/bin/iasl`` as the path to the ``iasl`` compiler. .. _emul_config: Emulated PCI Device Types **************************** -In the acrn-dm ``-s`` or ``--pci_slot`` command line parameter, there is a ```` argument -that contains a string describing the type of emulated PCI device, along with optional device-dependent -arguments used for configuration. Here is a table describing these emulated device types and arguments: +In the acrn-dm ``-s`` or ``--pci_slot`` command-line parameter, there is a +```` argument that contains a string describing the type of +emulated PCI device, along with optional device-dependent arguments used for +configuration. Here is a table describing these emulated device types and +arguments: .. list-table:: Emulated PCI Device Types :header-rows: 1 :widths: 20 80 - * - PCI Device Type string + * - PCI Device Type String - Description * - ``xhci`` - - USB controller used to support USB 3.0 devices, (also supports USB 2.0 + - USB controller used to support USB 3.0 devices (also supports USB 2.0 and USB 1.0 devices). Parameter ``-`` should be added. The physical USB devices attached on the specified bus and port - will be detected by User VM and used as expected, e.g., ``xhci,1-2,2-2``. + will be detected by the User VM and used as expected, e.g., ``xhci,1-2,2-2``. * - ``lpc`` - Low Pin Count (LPC) bus is used to connect low speed devices to the CPU, - for example a serial port, keyboard, or mouse. + for example, a serial port, keyboard, or mouse. * - ``igd-lpc`` - - Windows graphic driver requires this virtualized LPC device to operate + - Windows graphics driver requires this virtualized LPC device to operate the display function. * - ``ivshmem`` - - Inter-VM shared memory (ivshmem) virtualized PCI device used specifically + - Inter-VM shared memory (IVSHMEM) virtualized PCI device used specifically for shared memory between VMs. Parameters should be added with the format ``ivshmem,,``. ```` specifies a shared memory name, and must be listed in ``hv.FEATURES.IVSHMEM.IVSHMEM_REGION`` @@ -382,7 +388,7 @@ arguments used for configuration. Here is a table describing these emulated dev - Advanced Host Controller Interface provides advanced features to access Serial ATA (SATA) storage devices, such as a hard disk. Parameter ``*`` should be added: ``type`` could be - ``hd`` (harddisk) or ``cd`` (CD-ROM). ```` is the path for the + ``hd`` (hard disk) or ``cd`` (CD-ROM). ```` is the path for the backend file and could be a partition name or a regular file, e.g., ``ahci,hd:/dev/sda``. @@ -390,52 +396,56 @@ arguments used for configuration. Here is a table describing these emulated dev - This is an alias for ``ahci``. * - ``ahci-cd`` - - Advanced Host Controller Interface used to connect with AT Attachment - Packet Interface device (for CD-ROM emulation). ``ahci-cd`` supports the same - parameters than ``ahci``. + - Advanced Host Controller Interface used to connect with an AT Attachment + Packet Interface device (for CD-ROM emulation). ``ahci-cd`` supports the + same parameters as ``ahci``. * - ``hostbridge`` - - Virtualized PCI hostbridge, a hardware bridge between the CPU's + - Virtualized PCI host bridge, a hardware bridge between the CPU's high-speed system local bus and the Peripheral Component Interconnect (PCI) bus. * - ``virtio-blk`` - - Virtio block type device, a string could be appended with the format - ``virtio-blk,[,options]`` + - Virtio block type device. A string could be appended with the format + ``virtio-blk,[,options]``: - * ```` specifies the path of a file or disk partition. - You can also could use ``nodisk`` to create a virtio-blk device with a dummy backend. - ``nodisk`` is used for hot-plugging a rootfs after the User VM has been launched. It is - achieved by triggering a rescan of the ``virtio-blk`` device by the User VM. The empty file - will be updated to valid file after rescan. + * ```` specifies the path of a file or disk partition. You can + also use ``nodisk`` to create a virtio-blk device with a dummy backend. + ``nodisk`` is used for hot-plugging a rootfs after the User VM has been + launched. It is achieved by triggering a rescan of the ``virtio-blk`` + device by the User VM. The empty file will be updated to a valid file + after rescan. * ``[,options]`` includes: * ``writethru``: write operation is reported completed only when the data has been written to physical storage. * ``writeback``: write operation is reported completed when data is placed in the page cache. Needs to be flushed to the physical storage. - * ``ro``: open file with readonly mode. - * ``sectorsize``: configured as either ``sectorsize=/`` - or ``sectorsize=``. The default values for sector size and physical sector size are 512. - * ``range``: configured as ``range=/`` meaning the virtio-blk will - only access part of the file, from the ```` to ```` + ````. + * ``ro``: open file with read-only mode. + * ``sectorsize``: configured as either ``sectorsize=/`` or ``sectorsize=``. The + default values for sector size and physical sector size are 512. + * ``range``: configured as ``range=/`` meaning the virtio-blk will only access part of the file, + from the ```` to ```` + ````. * - ``virtio-input`` - Virtio type device to emulate input device. ``evdev`` char device node should be appended, e.g., ``-s n,virtio-input,/dev/input/eventX[,serial]``. ``serial`` is an optional - string used as the unique identification code of guest virtio input device. + string used as the unique identification code of the guest virtio input device. * - ``virtio-console`` - Virtio console type device for data input and output. * - ``virtio-heci`` - - Virtio Host Embedded Controller Interface, parameters should be appended + - Virtio Host Embedded Controller Interface. Parameters should be appended with the format ``::,d<0~8>``. You can find the BDF information from the Service VM. * - ``virtio-i2c`` - - Virtio i2c type device,parameters with format: + - Virtio I2C type device. Parameters format is: ``[:[@]][,[:[@]]`` * ```` specifies the bus number for the native I2C adapter, e.g., @@ -448,13 +458,13 @@ arguments used for configuration. Here is a table describing these emulated dev ``hdac`` are supported for APL platform and are platform-specific. * - ``virtio-gpio`` - - Virtio GPIO type device, parameters format is: + - Virtio GPIO type device. Parameters format is: ``virtio-gpio,<@controller_name{offset|name[=mapping_name]:offset|name[=mapping_name]:...}@controller_name{...}...]>`` * ``controller_name``: use the command ``ls /sys/bus/gpio/devices`` to check the native GPIO controller information. Usually, the devices represent the ``controller_name`` that you can use. You can also use - the command ``cat /sys/bus/gpio/device/XXX/dev`` to get the device id + the command ``cat /sys/bus/gpio/device/XXX/dev`` to get the device ID that can be used to match ``/dev/XXX``, and then use ``XXX`` as the ``controller_name``. On Intel platforms, ``controller_name`` may be ``gpiochip0``, ``gpiochip1``, ``gpiochip2``, and ``gpiochip3``. @@ -464,24 +474,29 @@ arguments used for configuration. Here is a table describing these emulated dev a FE GPIO, you can set a new name here. * - ``virtio-rnd`` - - Virtio random generator type device, the VBSU virtio backend is used by default. + - Virtio random generator type device. The VBSU virtio backend is used by + default. * - ``virtio-rpmb`` - Virtio Replay Protected Memory Block (RPMB) type device, with - ``physical_rpmb`` to specify RPMB in physical mode, - otherwise RPMB is in simulated mode. + ``physical_rpmb`` to specify RPMB in physical mode; + otherwise, RPMB is in simulated mode. * - ``virtio-net`` - - Virtio network type device, parameter should be appended with the format: + - Virtio network type device. Parameters should be appended with the + format: ``virtio-net,=[,vhost][,mac= | mac_seed=]``. - The only supported ``device_type`` parameter is - ``tap``. The ``mac`` address is optional and ``name`` is the name of the TAP - (or MacVTap) device. ``vhost`` specifies vhost backend, otherwise the - VBSU backend is used. ``mac_seed=`` sets a platform-unique - string as a seed to generate the MAC address. Each VM should have a - different ``seed_string``. The ``seed_string`` can be - generated by the following method where ``$(vm_name)`` contains the name - of the VM you are going to launch. + + * ``device_type``: The only supported parameter is ``tap``. + * ``name``: Name of the TAP (or MacVTap) device. + * ``vhost``: Specifies the vhost backend; otherwise, the VBSU backend is + used. + * ``mac= | mac_seed=``: The MAC address + or seed is optional. ``mac_seed=`` sets a platform-unique + string as a seed to generate the MAC address. Each VM should have a + different ``seed_string``. The ``seed_string`` can be generated by the + following method where ``$(vm_name)`` contains the name of the VM you + are going to launch. .. code-block:: @@ -489,12 +504,12 @@ arguments used for configuration. Here is a table describing these emulated dev seed_string=${mac:9:8}-${vm_name} .. note:: - ``mac`` and ``mac_seed`` are mutually exclusive, when both are set the - latter is ignored and the MAC address is set to the ``mac`` value. + ``mac`` and ``mac_seed`` are mutually exclusive. When both are set, + the latter is ignored and the MAC address is set to the ``mac`` value. ``mac_seed`` will only be used when ``mac`` is not set. * - ``virtio-gpu`` - - Virtio GPU type device, parameters format is: + - Virtio GPU type device. Parameters format is: ``virtio-gpu[,geometry=x++ | fullscreen]`` * ``geometry`` specifies the mode of virtual display, windowed or fullscreen. @@ -512,7 +527,7 @@ arguments used for configuration. Here is a table describing these emulated dev * - ``passthru`` - Indicates a passthrough device. Use the parameter with the format - ``passthru,//,`` + ``passthru,//,``. Optional parameters include: * ``keep_gsi``: keep vGSI for MSI capable passthrough device. @@ -523,9 +538,9 @@ arguments used for configuration. Here is a table describing these emulated dev parameter should be appended to enable a Windows UEFI ACPI bug fix. * ``gpu``: create the dedicated ``igd-lpc`` on ``00:1f.0`` for IGD passthrough. - * ``vmsix_on_msi,``: enables vMSI-X emulation based on MSI + * ``vmsix_on_msi,``: enable vMSI-X emulation based on MSI capability. The specific virtual bar will be allocated. - * ``enable_ptm``: enable PCIE precise time measurement mechanism for the + * ``enable_ptm``: enable PCIe precise time measurement mechanism for the passthrough device. * - ``uart`` @@ -533,97 +548,100 @@ arguments used for configuration. Here is a table describing these emulated dev ``uart,vuart_idx:<0~9>`` to specify hypervisor-emulated PCI vUART index. * - ``wdt-i6300esb`` - - Emulated i6300ESB PCI Watch Dog Timer (WDT) Intel processors use to - monitor User VMs. + - Emulated i6300ESB PCI Watch Dog Timer (WDT), which Intel processors use + to monitor User VMs. Launch Script ************* -A launch script is used to start a User VM from the Service VM command line. It -is generated by the ACRN configurator according to several settings for a User -VM. Normally, you should not manually edit these generated launch scripts or -change ``acrn-dm`` command line parameters. If you do so, your changes could -be overwritten the next time you run the configurator. +A launch script is used to start a post-launched User VM from the Service VM +command line. The ACRN Configurator creates the launch script according to +several User VM settings. Normally, you should not manually edit these generated +launch scripts or change ``acrn-dm`` command-line parameters. If you do so, your +changes could be overwritten the next time you run the Configurator. -In this section we describe how setting in the scenario file, -created by the configurator, are transformed into the launch script. +In this section, we describe how settings in the scenario file, +created by the Configurator, are transformed into the launch script. This information would be useful to ACRN contributors or developers interested in knowing how the launch scripts are created. -Most configurator settings for User VMs are used at launch time. -When you exit the configurator, these settings are saved in the +Most Configurator settings for User VMs are used at launch time. +When you exit the Configurator, these settings are saved in the ``scenario.xml`` file and then processed by ``misc/config_tools/launch_config/launch_cfg_gen.py`` to add shell commands to create the launch script, according to the template ``misc/config_tools/launch_config/launch_script_template.sh``. -The template uses following helper functions to do system settings or to -generate an ``acrn-dm`` command line parameter. For details about all +The template uses the following helper functions to do system settings or to +generate an ``acrn-dm`` command-line parameter. For details about all ``acrn-dm`` parameters, refer to the previous section. ``probe_modules`` - Install necessary modules before launching a Post-launched VM. For - example, ``pci_stub`` is used to provide a stub pci driver that does - nothing on attached pci devices. Passthrough PCIe devices will be unbound + Install necessary modules before launching a post-launched VM. For + example, ``pci_stub`` is used to provide a stub PCI driver that does + nothing on attached PCI devices. Passthrough PCIe devices will be unbound from their original driver and bound to the stub, so that they can be safely controlled by the User VM. ``offline_cpus ...`` This is called if we are launching an RTVM or VM whose scheduler is - "SCHED_NOOP". In both situations, CPU sharing between multiple VMs is + ``SCHED_NOOP``. In both situations, CPU sharing between multiple VMs is prevented. This function will trigger taking a CPU offline (done by the Service VM - kernel), and then inform the hypervisor through Hypervisor Service Module - (HSM). The hypervisor will offline vCPU and freeze vCPU thread. + kernel), and then inform the hypervisor through the Hypervisor Service + Module (HSM). The hypervisor will offline the vCPU and freeze the vCPU + thread. ``unbind_device `` - Unbind a PCIe device with specified BDF (bus, device and function) number - from its original driver and re-bind it to the pci-stub driver. After that - the Service VM kernel will not operate on that device any more and it can - be passed through to User VM safely. + Unbind a PCIe device with specified BDF (bus, device, and function) number + from its original driver and re-bind it to the pci-stub driver. Then + the Service VM kernel will not operate on that device anymore and it can + be passed through to the User VM safely. ``create_tap `` - Create or reuse the tap interface that is attached to ``acrn-br0`` bridge. + Create or reuse the tap interface that is attached to the ``acrn-br0`` + bridge. ``acrn-br0`` is registered to ``systemd-networkd.service`` after installing the ACRN Debian package (``.deb``). You also need to enable and start the service to create the bridge from the Service VM using:: sudo systemctl enable --now systemd-networkd - The bridge is used to add ``virtio-net`` + The bridge is used to add a ``virtio-net`` interface to a User VM. ``virtio-net`` interfaces for all User VMs are virtually connected to a subnet behind the ACRN bridge. ``mount_partition `` - Mount specified partition to a temporary directory created by ``mktemp -d``, + Mount the specified partition to a temporary directory created by + ``mktemp -d``, and return the temporary directory for later unmount. - Typically this function is called to mount an image file in order to use - inner rootfs file as ``virtio-blk`` backend. For example, user could set - ":/boot/initrd.img*" in the ``virtio-blk`` input box in the ACRN + Typically this function is called to mount an image file in order to use an + inner rootfs file as a ``virtio-blk`` backend. For example, users could set + ``:/boot/initrd.img*`` in the ``virtio-blk`` input box in the ACRN Configurator. After the ``acrn-dm`` instance exits, ``unmount_partition`` will be called to unmount the image file. ``unmount_partition `` - Unmount partition from specified directory. + Unmount the partition from the specified directory. ``add_cpus ...`` - Return an ``acrn-dm`` command line parameter fragment to set + Return an ``acrn-dm`` command-line parameter fragment to set ``cpu_affinity``. Refer to `cpu_affinity`_ for details. ``offline_cpus`` is called if the User VM is an RTVM or its scheduler is ``SCHED_NOOP``. ``add_interrupt_storm_monitor `` This is added if PCIe devices, other than an integrated GPU, are passed through to - the User VM to monitor if interrupt storm occurred on those devices. - This function and parameters are not visible in the ACRN Configurator and - handled by config scripts. - It returns ``acrn-dm`` command line segment to set ``intr_monitor``. + the User VM to monitor if an interrupt storm occurred on those devices. + The function and parameters are not visible in the ACRN Configurator and + are handled by config scripts. The function returns ``acrn-dm`` + command-line segment to set ``intr_monitor``. ``add_logger_settings console= kmsg= disk=`` - set log level of each ``acrn-dm`` logging channel: console, kmsg, disk. - These settings are not exposed to user in the ACRN Configurator. + Set the log level of each ``acrn-dm`` logging channel: console, kmsg, disk. + These settings are not exposed to users in the ACRN Configurator. ``add_virtual_device `` - Add specified kind of virtual device to the specified PCIe device slot. + Add the specified kind of virtual device to the specified PCIe device slot. Some devices need options to configure further behaviors. ```` numbers for virtual devices and passthrough devices are automatically allocated by ``launch_cfg_gen.py``. @@ -634,24 +652,24 @@ generate an ``acrn-dm`` command line parameter. For details about all PCIe host bridge. ```` must be 0. - ``uart vuart_idx:`` - Add a PCIe vuart with specified index. + Add a PCIe vUART with specified index. - ``xhci -[:-]...`` - Config USB mediator. A list of USB ports each specified by + Configure a USB mediator. A list of USB ports each specified by ``-`` will be connected to the User VM. - ``virtio-net tap=[,vhost],mac_seed=`` The TAP should already be created by ``create_tap``. - ``virtio-blk [,writethru|writeback|ro]`` - Add a virtio block device to User VM. The backend is a raw image + Add a virtio block device to the User VM. The backend is a raw image file. Options can be specified to control access right. For all types of virtual devices and options, refer to :ref:`emul_config`. ``add_passthrough_device // `` - Passthrough PCIe device to User VM in specified ````. + Passthrough a PCIe device to the User VM in the specified ````. Some kinds of devices may need extra ```` to control internal behavior. Refer to the ``passthru`` section in :ref:`emul_config`.